From http://www.jwz.org/xscreensaver/xscreensaver-5.18.tar.gz
authorZygo Blaxell <zblaxell@faye.furryterror.org>
Wed, 4 Jul 2012 02:01:42 +0000 (22:01 -0400)
committerZygo Blaxell <zblaxell@faye.furryterror.org>
Fri, 8 Feb 2013 17:55:14 +0000 (12:55 -0500)
-rw-r--r-- 1 zblaxell zblaxell 7363800 Jul  3 17:45 xscreensaver-5.18.tar.gz
a9f66d3f5094d2c1ef46c1209730e7cb653f33a7  xscreensaver-5.18.tar.gz

197 files changed:
OSX/PrefsReader.m
OSX/SaverListController.m
OSX/SaverRunner.h
OSX/SaverRunner.m
OSX/SaverRunner.plist
OSX/XScreenSaver.plist
OSX/XScreenSaverConfigSheet.m
OSX/XScreenSaverGLView.m
OSX/XScreenSaverView.h
OSX/XScreenSaverView.m
OSX/bindist.rtf
OSX/iSaverRunner.plist
OSX/iSaverRunner1024.png [new file with mode: 0644]
OSX/iosgrabimage.m [new file with mode: 0644]
OSX/iostextclient.m
OSX/jwxyz-timers.m
OSX/jwxyz.h
OSX/jwxyz.m
OSX/osxgrabscreen.m
README
config.h.in
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/subprocs.c
driver/xscreensaver.c
driver/xscreensaver.h
hacks/Makefile.in
hacks/abstractile.c
hacks/anemone.c
hacks/apollonian.c
hacks/apple2-main.c
hacks/asm6502.c
hacks/asm6502.h
hacks/barcode.c
hacks/bouboule.c
hacks/braid.c
hacks/bsod.c
hacks/ccurve.c
hacks/check-configs.pl
hacks/compass.c
hacks/config/README
hacks/config/antspotlight.xml
hacks/config/boxfit.xml
hacks/config/bumps.xml
hacks/config/dnalogo.xml
hacks/config/flipscreen3d.xml
hacks/config/gleidescope.xml
hacks/config/jigsaw.xml
hacks/config/pedal.xml
hacks/config/pipes.xml
hacks/config/ripples.xml
hacks/config/rotzoomer.xml
hacks/config/sonar.xml
hacks/config/spotlight.xml
hacks/coral.c
hacks/crystal.c
hacks/decayscreen.c
hacks/demon.c
hacks/discrete.c
hacks/distort.c
hacks/drift.c
hacks/eruption.c
hacks/euler2d.c
hacks/fadeplot.c
hacks/flag.c
hacks/flame.c
hacks/flow.c
hacks/galaxy.c
hacks/glx/Makefile.in
hacks/glx/antmaze.c
hacks/glx/atunnel.c
hacks/glx/boing.c
hacks/glx/bouncingcow.c
hacks/glx/carousel.c
hacks/glx/chessgames.h
hacks/glx/chessmodels.c
hacks/glx/chessmodels.h
hacks/glx/companion.c
hacks/glx/crackberg.c
hacks/glx/cube21.c
hacks/glx/cubenetic.c
hacks/glx/cubicgrid.c
hacks/glx/dangerball.c
hacks/glx/dnalogo.c
hacks/glx/dnapizza.h [new file with mode: 0644]
hacks/glx/endgame.c
hacks/glx/engine.c
hacks/glx/flipflop.c
hacks/glx/flyingtoasters.c
hacks/glx/gears.c
hacks/glx/gflux.c
hacks/glx/glcells.c
hacks/glx/glknots.c
hacks/glx/glplanet.c
hacks/glx/glschool.c
hacks/glx/glschool_alg.c
hacks/glx/glschool_alg.h
hacks/glx/glschool_gl.c
hacks/glx/glschool_gl.h
hacks/glx/gltext.c
hacks/glx/gltrackball.c
hacks/glx/glxfonts.c
hacks/glx/hilbert.c
hacks/glx/jigglypuff.c
hacks/glx/jigsaw.c
hacks/glx/juggler3d.c
hacks/glx/jwzgles.c
hacks/glx/jwzglesI.h
hacks/glx/lament.c
hacks/glx/menger.c
hacks/glx/mirrorblob.c
hacks/glx/moebius.c
hacks/glx/moebiusgears.c
hacks/glx/molecule.c
hacks/glx/pinion.c
hacks/glx/pipes.c
hacks/glx/polyhedra-gl.c
hacks/glx/providence.c
hacks/glx/queens.c
hacks/glx/rubik.c
hacks/glx/rubikblocks.c
hacks/glx/sballs.c
hacks/glx/sierpinski3d.c
hacks/glx/skytentacles.c
hacks/glx/sonar-icmp.c
hacks/glx/sonar-sim.c
hacks/glx/sonar.c
hacks/glx/sonar.h
hacks/glx/sonar.man
hacks/glx/spheremonics.c
hacks/glx/stairs.c
hacks/glx/stonerview-move.c
hacks/glx/stonerview-move.h
hacks/glx/stonerview-view.c
hacks/glx/stonerview.c
hacks/glx/stonerview.h
hacks/glx/surfaces.c
hacks/glx/tangram.c
hacks/glx/tangram_shapes.c
hacks/glx/tangram_shapes.h
hacks/glx/teapot.c
hacks/glx/teapot2.h [new file with mode: 0644]
hacks/glx/topblock.c
hacks/glx/trackball.c
hacks/glx/trackball.h
hacks/glx/tronbit.c
hacks/glx/tunnel_draw.c
hacks/glx/tunnel_draw.h
hacks/goop.c
hacks/grav.c
hacks/interference.c
hacks/julia.c
hacks/julia.man
hacks/loop.c
hacks/m6502.c
hacks/memscroller.c
hacks/moire2.c
hacks/mountain.c
hacks/munge-ad.pl
hacks/noseguy.c
hacks/pacman.c
hacks/pacman.h
hacks/pacman_ai.c
hacks/pacman_ai.h
hacks/pacman_level.c
hacks/pacman_level.h
hacks/penetrate.c
hacks/penrose.c
hacks/piecewise.c
hacks/polyominoes.c
hacks/popsquares.c
hacks/sierpinski.c
hacks/slidescreen.c
hacks/speedmine.c
hacks/squiral.c
hacks/starfish.c
hacks/strange.c
hacks/swirl.c
hacks/thornbird.c
hacks/triangle.c
hacks/truchet.c
hacks/vermiculate.c
hacks/wander.c
hacks/whirlwindwarp.c
hacks/xlyap.c
hacks/xrayswarm.c
po/Makefile.in.in
po/POTFILES.in
utils/Makefile.in
utils/grabclient.c
utils/grabscreen.h
utils/version.h
xscreensaver.spec
xscreensaver.xcodeproj/project.pbxproj

index dd9170fe9fa938ac4c0421b812d0659fcefa4081..95dc8ebe66dd35affbcbdc894babdaf105cf1164 100644 (file)
   NSRange r = [name rangeOfString:@"." options:NSBackwardsSearch];
   if (r.length)
     name = [name substringFromIndex:r.location+1];
   NSRange r = [name rangeOfString:@"." options:NSBackwardsSearch];
   if (r.length)
     name = [name substringFromIndex:r.location+1];
+  name = [name stringByReplacingOccurrencesOfString:@" " withString:@""];
   saver_name = [name retain];
 
   [self registerXrmKeys:opts defaults:defs];
   saver_name = [name retain];
 
   [self registerXrmKeys:opts defaults:defs];
index 75e8751ba2b59a0f7529e0e5c873ea0b01c37c37..484cb1685449bdb50a625d1a7ccfe445c23e27eb 100644 (file)
@@ -16,6 +16,7 @@
 
 #import "SaverListController.h"
 #import "SaverRunner.h"
 
 #import "SaverListController.h"
 #import "SaverRunner.h"
+#import "yarandom.h"
 #import "version.h"
 
 #undef countof
 #import "version.h"
 
 #undef countof
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
-  if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
   [s loadSaver: cell.textLabel.text];
 }
 
   [s loadSaver: cell.textLabel.text];
 }
 
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s) return;
-  if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
   [s openPreferences: cell.textLabel.text];
 }
 
   [s openPreferences: cell.textLabel.text];
 }
 
 }
 
 
 }
 
 
+/* We need this to respond to "shake" gestures
+ */
+- (BOOL)canBecomeFirstResponder
+{
+  return YES;
+}
+
+- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+
+/* Shake means load a random screen saver.
+ */
+- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+  NSMutableArray *a = [NSMutableArray arrayWithCapacity: 200];
+  for (NSArray *sec in letter_sections)
+    for (NSString *s in sec)
+      [a addObject: s];
+  int n = [a count];
+  if (! n) return;
+  NSString *which = [a objectAtIndex: (random() % n)];
+
+  SaverRunner *s = 
+    (SaverRunner *) [[UIApplication sharedApplication] delegate];
+  if (! s) return;
+  NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner");
+  [self scrollTo: which];
+  [s loadSaver: which];
+}
+
+
 - (void)dealloc
 {
   for (int i = 0; i < countof(list_by_letter); i++)
 - (void)dealloc
 {
   for (int i = 0; i < countof(list_by_letter); i++)
index 2c5d0461f92afb0064a8699df5573ed6678878ee..0a35ca195fe6a9a6a2f344e3039fda247451405a 100644 (file)
 # endif // USE_IPHONE
 }
 
 # endif // USE_IPHONE
 }
 
-- (void) aboutPanel: (id)sender;
-- (void)loadSaver:(NSString *)name launch:(BOOL)launch;
+- (void) loadSaver: (NSString *)name launch:(BOOL)launch;
 - (void) loadSaver: (NSString *)name;
 - (void) loadSaver: (NSString *)name;
-- (void)selectedSaverDidChange:(NSDictionary *)change;
+- (void) selectedSaverDidChange:(NSDictionary *)change;
 
 #ifndef USE_IPHONE
 
 #ifndef USE_IPHONE
+- (void) aboutPanel: (id)sender;
 - (void) openPreferences: (id)sender;
 #else  // USE_IPHONE
 - (void) openPreferences: (NSString *)which;
 - (void) openPreferences: (id)sender;
 #else  // USE_IPHONE
 - (void) openPreferences: (NSString *)which;
index 60233a087b6b7c5028b54357b2d99b7ad76d4e7b..3fd451d9ae2b23cb7680e6d34cb3f3b93bc06e5c 100644 (file)
    of bundles that have executable code in them.  Bleh.
  */
 
    of bundles that have executable code in them.  Bleh.
  */
 
+#import <TargetConditionals.h>
 #import "SaverRunner.h"
 #import "SaverListController.h"
 #import "XScreenSaverGLView.h"
 #import "SaverRunner.h"
 #import "SaverListController.h"
 #import "XScreenSaverGLView.h"
-#import <TargetConditionals.h>
+#import "yarandom.h"
 
 #ifdef USE_IPHONE
 
 
 #ifdef USE_IPHONE
 
@@ -417,11 +418,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
   [prefs synchronize];
 
   if (saverName && [saverName isEqualToString: name]) {
   [prefs synchronize];
 
   if (saverName && [saverName isEqualToString: name]) {
-    if (launch && ![saverView isAnimating]) {
-      [window addSubview: saverView];
-      [saverView startAnimation];
-    }
-    return;
+    if ([saverView isAnimating])
+      return;
+    else
+      goto LAUNCH;
   }
 
   saverName = name;
   }
 
   saverName = name;
@@ -452,8 +452,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
     selector:@selector(didRotate:)
     name:UIDeviceOrientationDidChangeNotification object:nil];
 
     selector:@selector(didRotate:)
     name:UIDeviceOrientationDidChangeNotification object:nil];
 
+ LAUNCH:
   if (launch) {
   if (launch) {
+    [self saveScreenshot];
     [window addSubview: saverView];
     [window addSubview: saverView];
+    [saverView becomeFirstResponder];
     [saverView startAnimation];
   }
 # endif // USE_IPHONE
     [saverView startAnimation];
   }
 # endif // USE_IPHONE
@@ -466,9 +469,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
 }
 
 
 }
 
 
+# ifndef USE_IPHONE
+
 - (void)aboutPanel:(id)sender
 {
 - (void)aboutPanel:(id)sender
 {
-# ifndef USE_IPHONE
   NSDictionary *bd = [saverBundle infoDictionary];
   NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20];
 
   NSDictionary *bd = [saverBundle infoDictionary];
   NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20];
 
@@ -484,28 +488,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
 
   [[NSApplication sharedApplication]
     orderFrontStandardAboutPanelWithOptions:d];
 
   [[NSApplication sharedApplication]
     orderFrontStandardAboutPanelWithOptions:d];
-
-# else  // USE_IPHONE
-
-  NSDictionary *bd = [[NSBundle mainBundle] infoDictionary];
-  NSString *body = [bd objectForKey:@"CFBundleGetInfoString"];
-
-  body = [body stringByReplacingOccurrencesOfString:@", " withString:@",\n"];
-  body = [body stringByAppendingString:
-               @"\n\n"
-               "Double-tap to run.\n\n"
-               "Double-tap again to\n"
-               "return to this list."];
-
-  [[[UIAlertView alloc] initWithTitle: @""
-                        message: body
-                        delegate: nil
-                        cancelButtonTitle: @"OK"
-                        otherButtonTitles: nil]
-    show];
+}
 
 # endif // USE_IPHONE
 
 # endif // USE_IPHONE
-}
 
 
 
 
 
 
@@ -916,6 +901,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
                                 initWithNames:saverNames
                                 descriptions:[self makeDescTable]];
   [rootViewController pushViewController:menu animated:YES];
                                 initWithNames:saverNames
                                 descriptions:[self makeDescTable]];
   [rootViewController pushViewController:menu animated:YES];
+  [menu becomeFirstResponder];
 
   [window makeKeyAndVisible];
   [window setAutoresizesSubviews:YES];
 
   [window makeKeyAndVisible];
   [window setAutoresizesSubviews:YES];
@@ -923,8 +909,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
             (UIViewAutoresizingFlexibleWidth | 
              UIViewAutoresizingFlexibleHeight)];
 
             (UIViewAutoresizingFlexibleWidth | 
              UIViewAutoresizingFlexibleHeight)];
 
-  // Has to be after the list window is up, or we get black.
-  [self saveScreenshot];
+  application.applicationSupportsShakeToEdit = YES;
 
 # endif // USE_IPHONE
 
 
 # endif // USE_IPHONE
 
index 5ac695ff2fcb21a79bf1b101b2e69e1f65590995..b116fb8f49f7eaf2925c2ce73247d5798f43d647 100644 (file)
@@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSHumanReadableCopyright</key>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSHumanReadableCopyright</key>
index 6beac27735c36046eeec93dd064f246c495779e8..fa9f4870d0d0cf533a2b82ee2cb06bd0e47ec496 100644 (file)
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
        <key>LSMinimumSystemVersion</key>
        <string>10.4</string>
        <key>NSMainNibFile</key>
index e179dd0b0f8b4160ba63397e0c1faa5c6f39dbaf..1df862b2a33fb182ce63af45501f0774aa48d1db 100644 (file)
@@ -48,6 +48,7 @@
 #endif // USE_IPHONE
 
 #undef LABEL_ABOVE_SLIDER
 #endif // USE_IPHONE
 
 #undef LABEL_ABOVE_SLIDER
+#define USE_HTML_LABELS
 
 
 #pragma mark XML Parser
 
 
 #pragma mark XML Parser
@@ -191,6 +192,222 @@ typedef enum { SimpleXMLCommentKind,
 # endif // !USE_PICKER_VIEW
 
 
 # endif // !USE_PICKER_VIEW
 
 
+# pragma mark Implementing labels with clickable links
+
+#if defined(USE_IPHONE) && defined(USE_HTML_LABELS)
+
+@interface HTMLLabel : UIView <UIWebViewDelegate>
+{
+  NSString *html;
+  UIFont *font;
+  UIWebView *webView;
+}
+
+@property(nonatomic, retain) NSString *html;
+@property(nonatomic, retain) UIWebView *webView;
+
+- (id) initWithHTML:(NSString *)h font:(UIFont *)f;
+- (id) initWithText:(NSString *)t font:(UIFont *)f;
+- (void) setHTML:(NSString *)h;
+- (void) setText:(NSString *)t;
+- (void) sizeToFit;
+
+@end
+
+@implementation HTMLLabel
+
+@synthesize html;
+@synthesize webView;
+
+- (id) initWithHTML:(NSString *)h font:(UIFont *)f
+{
+  self = [super init];
+  if (! self) return 0;
+  font = [f retain];
+  webView = [[UIWebView alloc] init];
+  webView.delegate = self;
+  webView.dataDetectorTypes = UIDataDetectorTypeNone;
+  self.   autoresizingMask = (UIViewAutoresizingFlexibleWidth |
+                              UIViewAutoresizingFlexibleHeight);
+  webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
+                              UIViewAutoresizingFlexibleHeight);
+  [self addSubview: webView];
+  [self setHTML: h];
+  return self;
+}
+
+- (id) initWithText:(NSString *)t font:(UIFont *)f
+{
+  self = [self initWithHTML:@"" font:f];
+  if (! self) return 0;
+  [self setText: t];
+  return self;
+}
+
+
+- (void) setHTML: (NSString *)h
+{
+  if (! h) return;
+  [h retain];
+  if (html) [html release];
+  html = h;
+  NSString *h2 =
+    [NSString stringWithFormat:
+                @"<!DOCTYPE HTML PUBLIC "
+                   "\"-//W3C//DTD HTML 4.01 Transitional//EN\""
+                   " \"http://www.w3.org/TR/html4/loose.dtd\">"
+                 "<HTML>"
+                  "<HEAD>"
+//                   "<META NAME=\"viewport\" CONTENT=\""
+//                      "width=device-width"
+//                      "initial-scale=1.0;"
+//                      "maximum-scale=1.0;\">"
+                   "<STYLE>"
+                    "<!--\n"
+                      "body {"
+                      " margin: 0; padding: 0; border: 0;"
+                      " font-family: \"%@\";"
+                      " font-size: %.4fpx;"    // Must be "px", not "pt"!
+                      " line-height: %.4fpx;"   // And no spaces before it.
+                      "}"
+                    "\n//-->\n"
+                   "</STYLE>"
+                  "</HEAD>"
+                  "<BODY>"
+                   "%@"
+                  "</BODY>"
+                 "</HTML>",
+              [font fontName],
+              [font pointSize],
+              [font lineHeight],
+              h];
+  [webView loadHTMLString:h2 baseURL:[NSURL URLWithString:@""]];
+}
+
+
+static char *anchorize (const char *url);
+
+- (void) setText: (NSString *)t
+{
+  t = [t stringByReplacingOccurrencesOfString:@"&" withString:@"&amp;"];
+  t = [t stringByReplacingOccurrencesOfString:@"<" withString:@"&lt;"];
+  t = [t stringByReplacingOccurrencesOfString:@">" withString:@"&gt;"];
+  t = [t stringByReplacingOccurrencesOfString:@"\n\n" withString:@" <P> "];
+  t = [t stringByReplacingOccurrencesOfString:@"<P>  "
+         withString:@"<P> &nbsp; &nbsp; &nbsp; &nbsp; "];
+  t = [t stringByReplacingOccurrencesOfString:@"\n "
+         withString:@"<BR> &nbsp; &nbsp; &nbsp; &nbsp; "];
+
+  NSString *h = @"";
+  for (NSString *s in
+         [t componentsSeparatedByCharactersInSet:
+              [NSCharacterSet whitespaceAndNewlineCharacterSet]]) {
+    if ([s hasPrefix:@"http://"] ||
+        [s hasPrefix:@"https://"]) {
+      char *anchor = anchorize ([s cStringUsingEncoding:NSUTF8StringEncoding]);
+      NSString *a2 = [NSString stringWithCString: anchor
+                               encoding: NSUTF8StringEncoding];
+      s = [NSString stringWithFormat: @"<A HREF=\"%@\">%@</A><BR>", s, a2];
+      free (anchor);
+    }
+    h = [NSString stringWithFormat: @"%@ %@", h, s];
+  }
+  [self setHTML: h];
+}
+
+
+-(BOOL) webView:(UIWebView *)wv
+        shouldStartLoadWithRequest:(NSURLRequest *)req
+        navigationType:(UIWebViewNavigationType)type
+{
+  // Force clicked links to open in Safari, not in this window.
+  if (type == UIWebViewNavigationTypeLinkClicked) {
+    [[UIApplication sharedApplication] openURL:[req URL]];
+    return NO;
+  }
+  return YES;
+}
+
+
+- (void) setFrame: (CGRect)r
+{
+  [super setFrame: r];
+  r.origin.x = 0;
+  r.origin.y = 0;
+  [webView setFrame: r];
+  [self setHTML: html];
+  [webView reload];
+}
+
+
+- (NSString *) stripTags:(NSString *)str
+{
+  NSString *result = @"";
+
+  str = [str stringByReplacingOccurrencesOfString:@"<P>"
+             withString:@"<BR><BR>"
+             options:NSCaseInsensitiveSearch
+             range:NSMakeRange(0, [str length])];
+  str = [str stringByReplacingOccurrencesOfString:@"<BR>"
+             withString:@"\n"
+             options:NSCaseInsensitiveSearch
+             range:NSMakeRange(0, [str length])];
+
+  for (NSString *s in [str componentsSeparatedByString: @"<"]) {
+    NSRange r = [s rangeOfString:@">"];
+    if (r.length > 0)
+      s = [s substringFromIndex: r.location + r.length];
+    result = [result stringByAppendingString: s];
+  }
+  return result;
+}
+
+
+- (void) sizeToFit
+{
+  CGRect r = [self frame];
+
+  /* It would be sensible to just ask the UIWebView how tall the page is,
+     instead of hoping that NSString and UIWebView measure fonts and do
+     wrapping in exactly the same way, but I can't make that work.
+     Maybe because it loads async?
+   */
+# if 0
+  r.size.height = [[webView
+                     stringByEvaluatingJavaScriptFromString:
+                       @"document.body.offsetHeight"]
+                    doubleValue];
+# else
+  NSString *text = [self stripTags: html];
+  CGSize s = r.size;
+  s.height = 999999;
+  s = [text sizeWithFont: font
+            constrainedToSize: s
+            lineBreakMode: UILineBreakModeWordWrap];
+
+  // GAAAH. Add one more line, or the UIWebView is still scrollable!
+  // The text is sized right, but it lets you scroll it up anyway.
+  s.height += [font pointSize];
+
+  r.size.height = s.height;
+# endif
+
+  [self setFrame: r];
+}
+
+
+- (void) dealloc
+{
+  [html release];
+  [font release];
+  [webView release];
+  [super dealloc];
+}
+
+@end
+
+#endif // USE_IPHONE && USE_HTML_LABELS
+
 
 @interface XScreenSaverConfigSheet (Private)
 
 
 @interface XScreenSaverConfigSheet (Private)
 
@@ -682,6 +899,8 @@ anchorize (const char *url)
 }
 
 
 }
 
 
+#if !defined(USE_IPHONE) || !defined(USE_HTML_LABELS)
+
 /* Converts any http: URLs in the given text field to clickable links.
  */
 static void
 /* Converts any http: URLs in the given text field to clickable links.
  */
 static void
@@ -766,6 +985,9 @@ hreffify (NSText *nstext)
 # endif
 }
 
 # endif
 }
 
+#endif /* !USE_IPHONE || !USE_HTML_LABELS */
+
+
 
 #pragma mark Creating controls from XML
 
 
 #pragma mark Creating controls from XML
 
@@ -813,6 +1035,26 @@ hreffify (NSText *nstext)
     if ([val length] == 0)
       [dict removeObjectForKey:key];
   }
     if ([val length] == 0)
       [dict removeObjectForKey:key];
   }
+
+# ifdef USE_IPHONE
+  // Kludge for starwars.xml:
+  // If there is a "_low-label" and no "_label", but "_low-label" contains
+  // spaces, divide them.
+  NSString *lab = [dict objectForKey:@"_label"];
+  NSString *low = [dict objectForKey:@"_low-label"];
+  if (low && !lab) {
+    NSArray *split =
+      [[[low stringByTrimmingCharactersInSet:
+               [NSCharacterSet whitespaceAndNewlineCharacterSet]]
+         componentsSeparatedByString: @"  "]
+        filteredArrayUsingPredicate:
+          [NSPredicate predicateWithFormat:@"length > 0"]];
+    if (split && [split count] == 2) {
+      [dict setValue:[split objectAtIndex:0] forKey:@"_label"];
+      [dict setValue:[split objectAtIndex:1] forKey:@"_low-label"];
+    }
+  }
+# endif // USE_IPHONE
 }
 
 
 }
 
 
@@ -1479,25 +1721,25 @@ set_menu_item_object (NSMenuItem *item, NSObject *obj)
   hreffify (lab);
   boldify (lab);
   [lab sizeToFit];
   hreffify (lab);
   boldify (lab);
   [lab sizeToFit];
-# else  // USE_IPHONE
 
 
-  /* There's no way to put rich text or links inside a UILabel.
-
-     I guess Apple expects us to use a UIWebView for this -- but there's
-     no way to measure how tall the HTML-rendered text is (the answer is
-     not: "document.height" via JavaScript) so we can't put the
-     properly-sized cell in the table.
-
-     This is some serious bullshit.
+# else  // USE_IPHONE
 
 
-     Another option would be to subclass UILabel and replace its drawRect
-     with new code that uses CTLineDraw.  But that's a huge hassle.
-   */
+#  ifndef USE_HTML_LABELS
 
   UILabel *lab = [self makeLabel:text];
   [lab setFont:[NSFont systemFontOfSize: [NSFont systemFontSize]]];
   hreffify (lab);
 
   UILabel *lab = [self makeLabel:text];
   [lab setFont:[NSFont systemFontOfSize: [NSFont systemFontSize]]];
   hreffify (lab);
+
+#  else  // USE_HTML_LABELS
+  HTMLLabel *lab = [[HTMLLabel alloc] 
+                     initWithText:text
+                     font:[NSFont systemFontOfSize: [NSFont systemFontSize]]];
+  [lab setFrame:rect];
+  [lab sizeToFit];
+#  endif // USE_HTML_LABELS
+
   [self placeSeparator];
   [self placeSeparator];
+
 # endif // USE_IPHONE
 
   [self placeChild:lab on:parent];
 # endif // USE_IPHONE
 
   [self placeChild:lab on:parent];
@@ -2024,7 +2266,6 @@ find_text_field_of_button (NSButton *button)
 
 - (void) makeImageLoaderControlBox:(NSXMLNode *)node on:(NSView *)parent
 {
 
 - (void) makeImageLoaderControlBox:(NSXMLNode *)node on:(NSView *)parent
 {
-# ifndef USE_IPHONE
   /*
     [x]  Grab desktop images
     [ ]  Choose random image:
   /*
     [x]  Grab desktop images
     [ ]  Choose random image:
@@ -2039,11 +2280,19 @@ find_text_field_of_button (NSButton *button)
 
   NSXMLElement *node2;
 
 
   NSXMLElement *node2;
 
+# ifndef USE_IPHONE
+#  define SCREENS "Grab desktop images"
+#  define PHOTOS  "Choose random images"
+# else
+#  define SCREENS "Grab screenshots"
+#  define PHOTOS  "Use photo library"
+# endif
+
   node2 = [[NSXMLElement alloc] initWithName:@"boolean"];
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"grabDesktopImages",   @"id",
   node2 = [[NSXMLElement alloc] initWithName:@"boolean"];
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"grabDesktopImages",   @"id",
-                        @"Grab desktop images", @"_label",
+                        @ SCREENS,              @"_label",
                         @"-no-grab-desktop",    @"arg-unset",
                         nil]];
   [self makeCheckbox:node2 on:parent];
                         @"-no-grab-desktop",    @"arg-unset",
                         nil]];
   [self makeCheckbox:node2 on:parent];
@@ -2052,7 +2301,7 @@ find_text_field_of_button (NSButton *button)
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"chooseRandomImages",    @"id",
   [node2 setAttributesAsDictionary:
           [NSDictionary dictionaryWithObjectsAndKeys:
                         @"chooseRandomImages",    @"id",
-                        @"Choose random images",  @"_label",
+                        @ PHOTOS,                 @"_label",
                         @"-choose-random-images", @"arg-set",
                         nil]];
   [self makeCheckbox:node2 on:parent];
                         @"-choose-random-images", @"arg-set",
                         nil]];
   [self makeCheckbox:node2 on:parent];
@@ -2067,6 +2316,10 @@ find_text_field_of_button (NSButton *button)
   [self makeFileSelector:node2 on:parent
         dirsOnly:YES withLabel:YES editable:YES];
 
   [self makeFileSelector:node2 on:parent
         dirsOnly:YES withLabel:YES editable:YES];
 
+# undef SCREENS
+# undef PHOTOS
+
+# ifndef USE_IPHONE
   // Add a second, explanatory label below the file/URL selector.
 
   LABEL *lab2 = 0;
   // Add a second, explanatory label below the file/URL selector.
 
   LABEL *lab2 = 0;
@@ -2079,7 +2332,7 @@ find_text_field_of_button (NSButton *button)
   r2.origin.y += 14;
   [lab2 setFrameOrigin:r2.origin];
   [lab2 release];
   r2.origin.y += 14;
   [lab2 setFrameOrigin:r2.origin];
   [lab2 release];
-# endif // !USE_IPHONE
+# endif // USE_IPHONE
 }
 
 
 }
 
 
@@ -2612,6 +2865,8 @@ wrap_with_buttons (NSWindow *window, NSView *panel)
   }
 
   saver_name = [self parseXScreenSaverTag: node];
   }
 
   saver_name = [self parseXScreenSaverTag: node];
+  saver_name = [saver_name stringByReplacingOccurrencesOfString:@" "
+                           withString:@""];
   [saver_name retain];
   
 # ifndef USE_IPHONE
   [saver_name retain];
   
 # ifndef USE_IPHONE
@@ -2831,7 +3086,20 @@ wrap_with_buttons (NSWindow *window, NSView *panel)
     [t sizeToFit];
     r = t.frame;
     h = r.size.height + LINE_SPACING * 3;
     [t sizeToFit];
     r = t.frame;
     h = r.size.height + LINE_SPACING * 3;
+# ifdef USE_HTML_LABELS
+
+  } else if ([ctl isKindOfClass:[HTMLLabel class]]) {
+    
+    HTMLLabel *t = (HTMLLabel *) ctl;
+    CGRect r = t.frame;
+    r.size.width = [tv frame].size.width;
+    r.size.width -= LEFT_MARGIN * 2;
+    [t setFrame:r];
+    [t sizeToFit];
+    r = t.frame;
+    h = r.size.height + LINE_SPACING * 3;
 
 
+# endif // USE_HTML_LABELS
   } else {
     CGFloat h2 = [ctl frame].size.height;
     h2 += LINE_SPACING * 2;
   } else {
     CGFloat h2 = [ctl frame].size.height;
     h2 += LINE_SPACING * 2;
index da155211a3c058f32d5f7a5424179cf519be41c8..58144ee1c342b1645749d37571d6770c4cd46233 100644 (file)
@@ -47,6 +47,8 @@ extern void check_gl_error (const char *type);
 # ifndef USE_IPHONE
   [NSOpenGLContext clearCurrentContext];
 # endif // !USE_IPHONE
 # ifndef USE_IPHONE
   [NSOpenGLContext clearCurrentContext];
 # endif // !USE_IPHONE
+
+  clear_gl_error();    // This hack is defunct, don't let this linger.
 }
 
 
 }
 
 
@@ -240,14 +242,19 @@ extern void check_gl_error (const char *type);
  */
 
 
  */
 
 
-// redefine these now since they don't work when not inside an ObjC method.
+// redefine NSAssert, etc. here since they don't work when not inside
+// an ObjC method.
 
 #undef NSAssert
 #undef NSAssert1
 #undef NSAssert2
 
 #undef NSAssert
 #undef NSAssert1
 #undef NSAssert2
-#define NSAssert(CC,S)      do { if (!(CC)) { NSLog(S);    abort();}} while(0)
-#define NSAssert1(CC,S,A)   do { if (!(CC)) { NSLog(S,A);  abort();}} while(0)
-#define NSAssert2(CC,S,A,B) do { if (!(CC)) { NSLog(S,A,B);abort();}} while(0)
+#define NSASS(S) \
+  jwxyz_abort ("%s", [(S) cStringUsingEncoding:NSUTF8StringEncoding])
+#define NSAssert(CC,S)      do { if (!(CC)) { NSASS((S)); }} while(0)
+#define NSAssert1(CC,S,A)   do { if (!(CC)) { \
+  NSASS(([NSString stringWithFormat: S, A])); }} while(0)
+#define NSAssert2(CC,S,A,B) do { if (!(CC)) { \
+  NSASS(([NSString stringWithFormat: S, A, B])); }} while(0)
 
 
 /* Called by OpenGL savers using the XLockmore API.
 
 
 /* Called by OpenGL savers using the XLockmore API.
index eb241b39863c61214df6002cf40889ac3d7a87eb..7365b9d82080e0566111c4ccdfb95f502215aaf8 100644 (file)
@@ -53,6 +53,9 @@
 
 
 @interface XScreenSaverView : ScreenSaverView
 
 
 @interface XScreenSaverView : ScreenSaverView
+# ifdef USE_IPHONE
+                             <UIAlertViewDelegate>
+# endif
 {
   struct xscreensaver_function_table *xsft;
   PrefsReader *prefsReader;
 {
   struct xscreensaver_function_table *xsft;
   PrefsReader *prefsReader;
@@ -70,7 +73,8 @@
 
 # ifdef USE_IPHONE
   UIDeviceOrientation orientation, new_orientation;
 
 # ifdef USE_IPHONE
   UIDeviceOrientation orientation, new_orientation;
-  NSTimer *orientation_Timer;
+  double tap_time;
+  CGPoint tap_point;
   BOOL screenLocked;
 
   GLfloat rotation_ratio;      // ratio thru rotation anim, or -1
   BOOL screenLocked;
 
   GLfloat rotation_ratio;      // ratio thru rotation anim, or -1
index 55c5516b99c9a36d1ca72f2565beb94e2c20d8b5..438c05f9c712922a7c8ef8087477df1c508088c1 100644 (file)
@@ -91,6 +91,11 @@ int mono_p = 0;
 
 
 
 
 
 
+@interface XScreenSaverView (Private)
+- (void) stopAndClose;
+- (void) stopAndClose:(Bool)relaunch;
+@end
+
 @implementation XScreenSaverView
 
 // Given a lower-cased saver name, returns the function table for it.
 @implementation XScreenSaverView
 
 // Given a lower-cased saver name, returns the function table for it.
@@ -113,7 +118,9 @@ int mono_p = 0;
   if (! name)
     name = [[path lastPathComponent] stringByDeletingPathExtension];
 
   if (! name)
     name = [[path lastPathComponent] stringByDeletingPathExtension];
 
-  NSString *table_name = [[name lowercaseString]
+  NSString *table_name = [[[name lowercaseString]
+                            stringByReplacingOccurrencesOfString:@" "
+                            withString:@""]
                            stringByAppendingString:
                              @"_xscreensaver_function_table"];
   void *addr = CFBundleGetDataPointerForName (cfb, (CFStringRef) table_name);
                            stringByAppendingString:
                              @"_xscreensaver_function_table"];
   void *addr = CFBundleGetDataPointerForName (cfb, (CFStringRef) table_name);
@@ -146,7 +153,7 @@ int mono_p = 0;
   strcat (npath, opath);
   if (putenv (npath)) {
     perror ("putenv");
   strcat (npath, opath);
   if (putenv (npath)) {
     perror ("putenv");
-    abort();
+    NSAssert1 (0, @"putenv \"%s\" failed", npath);
   }
 
   /* Don't free (npath) -- MacOS's putenv() does not copy it. */
   }
 
   /* Don't free (npath) -- MacOS's putenv() does not copy it. */
@@ -167,7 +174,7 @@ int mono_p = 0;
   strcat (env, s);
   if (putenv (env)) {
     perror ("putenv");
   strcat (env, s);
   if (putenv (env)) {
     perror ("putenv");
-    abort();
+    NSAssert1 (0, @"putenv \"%s\" failed", env);
   }
   /* Don't free (env) -- MacOS's putenv() does not copy it. */
 }
   }
   /* Don't free (env) -- MacOS's putenv() does not copy it. */
 }
@@ -213,7 +220,11 @@ add_default_options (const XrmOptionDescRec *opts,
     ".textURL:            http://twitter.com/statuses/public_timeline.atom",
  // ".textProgram:        ",
     ".grabDesktopImages:  yes",
     ".textURL:            http://twitter.com/statuses/public_timeline.atom",
  // ".textProgram:        ",
     ".grabDesktopImages:  yes",
+# ifndef USE_IPHONE
     ".chooseRandomImages: no",
     ".chooseRandomImages: no",
+# else
+    ".chooseRandomImages: yes",
+# endif
     ".imageDirectory:     ~/Pictures",
     ".relaunchDelay:      2",
     0
     ".imageDirectory:     ~/Pictures",
     ".relaunchDelay:      2",
     0
@@ -325,7 +336,7 @@ double_time (void)
      "org.jwz.xscreensaver.<SAVERNAME>.<NUMBERS>.plist"
    */
   NSString *name = [NSString stringWithCString:xsft->progclass
      "org.jwz.xscreensaver.<SAVERNAME>.<NUMBERS>.plist"
    */
   NSString *name = [NSString stringWithCString:xsft->progclass
-                                      encoding:NSUTF8StringEncoding];
+                             encoding:NSISOLatin1StringEncoding];
   name = [@"org.jwz.xscreensaver." stringByAppendingString:name];
   [self setResourcesEnv:name];
 
   name = [@"org.jwz.xscreensaver." stringByAppendingString:name];
   [self setResourcesEnv:name];
 
@@ -375,7 +386,6 @@ double_time (void)
 
   // xsft
   // fpst
 
   // xsft
   // fpst
-  // orientation_timer
 
   [super dealloc];
 }
 
   [super dealloc];
 }
@@ -611,12 +621,41 @@ double current_device_rotation (void)
     [self setFrame:[self frame]];
 }
 
     [self setFrame:[self frame]];
 }
 
+
+- (void)alertView:(UIAlertView *)av clickedButtonAtIndex:(NSInteger)i
+{
+  if (i == 0) exit (-1);       // Cancel
+  [self stopAndClose];         // Keep going
+}
+
+- (void) handleException: (NSException *)e
+{
+  NSLog (@"Caught exception: %@", e);
+  [[[UIAlertView alloc] initWithTitle:
+                          [NSString stringWithFormat: @"%s crashed!",
+                                    xsft->progclass]
+                        message:
+                          [NSString stringWithFormat:
+                                      @"The error message was:"
+                                    "\n\n%@\n\n"
+                                    "If it keeps crashing, try "
+                                    "resetting its options.",
+                                    e]
+                        delegate: self
+                        cancelButtonTitle: @"Exit"
+                        otherButtonTitles: @"Keep going", nil]
+    show];
+  [self stopAnimation];
+}
+
 #endif // USE_IPHONE
 
 
 - (void) render_x11
 {
 # ifdef USE_IPHONE
 #endif // USE_IPHONE
 
 
 - (void) render_x11
 {
 # ifdef USE_IPHONE
+  @try {
+
   if (orientation == UIDeviceOrientationUnknown)
     [self didRotate:nil];
   [self hackRotation];
   if (orientation == UIDeviceOrientationUnknown)
     [self didRotate:nil];
   [self hackRotation];
@@ -760,7 +799,6 @@ double current_device_rotation (void)
     resized_p = NO;
   }
 
     resized_p = NO;
   }
 
-
   // Run any XtAppAddInput callbacks now.
   // (Note that XtAppAddTimeOut callbacks have already been run by
   // the Cocoa event loop.)
   // Run any XtAppAddInput callbacks now.
   // (Note that XtAppAddTimeOut callbacks have already been run by
   // the Cocoa event loop.)
@@ -817,6 +855,13 @@ double current_device_rotation (void)
     }
   }
 # endif // DO_GC_HACKERY
     }
   }
 # endif // DO_GC_HACKERY
+
+# ifdef USE_IPHONE
+  }
+  @catch (NSException *e) {
+    [self handleException: e];
+  }
+# endif // USE_IPHONE
 }
 
 
 }
 
 
@@ -969,7 +1014,7 @@ double current_device_rotation (void)
 {
   NSBundle *bundle = [NSBundle bundleForClass:[self class]];
   NSString *file = [NSString stringWithCString:xsft->progclass
 {
   NSBundle *bundle = [NSBundle bundleForClass:[self class]];
   NSString *file = [NSString stringWithCString:xsft->progclass
-                                      encoding:NSUTF8StringEncoding];
+                                      encoding:NSISOLatin1StringEncoding];
   file = [file lowercaseString];
   NSString *path = [bundle pathForResource:file ofType:@"xml"];
   if (!path) {
   file = [file lowercaseString];
   NSString *path = [bundle pathForResource:file ofType:@"xml"];
   if (!path) {
@@ -1116,7 +1161,8 @@ double current_device_rotation (void)
         break;
       }
     default:
         break;
       }
     default:
-      abort();
+      NSAssert (0, @"unknown X11 event type: %d", type);
+      break;
   }
 
   [self lockFocus];
   }
 
   [self lockFocus];
@@ -1196,6 +1242,47 @@ double current_device_rotation (void)
 #else  // USE_IPHONE
 
 
 #else  // USE_IPHONE
 
 
+- (void) stopAndClose
+{
+  if ([self isAnimating])
+    [self stopAnimation];
+
+  /* Need to make the SaverListController be the firstResponder again
+     so that it can continue to receive its own shake events.  I
+     suppose that this abstraction-breakage means that I'm adding
+     XScreenSaverView to the UINavigationController wrong...
+   */
+  UIViewController *v = [[self window] rootViewController];
+  if ([v isKindOfClass: [UINavigationController class]]) {
+    UINavigationController *n = (UINavigationController *) v;
+    [[n topViewController] becomeFirstResponder];
+  }
+
+  // [self removeFromSuperview];
+  [UIView animateWithDuration: 0.5
+          animations:^{ self.alpha = 0.0; }
+          completion:^(BOOL finished) {
+            [self removeFromSuperview];
+             self.alpha = 1.0;
+          }];
+}
+
+
+- (void) stopAndClose:(Bool)relaunch_p
+{
+  [self stopAndClose];
+
+  if (relaunch_p) {   // Fake a shake on the SaverListController.
+    UIViewController *v = [[self window] rootViewController];
+    if ([v isKindOfClass: [UINavigationController class]]) {
+      UINavigationController *n = (UINavigationController *) v;
+      [[n topViewController] motionEnded: UIEventSubtypeMotionShake
+                               withEvent: nil];
+    }
+  }
+}
+
+
 /* Called after the device's orientation has changed.
 
    Note: we could include a subclass of UIViewController which
 /* Called after the device's orientation has changed.
 
    Note: we could include a subclass of UIViewController which
@@ -1311,7 +1398,11 @@ double current_device_rotation (void)
 }
 
 
 }
 
 
-/* In the simulator, multi-touch sequences look like this:
+/* I believe we can't use UIGestureRecognizer for tracking touches
+   because UIPanGestureRecognizer doesn't give us enough detail in its
+   callbacks.
+
+   In the simulator, multi-touch sequences look like this:
 
      touchesBegan [touchA, touchB]
      touchesEnd [touchA, touchB]
 
      touchesBegan [touchA, touchB]
      touchesEnd [touchA, touchB]
@@ -1345,8 +1436,29 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 }
 
 
 }
 
 
+#if 0  // AudioToolbox/AudioToolbox.h
+- (void) beep
+{
+  // There's no way to play a standard system alert sound!
+  // We'd have to include our own WAV for that.  Eh, fuck it.
+  AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
+# if TARGET_IPHONE_SIMULATOR
+  NSLog(@"BEEP");  // The sim doesn't vibrate.
+# endif
+}
+#endif
+
+
+/* We distinguish between taps and drags.
+   - Drags (down, motion, up) are sent to the saver to handle.
+   - Single-taps exit the saver.
+   This means a saver cannot respond to a single-tap.  Only a few try to.
+ */
+
 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
+  tap_time = 0;
+
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
@@ -1363,8 +1475,16 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       xe.xbutton.y      = s * p.y;
       rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
       xe.xbutton.y      = s * p.y;
       rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle);
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
+
+      // Ignore return code: don't care whether the hack handled it.
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
+
+      // Remember when/where this was, to determine tap versus drag or hold.
+      tap_time = double_time();
+      tap_point = p;
+
       i++;
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
     }
   }
 }
@@ -1372,18 +1492,6 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 
 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
 
 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
-
-  // Double-tap means "exit" and return to selection menu.
-  //
-  for (UITouch *touch in touches) {
-    if ([touch tapCount] >= 2) {
-      if ([self isAnimating])
-        [self stopAnimation];
-      [self removeFromSuperview];
-      return;
-    }
-  }
-
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
   if (xsft->event_cb && xwindow) {
     double s = self.contentScaleFactor;
     XEvent xe;
@@ -1393,6 +1501,18 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
       CGPoint p = [touch locationInView:self];
     int h = s * [self frame].size.height;
     for (UITouch *touch in touches) {
       CGPoint p = [touch locationInView:self];
+
+      // If the ButtonRelease came less than half a second after ButtonPress,
+      // and didn't move far, then this was a tap, not a drag or a hold.
+      // Interpret it as "exit".
+      //
+      double dist = sqrt (((p.x - tap_point.x) * (p.x - tap_point.x)) +
+                          ((p.y - tap_point.y) * (p.y - tap_point.y)));
+      if (tap_time + 0.5 >= double_time() && dist < 20) {
+        [self stopAndClose];
+        return;
+      }
+
       xe.xany.type      = ButtonRelease;
       xe.xbutton.button = i + 1;
       xe.xbutton.x      = s * p.x;
       xe.xany.type      = ButtonRelease;
       xe.xbutton.button = i + 1;
       xe.xbutton.x      = s * p.x;
@@ -1401,6 +1521,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
       jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
     }
   }
 }
@@ -1424,6 +1545,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
       jwxyz_mouse_moved (xdpy, xwindow, xe.xmotion.x, xe.xmotion.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
       jwxyz_mouse_moved (xdpy, xwindow, xe.xmotion.x, xe.xmotion.y);
       xsft->event_cb (xdpy, xwindow, xdata, &xe);
       i++;
+      break;  // No pinches: only look at the first touch.
     }
   }
 }
     }
   }
 }
@@ -1431,10 +1553,27 @@ rotate_mouse (int *x, int *y, int w, int h, int rot)
 
 /* We need this to respond to "shake" gestures
  */
 
 /* We need this to respond to "shake" gestures
  */
-- (BOOL)canBecomeFirstResponder {
+- (BOOL)canBecomeFirstResponder
+{
   return YES;
 }
 
   return YES;
 }
 
+- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+
+- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+}
+
+/* Shake means exit and launch a new saver.
+ */
+- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
+{
+  [self stopAndClose:YES];
+}
+
 
 - (void)setScreenLocked:(BOOL)locked
 {
 
 - (void)setScreenLocked:(BOOL)locked
 {
@@ -1462,7 +1601,7 @@ static PrefsReader *
 get_prefsReader (Display *dpy)
 {
   XScreenSaverView *view = jwxyz_window_view (XRootWindow (dpy, 0));
 get_prefsReader (Display *dpy)
 {
   XScreenSaverView *view = jwxyz_window_view (XRootWindow (dpy, 0));
-  if (!view) abort();
+  if (!view) return 0;
   return [view prefsReader];
 }
 
   return [view prefsReader];
 }
 
index 1afbd8ea7379333c107a6873492d3f2f87ad8606..c1677625e143482102dad9c0b6d0d679199d6874 100644 (file)
@@ -16,8 +16,8 @@ XScreenSaver\
 by Jamie Zawinski\
 and many others\
 \
 by Jamie Zawinski\
 and many others\
 \
-version 5.17\
-22-Jun-2012\
+version 5.18\
+03-Jul-2012\
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}
 \
 \
 {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}
 \
index 89e572fa9dabbb968d9eb2c962bfce43f77fb064..a296b33b1d5eeec819e376e8d66f32172c3b5324 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
        <key>CFBundleDevelopmentRegion</key>
        <string>English</string>
        <key>CFBundleVersion</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>CFBundlePackageType</key>
@@ -19,7 +19,7 @@
        <key>UIStatusBarHidden</key>
        <true/>
        <key>CFBundleShortVersionString</key>
        <key>UIStatusBarHidden</key>
        <true/>
        <key>CFBundleShortVersionString</key>
-       <string>5.17</string>
+       <string>5.18</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>UIRequiredDeviceCapabilities</key>
diff --git a/OSX/iSaverRunner1024.png b/OSX/iSaverRunner1024.png
new file mode 100644 (file)
index 0000000..a548d1c
Binary files /dev/null and b/OSX/iSaverRunner1024.png differ
diff --git a/OSX/iosgrabimage.m b/OSX/iosgrabimage.m
new file mode 100644 (file)
index 0000000..faf2348
--- /dev/null
@@ -0,0 +1,125 @@
+/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski <jwz@jwz.org>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation.  No representations are made about the suitability of this
+ * software for any purpose.  It is provided "as is" without express or 
+ * implied warranty.
+ */
+
+/* This iOS code to choose and return a random image from the user's
+ * photo gallery.
+ *
+ * Much of the following written by:
+ *
+ *  Created by David Oster on 6/23/12.
+ *  Copyright (c) 2012 Google. All rights reserved.
+ *  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.
+ */
+
+#ifdef USE_IPHONE  // whole file
+
+#import <AssetsLibrary/AssetsLibrary.h>
+#import "grabscreen.h"
+#import "yarandom.h"
+
+/* ALAssetsLibrary is an async API, so we need to fire it off and then
+   call a callback when it's done.  Fortunately, this fits the same
+   interaction model already used in xscreensaver by load_image_async(),
+   so it works out nicely.
+ */
+
+typedef struct {
+  void (*callback) (void *uiimage, const char *fn, void *closure);
+  void *closure;
+
+  ALAssetsLibrary *library;
+  NSMutableArray *assets;
+
+} ios_loader_data;
+
+
+static void
+ios_random_image_done (ios_loader_data *d, BOOL ok)
+{
+  UIImage *img = 0;
+  const char *fn = 0;
+  int n = ok ? [d->assets count] : 0;
+  if (n > 0) {
+    ALAsset *asset = [d->assets objectAtIndex: random() % n];
+    ALAssetRepresentation *rep = [asset defaultRepresentation];
+
+    // "fullScreenImage" returns a smaller image than "fullResolutionImage",
+    // but this function still takes a significant fraction of a second,
+    // causing a visible glitch in e.g. "glslideshow".
+    CGImageRef cgi = [rep fullScreenImage];
+    if (cgi) {
+      UIImageOrientation orient = (UIImageOrientation) 
+        [[asset valueForProperty:ALAssetPropertyOrientation] intValue];
+      img = [UIImage imageWithCGImage: cgi
+                     scale: 1
+                     orientation: orient];
+      if (img)
+        fn = [[rep filename] cStringUsingEncoding:NSISOLatin1StringEncoding];
+    }
+  }
+
+  [d->assets release];
+  [d->library release];
+
+  d->callback (img, fn, d->closure);
+  free (d);
+}
+
+
+void
+ios_load_random_image (void (*callback) (void *uiimage, const char *fn,
+                                         void *closure),
+                       void *closure)
+{
+  ios_loader_data *d = (ios_loader_data *) calloc (1, sizeof(*d));
+  d->callback = callback;
+  d->closure = closure;
+
+  d->library = [[[ALAssetsLibrary alloc] init] retain];
+  d->assets = [[NSMutableArray array] retain];
+
+  // The closures passed in here are called later, after we have returned.
+  //
+  [d->library enumerateGroupsWithTypes: ALAssetsGroupAll
+              usingBlock: ^(ALAssetsGroup *group, BOOL *stop) {
+    NSString *name = [group valueForProperty:ALAssetsGroupPropertyName];
+    if ([name length]) {
+      [group enumerateAssetsUsingBlock: ^(ALAsset *asset, NSUInteger index,
+                                          BOOL *stop) {
+        if ([[asset valueForProperty: ALAssetPropertyType]
+              isEqual: ALAssetTypePhoto]) {
+          [d->assets addObject:asset];
+        }
+      }];
+    }
+
+    if (! group) {   // done
+      ios_random_image_done (d, YES);
+    }
+  } failureBlock:^(NSError *error) {
+    // E.g., ALAssetsLibraryErrorDomain: "The user has denied the
+    // application access to their media."
+    NSLog(@"reading Photo Library: %@", error);
+    ios_random_image_done (d, NO);
+  }];
+}
+
+#endif  // USE_IPHONE - whole file
index 646436c323fcbcb1bb026353b0225e0ca4558291..09c6298561b41493cb9faf8f7b5503f80c16510f 100644 (file)
@@ -38,15 +38,6 @@ struct text_data {
 };
 
 
 };
 
 
-void
-textclient_reshape (text_data *d,
-                    int pix_w, int pix_h,
-                    int char_w, int char_h)
-{
-  d->columns = char_w;
-}
-
-
 text_data *
 textclient_open (Display *dpy)
 {
 text_data *
 textclient_open (Display *dpy)
 {
@@ -405,6 +396,7 @@ wrap_text (char *body, int columns)
 {
   int col = 0, last_col = 0;
   char *last_space = 0;
 {
   int col = 0, last_col = 0;
   char *last_space = 0;
+  if (! body) return;
   for (char *p = body; *p; p++) {
     if (*p == '\r' || *p == '\n' || *p == ' ' || *p == '\t') {
       if (col > columns && last_space) {
   for (char *p = body; *p; p++) {
     if (*p == '\r' || *p == '\n' || *p == ' ' || *p == '\t') {
       if (col > columns && last_space) {
@@ -425,6 +417,23 @@ wrap_text (char *body, int columns)
 }
 
 
 }
 
 
+static void
+rewrap_text (char *body, int columns)
+{
+  if (! body) return;
+  for (char *p = body; *p; p++) {
+    if (*p == '\n') {
+      if (p[1] == '\n')
+        p++;
+      else
+        *p = ' ';
+    }
+  }
+  wrap_text (body, columns);
+}
+
+
+
 static void
 strip_backslashes (char *s)
 {
 static void
 strip_backslashes (char *s)
 {
@@ -553,4 +562,14 @@ textclient_putc (text_data *d, XKeyEvent *k)
   return False;
 }
 
   return False;
 }
 
+
+void
+textclient_reshape (text_data *d,
+                    int pix_w, int pix_h,
+                    int char_w, int char_h)
+{
+  d->columns = char_w;
+  rewrap_text (d->buf, d->columns);
+}
+
 #endif /* USE_IPHONE -- whole file */
 #endif /* USE_IPHONE -- whole file */
index 6e478f61725b1104be9f66f54bf7761e8d3f0b8f..be31b2dcf57c41eccef1ffd0a37095c7f6bf6f4d 100644 (file)
 # define LOGI(str,arg1,arg2,arg3)
 #endif
 
 # define LOGI(str,arg1,arg2,arg3)
 #endif
 
+#define ASSERT_RET(C,S) do {                    \
+    if (!(C)) {                                 \
+      jwxyz_abort ("jwxyz-timers: %s",(S));     \
+      return;                                   \
+ }} while(0)
+
 
 XtAppContext
 XtDisplayToApplicationContext (Display *dpy)
 
 XtAppContext
 XtDisplayToApplicationContext (Display *dpy)
@@ -96,7 +102,7 @@ jwxyz_timer_release (const void *arg)
   struct jwxyz_XtIntervalId *data = (struct jwxyz_XtIntervalId *) arg;
   data->refcount--;
   LOGT(@"timer  0x%08X: release %d", (unsigned int) data, data->refcount);
   struct jwxyz_XtIntervalId *data = (struct jwxyz_XtIntervalId *) arg;
   data->refcount--;
   LOGT(@"timer  0x%08X: release %d", (unsigned int) data, data->refcount);
-  if (data->refcount < 0) abort();
+  ASSERT_RET (data->refcount >= 0, "double free");
   if (data->refcount == 0) free (data);
 }
 
   if (data->refcount == 0) free (data);
 }
 
@@ -117,7 +123,7 @@ jwxyz_source_release (const void *arg)
   data->refcount--;
   LOGI(@"source 0x%08X %2d: release %d", (unsigned int) data, data->fd,
        data->refcount);
   data->refcount--;
   LOGI(@"source 0x%08X %2d: release %d", (unsigned int) data, data->fd,
        data->refcount);
-  if (data->refcount < 0) abort();
+  ASSERT_RET (data->refcount >= 0, "double free");
   if (data->refcount == 0) {
 # ifdef USE_COCOA_SOURCES
     if (data->socket)
   if (data->refcount == 0) {
 # ifdef USE_COCOA_SOURCES
     if (data->socket)
@@ -165,8 +171,8 @@ jwxyz_source_cb (CFSocketRef s, CFSocketCallBackType type,
 {
   struct jwxyz_XtInputId *data = (struct jwxyz_XtInputId *) info;
 
 {
   struct jwxyz_XtInputId *data = (struct jwxyz_XtInputId *) info;
 
-  if (type != kCFSocketReadCallBack) abort();
-  if (call_data != 0) abort();  // not used for kCFSocketRead
+  ASSERT_RET (type == kCFSocketReadCallBack, "unnknown type");
+  ASSERT_RET (!call_data, "no call data");  // not used for kCFSocketRead
 
   // We are sometimes called when there is not, in fact, data available!
   // So don't call data->cb if we're being fed a pack of lies.
 
   // We are sometimes called when there is not, in fact, data available!
   // So don't call data->cb if we're being fed a pack of lies.
@@ -218,9 +224,8 @@ void
 XtRemoveTimeOut (XtIntervalId id)
 {
   LOGT(@"timer  0x%08X: remove", (unsigned int) id, 0);
 XtRemoveTimeOut (XtIntervalId id)
 {
   LOGT(@"timer  0x%08X: remove", (unsigned int) id, 0);
-  if (id->refcount <= 0) abort();
-  if (!id->cftimer) abort();
-
+  ASSERT_RET (id->refcount > 0, "already freed");
+  ASSERT_RET (id->cftimer, "timers corrupted");
   CFRunLoopRemoveTimer (CFRunLoopGetCurrent(), id->cftimer,
                         kCFRunLoopCommonModes);
   CFRunLoopTimerInvalidate (id->cftimer);
   CFRunLoopRemoveTimer (CFRunLoopGetCurrent(), id->cftimer,
                         kCFRunLoopCommonModes);
   CFRunLoopTimerInvalidate (id->cftimer);
@@ -253,8 +258,8 @@ static void
 jwxyz_source_select (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
 jwxyz_source_select (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
-  if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort();
-  if (td->ids[id->fd]) abort();
+  ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range");
+  ASSERT_RET (td->ids[id->fd] == 0, "sources corrupted");
   td->ids[id->fd] = id;
   td->count++;
 }
   td->ids[id->fd] = id;
   td->count++;
 }
@@ -263,9 +268,9 @@ static void
 jwxyz_source_deselect (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
 jwxyz_source_deselect (XtInputId id)
 {
   jwxyz_sources_data *td = display_sources_data (app_to_display (id->app));
-  if (td->count <= 0) abort();
-  if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort();
-  if (td->ids[id->fd] != id) abort();
+  ASSERT_RET (td->count > 0, "sources corrupted");
+  ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range");
+  ASSERT_RET (td->ids[id->fd] == id, "sources corrupted");
   td->ids[id->fd] = 0;
   td->count--;
 }
   td->ids[id->fd] = 0;
   td->count--;
 }
@@ -288,14 +293,14 @@ jwxyz_sources_run (jwxyz_sources_data *td)
     }
   }
 
     }
   }
 
-  if (!max) abort();
+  ASSERT_RET (max > 0, "no fds");
 
   if (0 < select (max+1, &fds, NULL, NULL, &tv)) {
     for (i = 0; i < FD_SETSIZE; i++) {
       if (FD_ISSET (i, &fds)) {
         XtInputId id = td->ids[i];
 
   if (0 < select (max+1, &fds, NULL, NULL, &tv)) {
     for (i = 0; i < FD_SETSIZE; i++) {
       if (FD_ISSET (i, &fds)) {
         XtInputId id = td->ids[i];
-        if (!id || !id->cb) abort();
-        if (id->fd != i) abort();
+        ASSERT_RET (id && id->cb, "sources corrupted");
+        ASSERT_RET (id->fd == i, "sources corrupted");
         id->cb (id->closure, &id->fd, &id);
       }
     }
         id->cb (id->closure, &id->fd, &id);
       }
     }
@@ -353,10 +358,10 @@ void
 XtRemoveInput (XtInputId id)
 {
   LOGI(@"source 0x%08X %2d: remove", (unsigned int) id, id->fd, 0);
 XtRemoveInput (XtInputId id)
 {
   LOGI(@"source 0x%08X %2d: remove", (unsigned int) id, id->fd, 0);
-  if (id->refcount <= 0) abort();
+  ASSERT_RET (id->refcount > 0, "sources corrupted");
 # ifdef USE_COCOA_SOURCES
 # ifdef USE_COCOA_SOURCES
-  if (! id->cfsource) abort();
-  if (! id->socket) abort();
+  ASSERT_RET (id->cfsource, "sources corrupted");
+  ASSERT_RET (id->socket, "sources corrupted");
 
   CFRunLoopRemoveSource (CFRunLoopGetCurrent(), id->cfsource,
                          kCFRunLoopCommonModes);
 
   CFRunLoopRemoveSource (CFRunLoopGetCurrent(), id->cfsource,
                          kCFRunLoopCommonModes);
@@ -375,7 +380,7 @@ void
 jwxyz_XtRemoveInput_all (Display *dpy)
 {
 # ifdef USE_COCOA_SOURCES
 jwxyz_XtRemoveInput_all (Display *dpy)
 {
 # ifdef USE_COCOA_SOURCES
-  abort();
+  ASSERT_RET (0, "unimplemented");
 # else  /* !USE_COCOA_SOURCES */
 
   jwxyz_sources_data *td = display_sources_data (dpy);
 # else  /* !USE_COCOA_SOURCES */
 
   jwxyz_sources_data *td = display_sources_data (dpy);
index 58d17fe497f3b5035d084c07c41380bd60d49c46..c8607e7d64372bd95d664b3ebc49b731582a1b90 100644 (file)
@@ -19,6 +19,9 @@
 #ifndef __JWXYZ_H__
 #define __JWXYZ_H__
 
 #ifndef __JWXYZ_H__
 #define __JWXYZ_H__
 
+extern void jwxyz_abort(const char *fmt, ...) __dead2;
+#define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
+
 typedef int Bool;
 typedef int Status;
 typedef void * XPointer;
 typedef int Bool;
 typedef int Status;
 typedef void * XPointer;
@@ -449,6 +452,7 @@ extern int visual_class (Screen *, Visual *);
 // also declared in utils/grabclient.h
 extern Bool use_subwindow_mode_p (Screen *, Window);
 
 // also declared in utils/grabclient.h
 extern Bool use_subwindow_mode_p (Screen *, Window);
 
+
 struct jwxyz_Visual {
   VisualID visualid;   /* visual id of this visual */
   int class;           /* class of screen (monochrome, etc.) */
 struct jwxyz_Visual {
   VisualID visualid;   /* visual id of this visual */
   int class;           /* class of screen (monochrome, etc.) */
index 7643c4400003513f5a7508fa54c0e727ce3b5089..b7e99525b6be63c925dd25c8cd03cf3f11e1dd0d 100644 (file)
@@ -23,6 +23,7 @@
 # import <UIKit/UIKit.h>
 # import <UIKit/UIScreen.h>
 # import <QuartzCore/QuartzCore.h>
 # import <UIKit/UIKit.h>
 # import <UIKit/UIScreen.h>
 # import <QuartzCore/QuartzCore.h>
+# import <CoreText/CTFont.h>
 # define NSView  UIView
 # define NSRect  CGRect
 # define NSPoint CGPoint
 # define NSView  UIView
 # define NSRect  CGRect
 # define NSPoint CGPoint
 
 #import "jwxyz.h"
 #import "jwxyz-timers.h"
 
 #import "jwxyz.h"
 #import "jwxyz-timers.h"
+#import "yarandom.h"
 
 #undef  Assert
 
 #undef  Assert
-#define Assert(C,S) do { \
-  if (!(C)) { \
-    NSLog(@"%s",S); \
-    abort(); \
-  }} while(0)
+#define Assert(C,S) do { if (!(C)) jwxyz_abort ("%s",(S)); } while(0)
 
 # undef MAX
 # undef MIN
 
 # undef MAX
 # undef MIN
@@ -111,12 +109,38 @@ struct jwxyz_Font {
 };
 
 
 };
 
 
+/* Instead of calling abort(), throw a real exception, so that
+   XScreenSaverView can catch it and display a dialog.
+ */
+void
+jwxyz_abort (const char *fmt, ...)
+{
+  char s[10240];
+  if (!fmt || !*fmt)
+    strcpy (s, "abort");
+  else
+    {
+      va_list args;
+      va_start (args, fmt);
+      vsprintf (s, fmt, args);
+      va_end (args);
+    }
+  [[NSException exceptionWithName: NSInternalInconsistencyException
+                reason: [NSString stringWithCString: s
+                                  encoding:NSUTF8StringEncoding]
+                userInfo: nil]
+    raise];
+  abort();  // not reached
+}
+
+
 Display *
 jwxyz_make_display (void *nsview_arg, void *cgc_arg)
 {
   CGContextRef cgc = (CGContextRef) cgc_arg;
   NSView *view = (NSView *) nsview_arg;
 Display *
 jwxyz_make_display (void *nsview_arg, void *cgc_arg)
 {
   CGContextRef cgc = (CGContextRef) cgc_arg;
   NSView *view = (NSView *) nsview_arg;
-  if (!view) abort();
+  Assert (view, "no view");
+  if (!view) return 0;
 
   Display *d = (Display *) calloc (1, sizeof(*d));
   d->screen = (Screen *) calloc (1, sizeof(Screen));
 
   Display *d = (Display *) calloc (1, sizeof(*d));
   d->screen = (Screen *) calloc (1, sizeof(Screen));
@@ -393,7 +417,7 @@ push_gc (Drawable d, GC gc)
     case GXxor:   CGContextSetBlendMode (cgc, kCGBlendModeDifference); break;
     case GXor:    CGContextSetBlendMode (cgc, kCGBlendModeLighten);    break;
     case GXand:   CGContextSetBlendMode (cgc, kCGBlendModeDarken);     break;
     case GXxor:   CGContextSetBlendMode (cgc, kCGBlendModeDifference); break;
     case GXor:    CGContextSetBlendMode (cgc, kCGBlendModeLighten);    break;
     case GXand:   CGContextSetBlendMode (cgc, kCGBlendModeDarken);     break;
-    default: abort(); break;
+    default: Assert(0, "unknown gcv function"); break;
   }
 
   if (gc->gcv.clip_mask)
   }
 
   if (gc->gcv.clip_mask)
@@ -782,7 +806,8 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc,
       // No cgi means src == dst, and both are Windows.
 
 # ifdef USE_IPHONE
       // No cgi means src == dst, and both are Windows.
 
 # ifdef USE_IPHONE
-      abort();  // No NSCopyBits on iOS, but shouldn't be reached anyway.
+      Assert (0, "NSCopyBits unimplemented"); // shouldn't be reached anyway
+      return 0;
 # else // !USE_IPHONE
       NSRect nsfrom;
       nsfrom.origin.x    = src_rect.origin.x;    // NSRect != CGRect on 10.4
 # else // !USE_IPHONE
       NSRect nsfrom;
       nsfrom.origin.x    = src_rect.origin.x;    // NSRect != CGRect on 10.4
@@ -1174,8 +1199,8 @@ static void
 set_gcv (GC gc, XGCValues *from, unsigned long mask)
 {
   if (! mask) return;
 set_gcv (GC gc, XGCValues *from, unsigned long mask)
 {
   if (! mask) return;
-  if (! gc) abort();
-  if (! from) abort();
+  Assert (gc && from, "no gc");
+  if (!gc || !from) return;
 
   if (mask & GCFunction)       gc->gcv.function        = from->function;
   if (mask & GCForeground)     gc->gcv.foreground      = from->foreground;
 
   if (mask & GCFunction)       gc->gcv.function        = from->function;
   if (mask & GCForeground)     gc->gcv.foreground      = from->foreground;
@@ -1196,17 +1221,18 @@ set_gcv (GC gc, XGCValues *from, unsigned long mask)
   if (mask & GCBackground) validate_pixel (from->background, gc->depth,
                                            gc->gcv.alpha_allowed_p);
     
   if (mask & GCBackground) validate_pixel (from->background, gc->depth,
                                            gc->gcv.alpha_allowed_p);
     
-  if (mask & GCLineStyle)      abort();
-  if (mask & GCPlaneMask)      abort();
-  if (mask & GCFillStyle)      abort();
-  if (mask & GCTile)           abort();
-  if (mask & GCStipple)                abort();
-  if (mask & GCTileStipXOrigin)        abort();
-  if (mask & GCTileStipYOrigin)        abort();
-  if (mask & GCGraphicsExposures) abort();
-  if (mask & GCDashOffset)     abort();
-  if (mask & GCDashList)       abort();
-  if (mask & GCArcMode)                abort();
+  Assert ((! (mask & (GCLineStyle |
+                      GCPlaneMask |
+                      GCFillStyle |
+                      GCTile |
+                      GCStipple |
+                      GCTileStipXOrigin |
+                      GCTileStipYOrigin |
+                      GCGraphicsExposures |
+                      GCDashOffset |
+                      GCDashList |
+                      GCArcMode))),
+          "unimplemented gcvalues mask");
 }
 
 
 }
 
 
@@ -1453,7 +1479,7 @@ XInitImage (XImage *ximage)
     ximage->f.put_pixel = ximage_putpixel_32;
     ximage->f.get_pixel = ximage_getpixel_32;
   } else {
     ximage->f.put_pixel = ximage_putpixel_32;
     ximage->f.get_pixel = ximage_getpixel_32;
   } else {
-    abort();
+    Assert (0, "unknown depth");
   }
   return 1;
 }
   }
   return 1;
 }
@@ -2141,12 +2167,12 @@ static void
 query_font (Font fid)
 {
   if (!fid || !fid->nsfont) {
 query_font (Font fid)
 {
   if (!fid || !fid->nsfont) {
-    NSLog(@"no NSFont in fid");
-    abort();
+    Assert (0, "no NSFont in fid");
+    return;
   }
   if (![fid->nsfont fontName]) {
   }
   if (![fid->nsfont fontName]) {
-    NSLog(@"broken NSFont in fid");
-    abort();
+    Assert(0, @"broken NSFont in fid");
+    return;
   }
 
   int first = 32;
   }
 
   int first = 32;
@@ -2176,7 +2202,13 @@ query_font (Font fid)
 
 # ifndef USE_IPHONE
   NSBezierPath *bpath = [NSBezierPath bezierPath];
 
 # ifndef USE_IPHONE
   NSBezierPath *bpath = [NSBezierPath bezierPath];
-# endif
+# else  // USE_IPHONE
+  CTFontRef ctfont =
+    CTFontCreateWithName ((CFStringRef) [fid->nsfont fontName],
+                          [fid->nsfont pointSize],
+                          NULL);
+  Assert (ctfont, @"no CTFontRef for UIFont");
+# endif // USE_IPHONE
 
   for (i = first; i <= last; i++) {
     unsigned char str[2];
 
   for (i = first; i <= last; i++) {
     unsigned char str[2];
@@ -2185,8 +2217,8 @@ query_font (Font fid)
 
     NSString *nsstr = [NSString stringWithCString:(char *) str
                                          encoding:NSISOLatin1StringEncoding];
 
     NSString *nsstr = [NSString stringWithCString:(char *) str
                                          encoding:NSISOLatin1StringEncoding];
-    NSPoint advancement;
-    NSRect bbox;
+    NSPoint advancement = { 0, };
+    NSRect bbox = {{ 0, }, };
 
 # ifndef USE_IPHONE
 
 
 # ifndef USE_IPHONE
 
@@ -2235,33 +2267,35 @@ query_font (Font fid)
 
 # else  // USE_IPHONE
 
 
 # else  // USE_IPHONE
 
-    UIFont *ff = fid->nsfont;
-    CGSize size = [nsstr sizeWithFont:ff];
-
-    /* sizeWithFont gives us a character's "width" and "height".
-       There is no way to get a character's "lbearing", "rbearing",
-       or "descent".  We do have the font's overall "descent", though.
-
-       drawAtPoint (to an offscreen CGContext) returns "width" and the
-       "ascent" of the font (not of the glyph, I think) so that doesn't
-       help.
+    /* There is no way to get "lbearing", "rbearing" or "descent" out of
+       NSFont.  'sizeWithFont' gives us "width" and "height" only.
+       Likewise, 'drawAtPoint' (to an offscreen CGContext) gives us the
+       width of the character and the ascent of the font.
 
 
-       CGFontGetGlyphBBoxes might help (if it actually returns a bounding
-       box and not just the ascent/width again, which I don't know) but
-       we can't use it anyway because there is no way to map a unichar to
-       a CGGlyph.
-
-       Fuck you sideways, Apple.
+       Maybe we could use CGFontGetGlyphBBoxes() and avoid linking in
+       the CoreText library, but there's no non-CoreText way to turn a
+       unichar into a CGGlyph.
      */
      */
-
-    bbox.origin.x = 0;
-    bbox.origin.y = [ff descender];
-    bbox.size.width  = size.width;
-    bbox.size.height = size.height;
-
-    advancement.x = size.width;
-    advancement.y = 0;
-
+    UniChar uchar = [nsstr characterAtIndex: 0];
+    CGGlyph cgglyph = 0;
+
+    if (CTFontGetGlyphsForCharacters (ctfont, &uchar, &cgglyph, 1))
+      {
+        bbox = CTFontGetBoundingRectsForGlyphs (ctfont,
+                                                kCTFontDefaultOrientation,
+                                                &cgglyph, NULL, 1);
+        CGSize adv = { 0, };
+        CTFontGetAdvancesForGlyphs (ctfont, kCTFontDefaultOrientation,
+                                    &cgglyph, &adv, 1);
+        advancement.x = adv.width;
+        advancement.y = adv.height;
+
+        // Seems to be clipping by a pixel or two.  Add a margin to be safe.
+        bbox.origin.x    -= 2;
+        bbox.origin.y    -= 2;
+        bbox.size.width  += 4;
+        bbox.size.height += 4;
+      }
 # endif // USE_IPHONE
 
     /* Now that we know the advancement and bounding box, we can compute
 # endif // USE_IPHONE
 
     /* Now that we know the advancement and bounding box, we can compute
@@ -2304,6 +2338,10 @@ query_font (Font fid)
             (int) advancement.x, (int) advancement.y);
 #endif
   }
             (int) advancement.x, (int) advancement.y);
 #endif
   }
+
+# ifdef USE_IPHONE
+  CFRelease (ctfont);
+# endif
 }
 
 
 }
 
 
@@ -2651,7 +2689,8 @@ XLoadFont (Display *dpy, const char *name)
 
   // We should never return NULL for XLFD fonts.
   if (!fid->nsfont) {
 
   // We should never return NULL for XLFD fonts.
   if (!fid->nsfont) {
-    abort();
+    Assert (0, "no font");
+    return 0;
   }
   CFRetain (fid->nsfont);   // needed for garbage collection?
 
   }
   CFRetain (fid->nsfont);   // needed for garbage collection?
 
index 9dc5001cd6169e26afe91f168d05e62004115767..8de3a09cae63cd646fcb5d6f324444bc5d6b4c43 100644 (file)
@@ -253,7 +253,7 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
        /* What a hack!
 
            On iOS, our application delegate, SaverRunner, grabs an image
        /* What a hack!
 
            On iOS, our application delegate, SaverRunner, grabs an image
-           of itself as a UIImage before creating the XScreenSaverView.
+           of itself as a UIImage before mapping the XScreenSaverView.
            In this code, we ask SaverRunner for that UIImage, then copy
            it to the root window.
          */
            In this code, we ask SaverRunner for that UIImage, then copy
            it to the root window.
          */
@@ -262,18 +262,12 @@ Bool
 osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
                         XRectangle *geom_ret)
 {
 osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
                         XRectangle *geom_ret)
 {
-
-  /* Just for a little variety, let's return colorbars every other time. */
-  static int counter = 0;
-  if (counter++ & 1)
-    return False;
-
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s)
     return False;
   if (! [s isKindOfClass:[SaverRunner class]])
   SaverRunner *s = 
     (SaverRunner *) [[UIApplication sharedApplication] delegate];
   if (! s)
     return False;
   if (! [s isKindOfClass:[SaverRunner class]])
-    abort();
+    return False;
   UIImage *img = [s screenshot];
   if (! img)
     return False;
   UIImage *img = [s screenshot];
   if (! img)
     return False;
@@ -444,16 +438,7 @@ osx_load_image_file (Screen *screen, Window xwindow, Drawable drawable,
 
 # else  /* USE_IPHONE */
 
 
 # else  /* USE_IPHONE */
 
-  /* It would be nice to select a random image from the Photo Album and
-     load that, but that looks like a gigantic pain in the ass, because
-     it's an asynchronous API, and might require manual authorization
-     by the user.  (ALAssetsLibrary, enumerateGroupsWithTypes.)
-
-     Possibly useful sample code to check out:
-       http://www.fiveminutes.eu/accessing-photo-library-using-assets-library-framework-on-iphone/
-
-     So, in the meantime, return False, acquire colorbars.
-   */
+  /* This is handled differently: see grabclient.c and iosgrabimage.m. */
   return False;
 
 # endif /* USE_IPHONE */
   return False;
 
 # endif /* USE_IPHONE */
diff --git a/README b/README
index dfc9e3888dea302eab7b46e58afc2f6440fc9fc0..48860ab40771726655436e4b57839605d642353c 100644 (file)
--- a/README
+++ b/README
@@ -38,6 +38,16 @@ XScreenSaver has an extensive manual -- please read it!
 
 ===============================================================================
 
 
 ===============================================================================
 
+Changes since 5.17:   * iOS responds to shake gestures to randomize.
+                      * iOS can load images from your Photo Library.
+                      * iOS has clickable Wikipedia links in Settings panels.
+                      * Made `pipes' be ridiculously less efficient, but spin.
+                      * Added better mouse control to `rubik', `cube21',
+                        `crackberg', and `julia'.
+                      * Cosmetic improvements to `queens' and `endgame'.
+                      * `sonar' can now ping local subnet on DHCP.
+                      * Most savers now resize/rotate properly.
+                      * Various fixes.
 Changes since 5.16:   * More iOS tweaks.
                       * Fixed some compilation problems.
                       * Enlarged the texture image for `lament'.
 Changes since 5.16:   * More iOS tweaks.
                       * Fixed some compilation problems.
                       * Enlarged the texture image for `lament'.
index 0905154df62e9f485af9546cbb50dfbe196afbf4..c11d0e630af0d7e52fed913b8509533eae8d0ad0 100644 (file)
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
+/* Define this if you have the getifaddrs() function. */
+#undef HAVE_GETIFADDRS
+
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
 /* Define to 1 if you have the `getpagesize' function. */
 #undef HAVE_GETPAGESIZE
 
index 70097080f79b424d83e30fb58a7a4f23c3f1cbc9..04b0328012e8688cc337e44ff9e817125f0dbfe6 100755 (executable)
--- a/configure
+++ b/configure
@@ -2213,6 +2213,9 @@ echo "command line was: $0 $@"
 
 
 
 
 
 
+
+
+
 
 
 
 
 
 
@@ -2377,6 +2380,7 @@ fi
 
 
 
 
 
 
+
 ###############################################################################
 #
 #       Some utility functions to make checking for X things easier.
 ###############################################################################
 #
 #       Some utility functions to make checking for X things easier.
@@ -6243,6 +6247,68 @@ $as_echo "$ac_cv_have_icmphdr" >&6; }
 _ACEOF
 
  fi
 _ACEOF
 
  fi
+{ $as_echo "$as_me:$LINENO: checking for getifaddrs" >&5
+$as_echo_n "checking for getifaddrs... " >&6; }
+if test "${ac_cv_have_getifaddrs+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+                   #include <unistd.h>
+                   #include <arpa/inet.h>
+                   #include <ifaddrs.h>
+int
+main ()
+{
+struct ifaddrs *ifa;
+                   getifaddrs (&ifa);
+                   ifa->ifa_next = 0;
+                   ifa->ifa_addr->sa_family = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -rf conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -rf conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_getifaddrs=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_have_getifaddrs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_getifaddrs" >&5
+$as_echo "$ac_cv_have_getifaddrs" >&6; }
+ if test "$ac_cv_have_getifaddrs" = yes ; then
+   cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETIFADDRS 1
+_ACEOF
+
+ fi
 
 
 for ac_header in crypt.h sys/select.h
 
 
 for ac_header in crypt.h sys/select.h
@@ -17409,7 +17475,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 17416 "configure"
+#line 17482 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
index 85703d44c58b8a817cdce1ad5d0b48343ea8deb4..11ba5c19356a656d33f1b82f0dff7f34037a037b 100644 (file)
@@ -299,6 +299,9 @@ AH_TEMPLATE([HAVE_ICMPHDR],
            [Define this if you do pings with a `struct icmphdr' and an
             `un.echo.id' slot.])
 
            [Define this if you do pings with a `struct icmphdr' and an
             `un.echo.id' slot.])
 
+AH_TEMPLATE([HAVE_GETIFADDRS],
+           [Define this if you have the getifaddrs() function.])
+
 AH_TEMPLATE([HAVE_FORKPTY],
            [Define this if you have the 'forkpty' function:
             This allows 'phosphor' and 'apple2' to run curses-based
 AH_TEMPLATE([HAVE_FORKPTY],
            [Define this if you have the 'forkpty' function:
             This allows 'phosphor' and 'apple2' to run curses-based
@@ -973,6 +976,21 @@ AC_DEFUN(AC_X_RANDOM_PATHS,
     ;;
   esac])
 
     ;;
   esac])
 
+AC_DEFUN(AC_CHECK_GETIFADDRS,
+ [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs,
+  [AC_TRY_COMPILE([#include <stdlib.h>
+                   #include <unistd.h>
+                   #include <arpa/inet.h>
+                   #include <ifaddrs.h>],
+                  [struct ifaddrs *ifa;
+                   getifaddrs (&ifa);
+                   ifa->ifa_next = 0;
+                   ifa->ifa_addr->sa_family = 0;],
+                  [ac_cv_have_getifaddrs=yes],
+                  [ac_cv_have_getifaddrs=no])])
+ if test "$ac_cv_have_getifaddrs" = yes ; then
+   AC_DEFINE(HAVE_GETIFADDRS)
+ fi])
 
 
 ###############################################################################
 
 
 ###############################################################################
@@ -1171,6 +1189,7 @@ AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
 AC_CHECK_FUNCS(setlocale)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
 AC_CHECK_FUNCS(setlocale)
 AC_CHECK_ICMP
 AC_CHECK_ICMPHDR
+AC_CHECK_GETIFADDRS
 AC_CHECK_HEADERS(crypt.h sys/select.h)
 AC_PROG_PERL
 
 AC_CHECK_HEADERS(crypt.h sys/select.h)
 AC_PROG_PERL
 
index ccf98ea25157f4c1b8855665ce8bd22a24f42330..e071dac52690508e78f4eafe563f647061779ca4 100644 (file)
@@ -673,11 +673,13 @@ update_ad_version::
   files="XScreenSaver.ad.in ../hacks/config/README ../OSX/bindist.rtf" ;    \
   U=$(UTILS_SRC)/version.h ;                                               \
   V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' < $$U` ;              \
   files="XScreenSaver.ad.in ../hacks/config/README ../OSX/bindist.rtf" ;    \
   U=$(UTILS_SRC)/version.h ;                                               \
   V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' < $$U` ;              \
+  Y=`date '+%Y'` ;                                                         \
   D=`date '+%d-%b-%Y'` ;                                                   \
   for S in $$files ; do                                                            \
     T=/tmp/xs.$$$$ ;                                                       \
     sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9]*[ab]*[0-9]*\(.*\)/\1$$V\2/"  \
         -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9]*\)/$$D/"        \
   D=`date '+%d-%b-%Y'` ;                                                   \
   for S in $$files ; do                                                            \
     T=/tmp/xs.$$$$ ;                                                       \
     sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9]*[ab]*[0-9]*\(.*\)/\1$$V\2/"  \
         -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9]*\)/$$D/"        \
+        -e "s/\( [0-9][0-9][0-9][0-9]-\)[0-9][0-9][0-9][0-9] /\1$$Y /"     \
       < $$S > $$T ;                                                        \
     if cmp -s $$S $$T ; then                                               \
       true ;                                                               \
       < $$S > $$T ;                                                        \
     if cmp -s $$S $$T ; then                                               \
       true ;                                                               \
index 29517ceb066270318399896da7b091537d329b62..bdfc2dc28db147e534514e07fee10b97c330a7fb 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 5.17
-!                              22-Jun-2012
+!                              version 5.18
+!                              03-Jul-2012
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at http://www.jwz.org/xscreensaver/
@@ -415,7 +415,7 @@ XScreenSaver.bourneShell:           /bin/sh
 *passwd.uname:                  True
 
 *splash.heading.label:         XScreenSaver %s
 *passwd.uname:                  True
 
 *splash.heading.label:         XScreenSaver %s
-*splash.body.label:            Copyright Â© 1991-2010 by
+*splash.body.label:            Copyright Â© 1991-2012 by
 *splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
 *splash.demo.label:            Settings
 *splash.help.label:            Help
 *splash.body2.label:           Jamie Zawinski <jwz@jwz.org>
 *splash.demo.label:            Settings
 *splash.help.label:            Help
index 824da10b29b7653fca6b5e1fa19ccbde7905298d..d916213599470c9cff480c27d93f0650e7ba8784 100644 (file)
 "*passwd.asterisks:              True",
 "*passwd.uname:                  True",
 "*splash.heading.label:                XScreenSaver %s",
 "*passwd.asterisks:              True",
 "*passwd.uname:                  True",
 "*splash.heading.label:                XScreenSaver %s",
-"*splash.body.label:           Copyright Â© 1991-2010 by",
+"*splash.body.label:           Copyright Â© 1991-2012 by",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
 "*splash.demo.label:           Settings",
 "*splash.help.label:           Help",
 "*splash.body2.label:          Jamie Zawinski <jwz@jwz.org>",
 "*splash.demo.label:           Settings",
 "*splash.help.label:           Help",
index fb621cdef69fd39b243a27f02a4276a3eb4b3e8c..2a8f163ec6522da4bde3bb3e5e72d25ae5c611f0 100644 (file)
@@ -1,5 +1,5 @@
 /* subprocs.c --- choosing, spawning, and killing screenhacks.
 /* subprocs.c --- choosing, spawning, and killing screenhacks.
- * xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -484,6 +484,7 @@ static RETSIGTYPE
 sigchld_handler (int sig)
 {
   saver_info *si = global_si_kludge;   /* I hate C so much... */
 sigchld_handler (int sig)
 {
   saver_info *si = global_si_kludge;   /* I hate C so much... */
+  in_signal_handler_p++;
 
   if (si->prefs.debug_p)
     {
 
   if (si->prefs.debug_p)
     {
@@ -510,6 +511,7 @@ sigchld_handler (int sig)
     }
 
   init_sigchld();
     }
 
   init_sigchld();
+  in_signal_handler_p--;
 }
 #endif /* SIGCHLD */
 
 }
 #endif /* SIGCHLD */
 
index 95f6b2b1f98d669ecc8d8880187eceff1660103d..ed5bf3032fbc7e86b1c477c304ae22dc23491b7f 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2011 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -299,14 +299,28 @@ xscreensaver %s, copyright (c) 1991-2008 by Jamie Zawinski <jwz@jwz.org>\n\
 }
 
 
 }
 
 
+Bool in_signal_handler_p = 0;  /* I hate C so much... */
+
 char *
 timestring (void)
 {
 char *
 timestring (void)
 {
-  time_t now = time ((time_t *) 0);
-  char *str = (char *) ctime (&now);
-  char *nl = (char *) strchr (str, '\n');
-  if (nl) *nl = 0; /* take off that dang newline */
-  return str;
+  if (in_signal_handler_p)
+    {
+      /* Turns out that ctime() and even localtime_r() call malloc() on Linux!
+         So we can't call them from inside SIGCHLD.  WTF.
+       */
+      static char buf[30];
+      strcpy (buf, "... ... ..   signal ....");
+      return buf;
+    }
+  else
+    {
+      time_t now = time ((time_t *) 0);
+      char *str = (char *) ctime (&now);
+      char *nl = (char *) strchr (str, '\n');
+      if (nl) *nl = 0; /* take off that dang newline */
+      return str;
+    }
 }
 
 static Bool blurb_timestamp_p = True;   /* kludge */
 }
 
 static Bool blurb_timestamp_p = True;   /* kludge */
index 26d9fcd37babf1e8fd2b98bf503767dc7dd239b9..98aa4450d6036f7d6bbaa8046850688ef4fc4e5d 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993-2011 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1993-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -189,6 +189,7 @@ extern void restart_process (saver_info *si);
 extern int saver_ehandler (Display *dpy, XErrorEvent *error);
 extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error);
 extern Bool window_exists_p (Display *dpy, Window window);
 extern int saver_ehandler (Display *dpy, XErrorEvent *error);
 extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error);
 extern Bool window_exists_p (Display *dpy, Window window);
+extern Bool in_signal_handler_p;
 extern char *timestring (void);
 extern Bool display_is_on_console_p (saver_info *si);
 extern Visual *get_best_gl_visual (saver_info *si, Screen *screen);
 extern char *timestring (void);
 extern Bool display_is_on_console_p (saver_info *si);
 extern Visual *get_best_gl_visual (saver_info *si, Screen *screen);
index 0d6c8000f26901cb3c26e7ab93ba6f8fb7640295..da0c9c467c151223e933ca01a42d78c22d56747a 100644 (file)
@@ -1078,6 +1078,7 @@ apple2.o: $(UTILS_SRC)/visual.h
 apple2.o: $(UTILS_SRC)/xshm.h
 apple2.o: $(UTILS_SRC)/yarandom.h
 asm6502.o: $(srcdir)/asm6502.h
 apple2.o: $(UTILS_SRC)/xshm.h
 apple2.o: $(UTILS_SRC)/yarandom.h
 asm6502.o: $(srcdir)/asm6502.h
+asm6502.o: $(UTILS_SRC)/yarandom.h
 attraction.o: ../config.h
 attraction.o: $(srcdir)/fps.h
 attraction.o: $(srcdir)/screenhackI.h
 attraction.o: ../config.h
 attraction.o: $(srcdir)/fps.h
 attraction.o: $(srcdir)/screenhackI.h
index 9d7e968c74cf036e0fb5984e7342e63311be235c..647b7aab93180c8e8db6294e1e511fdaf4d252ef 100644 (file)
@@ -64,8 +64,6 @@
 #define WAVES                  6
 #define STRETCHES              8
 
 #define WAVES                  6
 #define STRETCHES              8
 
-const double PI = 3.1415926535;
-
 struct lineStruct {
     unsigned int x, y, len, obj, color, ndol;
     int deo;
 struct lineStruct {
     unsigned int x, y, len, obj, color, ndol;
     int deo;
@@ -171,10 +169,10 @@ _wave(struct state *st, int x, int h, int l, int wave)
   l+=1; 
   switch(wave) {
     case 0:                                         /* cos wave*/
   l+=1; 
   switch(wave) {
     case 0:                                         /* cos wave*/
-      return((int)(cos((double)x*PI/l)*h));
+      return((int)(cos((double)x*M_PI/l)*h));
     case 1:                                      /* double wave*/
     case 2:                                      /* double wave*/
     case 1:                                      /* double wave*/
     case 2:                                      /* double wave*/
-      return((int)(cos((double)x*PI/l)*h)+(int)(sin((double)x*PI/l/st->cs1[1])*h));
+      return((int)(cos((double)x*M_PI/l)*h)+(int)(sin((double)x*M_PI/l/st->cs1[1])*h));
     case 3:                                         /* zig zag */
       return(abs((x%(l*2)-l))*h/l);
     case 4:                                   /* giant zig zag */
     case 3:                                         /* zig zag */
       return(abs((x%(l*2)-l))*h/l);
     case 4:                                   /* giant zig zag */
@@ -774,10 +772,10 @@ _pattern(struct state *st, int x, int y, int n)
       x+=_wave(st,st->gridy-y,st->gridy/(1+st->cs1[n]),st->gridy,0);
       break;
     case 4:                                           /* U curves */
       x+=_wave(st,st->gridy-y,st->gridy/(1+st->cs1[n]),st->gridy,0);
       break;
     case 4:                                           /* U curves */
-      x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
     case 5:
       break;
     case 5:
-      x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
   }
   switch(st->wsy[0]) {
       break;
   }
   switch(st->wsy[0]) {
@@ -794,10 +792,10 @@ _pattern(struct state *st, int x, int y, int n)
       y+=_wave(st,st->gridx-ox,st->gridx/(1+st->cs1[n]),st->gridx,0);
       break;
     case 4:                                         /* U curves */
       y+=_wave(st,st->gridx-ox,st->gridx/(1+st->cs1[n]),st->gridx,0);
       break;
     case 4:                                         /* U curves */
-      y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
     case 5:
       break;
     case 5:
-      y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0);
+      y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0);
       break;
   }
   switch(st->pattern[n]) {
       break;
   }
   switch(st->pattern[n]) {
index 0cf342ea4c1d4f27c9c5712ef89c583f64673026..f69e0967f1354a29cb592eae9b2f16c4651f7e11 100644 (file)
@@ -380,11 +380,20 @@ static void
 anemone_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 anemone_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
-  /* need to re-make pixmaps too...
   struct state *st = (struct state *) closure;
   st->scrWidth = w;
   st->scrHeight = h;
   struct state *st = (struct state *) closure;
   st->scrWidth = w;
   st->scrHeight = h;
-  */
+#if 0
+  if (st->dbuf) {
+    XWindowAttributes wa;
+    XGetWindowAttributes(dpy, window, &wa);
+    if (st->ba) XFreePixmap (dpy, st->ba);
+    if (st->bb) XFreePixmap (dpy, st->bb);
+    st->ba = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth);
+    st->bb = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth);
+    st->b = st->ba;
+  }
+#endif
 }
 
 static Bool
 }
 
 static Bool
index ab34e04abc67d1766ca5e5fba004e3c76cfd7133..be2e6ab4c6b7b340fca9a0f692dad1fc9f82ba71 100644 (file)
@@ -74,7 +74,6 @@ static const char sccsid[] = "@(#)apollonian.c        5.02 2001/07/01 xlockmore";
                                        "*fpsSolid: true   \n" \
 
 # define refresh_apollonian 0
                                        "*fpsSolid: true   \n" \
 
 # define refresh_apollonian 0
-# define reshape_apollonian 0
 # define apollonian_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
 # define apollonian_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -822,6 +821,13 @@ draw_apollonian (ModeInfo * mi)
       }
 }
 
       }
 }
 
+ENTRYPOINT void
+reshape_apollonian(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_apollonian (mi);
+}
+
 ENTRYPOINT void
 release_apollonian (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_apollonian (ModeInfo * mi)
 {
index facde4c0dbdf2bbadb2160030694256b7f62f460..0e1508ff1ad514e1a0ca064ab9f58df78634df81 100644 (file)
@@ -915,6 +915,9 @@ a2_vt100_printc (apple2_sim_t *sim, struct terminal_controller_data *state,
             }
           break;
         case 10: /* LF */
             }
           break;
         case 10: /* LF */
+# ifndef HAVE_FORKPTY
+          state->cursor_x = 0; /* No ptys on iPhone; assume CRLF. */
+# endif
         case 11: /* VT */
         case 12: /* FF */
           if (state->cursor_y < rows - 1)
         case 11: /* VT */
         case 12: /* FF */
           if (state->cursor_y < rows - 1)
index 3a8fe1a851a92afc3faff82806f66bd98543fbda..c3aa2a34ebe102916229f03dc6ead13c5601f0a5 100644 (file)
 #include <stdint.h>
 #include <unistd.h>
 
 #include <stdint.h>
 #include <unistd.h>
 
+#include "yarandom.h"
 #include "asm6502.h"
 
 #include "asm6502.h"
 
-#ifdef DEBUGGER
+/*#ifdef DEBUGGER
 #  define random rand
 #  define random rand
+#endif*/
+
+#ifndef USE_IPHONE
+# define READ_FILES
 #endif
 
 typedef enum{
 #endif
 
 typedef enum{
@@ -68,7 +73,7 @@ typedef BOOL (*CharTest) (char);
 /*typedef void (*JumpFunc) (machine_6502* AddrMode);*/
 
 typedef struct {
 /*typedef void (*JumpFunc) (machine_6502* AddrMode);*/
 
 typedef struct {
-  AddrMode type;
+  m6502_AddrMode type;
   Bit32 value[MAX_PARAM_VALUE];
   unsigned int vp; /*value pointer, index into the value table.*/
   char *label;
   Bit32 value[MAX_PARAM_VALUE];
   unsigned int vp; /*value pointer, index into the value table.*/
   char *label;
@@ -259,7 +264,7 @@ static Bit8 nibble(Bit8 value, Side side){
 
 
 /* used for tracing. XXX: combined with function getvalue */
 
 
 /* used for tracing. XXX: combined with function getvalue */
-static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit16 PC){
+static BOOL peekValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer, Bit16 PC){
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
@@ -324,7 +329,7 @@ static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit
 
 
 /* Figure out how to get the value from the addrmode and get it.*/
 
 
 /* Figure out how to get the value from the addrmode and get it.*/
-static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){
+static BOOL getValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer){
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
   Bit8 zp;
   pointer->value = 0;
   pointer->addr = 0;
@@ -385,7 +390,8 @@ static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){
 
 }
 
 
 }
 
-static void dismem(machine_6502 *machine, AddrMode adm, char *output){
+#if 0
+static void dismem(machine_6502 *machine, m6502_AddrMode adm, char *output){
   Bit8 zp;
   Bit16 n;
   switch(adm){
   Bit8 zp;
   Bit16 n;
   switch(adm){
@@ -442,6 +448,7 @@ static void dismem(machine_6502 *machine, AddrMode adm, char *output){
     break;
   }
 }
     break;
   }
 }
+#endif
 
 /* manZeroNeg - Manage the negative and zero flags */
 static void manZeroNeg(machine_6502 *machine, Bit8 value){
 
 /* manZeroNeg - Manage the negative and zero flags */
 static void manZeroNeg(machine_6502 *machine, Bit8 value){
@@ -455,7 +462,7 @@ static void warnValue(BOOL isValue){
   }
 }
 
   }
 }
 
-static void jmpADC(machine_6502 *machine, AddrMode adm){
+static void jmpADC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit16 tmp;
   Bit8 c = bitOn(machine->regP, CARRY_FL);
   Pointer ptr;
   Bit16 tmp;
   Bit8 c = bitOn(machine->regP, CARRY_FL);
@@ -506,7 +513,7 @@ static void jmpADC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpAND(machine_6502 *machine, AddrMode adm){
+static void jmpAND(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -514,7 +521,7 @@ static void jmpAND(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpASL(machine_6502 *machine, AddrMode adm){
+static void jmpASL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
@@ -533,7 +540,7 @@ static void jmpASL(machine_6502 *machine, AddrMode adm){
   
 }
 
   
 }
 
-static void jmpBIT(machine_6502 *machine, AddrMode adm){
+static void jmpBIT(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -550,7 +557,7 @@ static void jumpBranch(machine_6502 *machine, Bit16 offset){
     machine->regPC = machine->regPC + offset;
 }
 
     machine->regPC = machine->regPC + offset;
 }
 
-static void jmpBPL(machine_6502 *machine, AddrMode adm){
+static void jmpBPL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -559,7 +566,7 @@ static void jmpBPL(machine_6502 *machine, AddrMode adm){
     
 }
 
     
 }
 
-static void jmpBMI(machine_6502 *machine, AddrMode adm){
+static void jmpBMI(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -568,7 +575,7 @@ static void jmpBMI(machine_6502 *machine, AddrMode adm){
 
 }
 
 
 }
 
-static void jmpBVC(machine_6502 *machine, AddrMode adm){
+static void jmpBVC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -576,7 +583,7 @@ static void jmpBVC(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBVS(machine_6502 *machine, AddrMode adm){
+static void jmpBVS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -584,7 +591,7 @@ static void jmpBVS(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBCC(machine_6502 *machine, AddrMode adm){
+static void jmpBCC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -592,7 +599,7 @@ static void jmpBCC(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBCS(machine_6502 *machine, AddrMode adm){
+static void jmpBCS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -600,7 +607,7 @@ static void jmpBCS(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBNE(machine_6502 *machine, AddrMode adm){
+static void jmpBNE(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -608,7 +615,7 @@ static void jmpBNE(machine_6502 *machine, AddrMode adm){
     jumpBranch(machine, ptr.addr);
 }
 
     jumpBranch(machine, ptr.addr);
 }
 
-static void jmpBEQ(machine_6502 *machine, AddrMode adm){
+static void jmpBEQ(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -621,28 +628,28 @@ static void doCompare(machine_6502 *machine, Bit16 reg, Pointer *ptr){
   manZeroNeg(machine,(reg - ptr->value));
 }
 
   manZeroNeg(machine,(reg - ptr->value));
 }
 
-static void jmpCMP(machine_6502 *machine, AddrMode adm){
+static void jmpCMP(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regA,&ptr);
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regA,&ptr);
 }
 
-static void jmpCPX(machine_6502 *machine, AddrMode adm){
+static void jmpCPX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regX,&ptr);
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regX,&ptr);
 }
 
-static void jmpCPY(machine_6502 *machine, AddrMode adm){
+static void jmpCPY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regY,&ptr);
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   doCompare(machine,machine->regY,&ptr);
 }
 
-static void jmpDEC(machine_6502 *machine, AddrMode adm){
+static void jmpDEC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -654,7 +661,7 @@ static void jmpDEC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,ptr.value);
 }
 
   manZeroNeg(machine,ptr.value);
 }
 
-static void jmpEOR(machine_6502 *machine, AddrMode adm){
+static void jmpEOR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -662,35 +669,35 @@ static void jmpEOR(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regA);
 }
 
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpCLC(machine_6502 *machine, AddrMode adm){
+static void jmpCLC(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, CARRY_FL, 0);
 }
 
   machine->regP = setBit(machine->regP, CARRY_FL, 0);
 }
 
-static void jmpSEC(machine_6502 *machine, AddrMode adm){
+static void jmpSEC(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, CARRY_FL, 1);
 }
 
   machine->regP = setBit(machine->regP, CARRY_FL, 1);
 }
 
-static void jmpCLI(machine_6502 *machine, AddrMode adm){
+static void jmpCLI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 0);
 }
 
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 0);
 }
 
-static void jmpSEI(machine_6502 *machine, AddrMode adm){
+static void jmpSEI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 1);
 }
 
   machine->regP = setBit(machine->regP, INTERRUPT_FL, 1);
 }
 
-static void jmpCLV(machine_6502 *machine, AddrMode adm){
+static void jmpCLV(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, OVERFLOW_FL, 0);
 }
 
   machine->regP = setBit(machine->regP, OVERFLOW_FL, 0);
 }
 
-static void jmpCLD(machine_6502 *machine, AddrMode adm){
+static void jmpCLD(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, DECIMAL_FL, 0);
 }
 
   machine->regP = setBit(machine->regP, DECIMAL_FL, 0);
 }
 
-static void jmpSED(machine_6502 *machine, AddrMode adm){
+static void jmpSED(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = setBit(machine->regP, DECIMAL_FL, 1);
 }
 
   machine->regP = setBit(machine->regP, DECIMAL_FL, 1);
 }
 
-static void jmpINC(machine_6502 *machine, AddrMode adm){
+static void jmpINC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -699,14 +706,14 @@ static void jmpINC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,ptr.value);
 }
 
   manZeroNeg(machine,ptr.value);
 }
 
-static void jmpJMP(machine_6502 *machine, AddrMode adm){
+static void jmpJMP(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   machine->regPC = ptr.addr;
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   machine->regPC = ptr.addr;
 }
 
-static void jmpJSR(machine_6502 *machine, AddrMode adm){
+static void jmpJSR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   /* Move past the 2 byte parameter. JSR is always followed by
      absolute address. */
   Pointer ptr;
   /* Move past the 2 byte parameter. JSR is always followed by
      absolute address. */
@@ -718,7 +725,7 @@ static void jmpJSR(machine_6502 *machine, AddrMode adm){
   machine->regPC = ptr.addr;  
 }
 
   machine->regPC = ptr.addr;  
 }
 
-static void jmpLDA(machine_6502 *machine, AddrMode adm){
+static void jmpLDA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -726,7 +733,7 @@ static void jmpLDA(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regA);
 }
 
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpLDX(machine_6502 *machine, AddrMode adm){
+static void jmpLDX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -734,7 +741,7 @@ static void jmpLDX(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regX);
 }
 
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpLDY(machine_6502 *machine, AddrMode adm){
+static void jmpLDY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -742,7 +749,7 @@ static void jmpLDY(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regY);
 }
 
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpLSR(machine_6502 *machine, AddrMode adm){
+static void jmpLSR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   if (isValue){
@@ -764,11 +771,11 @@ static void jmpLSR(machine_6502 *machine, AddrMode adm){
   }
 }
 
   }
 }
 
-static void jmpNOP(machine_6502 *machine, AddrMode adm){
+static void jmpNOP(machine_6502 *machine, m6502_AddrMode adm){
   /* no operation */
 }
 
   /* no operation */
 }
 
-static void jmpORA(machine_6502 *machine, AddrMode adm){
+static void jmpORA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -776,17 +783,17 @@ static void jmpORA(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpTAX(machine_6502 *machine, AddrMode adm){
+static void jmpTAX(machine_6502 *machine, m6502_AddrMode adm){
   machine->regX = machine->regA;
   manZeroNeg(machine,machine->regX);
 }
 
   machine->regX = machine->regA;
   manZeroNeg(machine,machine->regX);
 }
 
-static void jmpTXA(machine_6502 *machine, AddrMode adm){
+static void jmpTXA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = machine->regX;
   manZeroNeg(machine,machine->regA);
 }
 
   machine->regA = machine->regX;
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpDEX(machine_6502 *machine, AddrMode adm){
+static void jmpDEX(machine_6502 *machine, m6502_AddrMode adm){
   if (machine->regX > 0)
     machine->regX--;
   else
   if (machine->regX > 0)
     machine->regX--;
   else
@@ -794,23 +801,23 @@ static void jmpDEX(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regX);
 }
 
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpINX(machine_6502 *machine, AddrMode adm){
+static void jmpINX(machine_6502 *machine, m6502_AddrMode adm){
   Bit16 value = machine->regX + 1;
   machine->regX = value & 0xFF;
   manZeroNeg(machine, machine->regX);
 }
 
   Bit16 value = machine->regX + 1;
   machine->regX = value & 0xFF;
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpTAY(machine_6502 *machine, AddrMode adm){
+static void jmpTAY(machine_6502 *machine, m6502_AddrMode adm){
   machine->regY = machine->regA;
   manZeroNeg(machine, machine->regY);
 }
 
   machine->regY = machine->regA;
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpTYA(machine_6502 *machine, AddrMode adm){
+static void jmpTYA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = machine->regY;
   manZeroNeg(machine, machine->regA);
 }
 
   machine->regA = machine->regY;
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpDEY(machine_6502 *machine, AddrMode adm){
+static void jmpDEY(machine_6502 *machine, m6502_AddrMode adm){
   if (machine->regY > 0)
     machine->regY--;
   else
   if (machine->regY > 0)
     machine->regY--;
   else
@@ -818,13 +825,13 @@ static void jmpDEY(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine, machine->regY);
 }
 
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpINY(machine_6502 *machine, AddrMode adm){
+static void jmpINY(machine_6502 *machine, m6502_AddrMode adm){
   Bit16 value = machine->regY + 1;
   machine->regY = value & 0xff;
   manZeroNeg(machine, machine->regY);
 }
 
   Bit16 value = machine->regY + 1;
   machine->regY = value & 0xff;
   manZeroNeg(machine, machine->regY);
 }
 
-static void jmpROR(machine_6502 *machine, AddrMode adm){
+static void jmpROR(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
@@ -849,7 +856,7 @@ static void jmpROR(machine_6502 *machine, AddrMode adm){
   }
 }
 
   }
 }
 
-static void jmpROL(machine_6502 *machine, AddrMode adm){
+static void jmpROL(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
   Pointer ptr;
   Bit8 cf;
   BOOL isValue = getValue(machine, adm, &ptr);
@@ -874,12 +881,12 @@ static void jmpROL(machine_6502 *machine, AddrMode adm){
   }
 }
 
   }
 }
 
-static void jmpRTI(machine_6502 *machine, AddrMode adm){
+static void jmpRTI(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = stackPop(machine);
   machine->regPC = stackPop(machine);
 }
 
   machine->regP = stackPop(machine);
   machine->regPC = stackPop(machine);
 }
 
-static void jmpRTS(machine_6502 *machine, AddrMode adm){
+static void jmpRTS(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   Bit16 nr = stackPop(machine);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   Bit16 nr = stackPop(machine);
@@ -888,7 +895,7 @@ static void jmpRTS(machine_6502 *machine, AddrMode adm){
   machine->regPC = (nl << 8) | nr;
 }
 
   machine->regPC = (nl << 8) | nr;
 }
 
-static void jmpSBC(machine_6502 *machine, AddrMode adm){
+static void jmpSBC(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   /*Bit8 vflag;*/
   Bit8 c = bitOn(machine->regP, CARRY_FL);
   Pointer ptr;
   /*Bit8 vflag;*/
   Bit8 c = bitOn(machine->regP, CARRY_FL);
@@ -944,48 +951,48 @@ static void jmpSBC(machine_6502 *machine, AddrMode adm){
   manZeroNeg(machine,machine->regA);
 }
 
   manZeroNeg(machine,machine->regA);
 }
 
-static void jmpSTA(machine_6502 *machine, AddrMode adm){
+static void jmpSTA(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regA);
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regA);
 }
 
-static void jmpTXS(machine_6502 *machine, AddrMode adm){
+static void jmpTXS(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine,machine->regX);
 }
 
   stackPush(machine,machine->regX);
 }
 
-static void jmpTSX(machine_6502 *machine, AddrMode adm){
+static void jmpTSX(machine_6502 *machine, m6502_AddrMode adm){
   machine->regX = stackPop(machine);
   manZeroNeg(machine, machine->regX);
 }
 
   machine->regX = stackPop(machine);
   manZeroNeg(machine, machine->regX);
 }
 
-static void jmpPHA(machine_6502 *machine, AddrMode adm){
+static void jmpPHA(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine, machine->regA);
 }
 
   stackPush(machine, machine->regA);
 }
 
-static void jmpPLA(machine_6502 *machine, AddrMode adm){
+static void jmpPLA(machine_6502 *machine, m6502_AddrMode adm){
   machine->regA = stackPop(machine);
   manZeroNeg(machine, machine->regA);
 }
 
   machine->regA = stackPop(machine);
   manZeroNeg(machine, machine->regA);
 }
 
-static void jmpPHP(machine_6502 *machine, AddrMode adm){
+static void jmpPHP(machine_6502 *machine, m6502_AddrMode adm){
   stackPush(machine,machine->regP);
 }
 
   stackPush(machine,machine->regP);
 }
 
-static void jmpPLP(machine_6502 *machine, AddrMode adm){
+static void jmpPLP(machine_6502 *machine, m6502_AddrMode adm){
   machine->regP = stackPop(machine);
   machine->regP = setBit(machine->regP, FUTURE_FL, 1);
 }
 
   machine->regP = stackPop(machine);
   machine->regP = setBit(machine->regP, FUTURE_FL, 1);
 }
 
-static void jmpSTX(machine_6502 *machine, AddrMode adm){
+static void jmpSTX(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regX);
 }
 
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   memStoreByte(machine,ptr.addr,machine->regX);
 }
 
-static void jmpSTY(machine_6502 *machine, AddrMode adm){
+static void jmpSTY(machine_6502 *machine, m6502_AddrMode adm){
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
   Pointer ptr;
   BOOL isValue = getValue(machine, adm, &ptr);
   warnValue(isValue);
@@ -995,7 +1002,7 @@ static void jmpSTY(machine_6502 *machine, AddrMode adm){
 \f
 
 /* OPCODES */
 \f
 
 /* OPCODES */
-static void assignOpCodes(Opcodes *opcodes){
+static void assignOpCodes(m6502_Opcodes *opcodes){
 
  #define SETOP(num, _name, _Imm, _ZP, _ZPX, _ZPY, _ABS, _ABSX, _ABSY, _INDX, _INDY, _SNGL, _BRA, _func) \
 {opcodes[num].name[3] = '\0'; \
 
  #define SETOP(num, _name, _Imm, _ZP, _ZPX, _ZPY, _ABS, _ABSX, _ABSY, _INDX, _INDY, _SNGL, _BRA, _func) \
 {opcodes[num].name[3] = '\0'; \
@@ -1117,7 +1124,7 @@ static void buildIndexCache(machine_6502 *machine){
 /* opIndex() - Search the opcode table for a match. If found return
    the index into the optable and the address mode of the opcode. If
    the opcode is not found then return -1. */
 /* opIndex() - Search the opcode table for a match. If found return
    the index into the optable and the address mode of the opcode. If
    the opcode is not found then return -1. */
-static int opIndex(machine_6502 *machine, Bit8 opcode, AddrMode *adm){ 
+static int opIndex(machine_6502 *machine, Bit8 opcode, m6502_AddrMode *adm){ 
   /* XXX could catch errors by setting a addressmode of error or something */
   *adm = machine->opcache[opcode].adm;
   return machine->opcache[opcode].index;
   /* XXX could catch errors by setting a addressmode of error or something */
   *adm = machine->opcache[opcode].adm;
   return machine->opcache[opcode].index;
@@ -1663,6 +1670,7 @@ static AsmLine *parseAssembly(machine_6502 *machine, BOOL *codeOk, const char *c
   return listp;
 }
     
   return listp;
 }
     
+#ifdef READ_FILES
 /* fileToBuffer() - Allocates a buffer and loads all of the file into memory. */
 static char *fileToBuffer(const char *filename){
   const int defaultSize = 1024;
 /* fileToBuffer() - Allocates a buffer and loads all of the file into memory. */
 static char *fileToBuffer(const char *filename){
   const int defaultSize = 1024;
@@ -1695,6 +1703,7 @@ static char *fileToBuffer(const char *filename){
   buffer[i+1] = '\0';
   return buffer;
 }
   buffer[i+1] = '\0';
   return buffer;
 }
+#endif
 
 \f
 /* Routines */
 
 \f
 /* Routines */
@@ -1724,7 +1733,7 @@ static void reset(machine_6502 *machine){
 }
 
 /* hexDump() - Dump the memory to output */
 }
 
 /* hexDump() - Dump the memory to output */
-void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
+void m6502_hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
   Bit32 address;
   Bit32 i;
   for( i = 0; i < numbytes; i++){
   Bit32 address;
   Bit32 i;
   for( i = 0; i < numbytes; i++){
@@ -1756,7 +1765,7 @@ void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){
 /*   fclose(ofp); */
 /* } */
 
 /*   fclose(ofp); */
 /* } */
 
-static BOOL translate(Opcodes *op,Param *param, machine_6502 *machine){
+static BOOL translate(m6502_Opcodes *op,Param *param, machine_6502 *machine){
    switch(param->type){
     case SINGLE:
       if (op->SNGL)
    switch(param->type){
     case SINGLE:
       if (op->SNGL)
@@ -1940,7 +1949,7 @@ static BOOL compileLine(AsmLine *asmline, void *args){
   else{
     int i;
     char *command = asmline->command;
   else{
     int i;
     char *command = asmline->command;
-    Opcodes op;
+    m6502_Opcodes op;
     for(i = 0; i < NUM_OPCODES; i++){
       if (strcmp(machine->opcodes[i].name, command) == 0){
        op = machine->opcodes[i];
     for(i = 0; i < NUM_OPCODES; i++){
       if (strcmp(machine->opcodes[i].name, command) == 0){
        op = machine->opcodes[i];
@@ -2069,7 +2078,7 @@ static BOOL compileCode(machine_6502 *machine, const char *code){
 
 static void execute(machine_6502 *machine){
   Bit8 opcode;
 
 static void execute(machine_6502 *machine){
   Bit8 opcode;
-  AddrMode adm;
+  m6502_AddrMode adm;
   int opidx;
 
   if(!machine->codeRunning) return;
   int opidx;
 
   if(!machine->codeRunning) return;
@@ -2090,7 +2099,7 @@ static void execute(machine_6502 *machine){
   }
 }
 
   }
 }
 
-machine_6502 *build6502(){
+machine_6502 *m6502_build(void){
   machine_6502 *machine;
   machine = ecalloc(1, sizeof(machine_6502));
   assignOpCodes(machine->opcodes);
   machine_6502 *machine;
   machine = ecalloc(1, sizeof(machine_6502));
   assignOpCodes(machine->opcodes);
@@ -2099,14 +2108,14 @@ machine_6502 *build6502(){
   return machine;
 }
 
   return machine;
 }
 
-void destroy6502(machine_6502 *machine){
+void m6502_destroy6502(machine_6502 *machine){
   free(machine);
   machine = NULL;
 }
 
   free(machine);
   machine = NULL;
 }
 
-void trace(machine_6502 *machine, FILE *output){
+void m6502_trace(machine_6502 *machine, FILE *output){
   Bit8 opcode = memReadByte(machine,machine->regPC);
   Bit8 opcode = memReadByte(machine,machine->regPC);
-  AddrMode adm;
+  m6502_AddrMode adm;
   Pointer ptr;
   int opidx = opIndex(machine,opcode,&adm);
   int stacksz = STACK_TOP - machine->regSP;
   Pointer ptr;
   int opidx = opIndex(machine,opcode,&adm);
   int stacksz = STACK_TOP - machine->regSP;
@@ -2132,15 +2141,16 @@ void trace(machine_6502 *machine, FILE *output){
       fprintf(output,"\n");
   }
   fprintf(output,"STACK:");
       fprintf(output,"\n");
   }
   fprintf(output,"STACK:");
-  hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output);
+  m6502_hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output);
 }
 
 }
 
+#if 0
 void disassemble(machine_6502 *machine, FILE *output){
   /* Read the opcode
      increment the program counter
      print the opcode
      loop until end of program. */
 void disassemble(machine_6502 *machine, FILE *output){
   /* Read the opcode
      increment the program counter
      print the opcode
      loop until end of program. */
-  AddrMode adm;
+  m6502_AddrMode adm;
   Bit16 addr;
   Bit8 opcode;
   int opidx;
   Bit16 addr;
   Bit8 opcode;
   int opidx;
@@ -2161,9 +2171,11 @@ void disassemble(machine_6502 *machine, FILE *output){
   free(mem);
   machine->regPC = opc;
 }
   free(mem);
   machine->regPC = opc;
 }
+#endif
 
 \f
 
 \f
-void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){
+#ifdef READ_FILES
+void m6502_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){
   char *code = NULL;
 
   machine->plot = plot;
   char *code = NULL;
 
   machine->plot = plot;
@@ -2186,7 +2198,7 @@ void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *
   }while(machine->codeRunning);
 }
 
   }while(machine->codeRunning);
 }
 
-void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){
+void m6502_start_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){
   char *code = NULL;
   reset(machine);
 
   char *code = NULL;
   reset(machine);
 
@@ -2203,9 +2215,10 @@ void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot,
   machine->codeRunning = TRUE;
   execute(machine);
 }
   machine->codeRunning = TRUE;
   execute(machine);
 }
+#endif /* READ_FILES */
 
 
-void start_eval_string(machine_6502 *machine, const char *code,
-                      Plotter plot, void *plotterState){
+void m6502_start_eval_string(machine_6502 *machine, const char *code,
+                      m6502_Plotter plot, void *plotterState){
   reset(machine);
 
   machine->plot = plot;
   reset(machine);
 
   machine->plot = plot;
@@ -2239,7 +2252,7 @@ void start_eval_string(machine_6502 *machine, const char *code,
 /*   execute(machine); */
 /* } */
 
 /*   execute(machine); */
 /* } */
 
-void next_eval(machine_6502 *machine, int insno){
+void m6502_next_eval(machine_6502 *machine, int insno){
   int i = 0;
   for (i = 1; i < insno; i++){
     if (machine->codeRunning){
   int i = 0;
   for (i = 1; i < insno; i++){
     if (machine->codeRunning){
index 6f64d218ae4811eb0bb277dda58e3fdb16141b88..79b13a2b0144b0c9e1337370b3591358ec989a3c 100644 (file)
@@ -56,7 +56,7 @@ typedef enum{
     ZERO, ZERO_X, ZERO_Y,
     ABS_VALUE, ABS_OR_BRANCH, ABS_X, ABS_Y,
     ABS_LABEL_X, ABS_LABEL_Y, DCB_PARAM
     ZERO, ZERO_X, ZERO_Y,
     ABS_VALUE, ABS_OR_BRANCH, ABS_X, ABS_Y,
     ABS_LABEL_X, ABS_LABEL_Y, DCB_PARAM
-} AddrMode;
+} m6502_AddrMode;
 
 typedef struct machine_6502 machine_6502;
 
 
 typedef struct machine_6502 machine_6502;
 
@@ -73,14 +73,14 @@ typedef struct {
   Bit8 INDY;
   Bit8 SNGL;
   Bit8 BRA;
   Bit8 INDY;
   Bit8 SNGL;
   Bit8 BRA;
-  void (*func) (machine_6502*, AddrMode);
-} Opcodes;
+  void (*func) (machine_6502*, m6502_AddrMode);
+} m6502_Opcodes;
 
 /* Used to cache the index of each opcode */
 typedef struct {
   Bit8 index;
 
 /* Used to cache the index of each opcode */
 typedef struct {
   Bit8 index;
-  AddrMode adm;
-} OpcodeIndex;
+  m6502_AddrMode adm;
+} m6502_OpcodeIndex;
 
 /* Plotter is a function that will be called everytime a pixel
    needs to be updated. The first two parameter are the x and y
 
 /* Plotter is a function that will be called everytime a pixel
    needs to be updated. The first two parameter are the x and y
@@ -108,7 +108,7 @@ typedef struct {
    parameter. You can use this parameter to store state information.
 
 */
    parameter. You can use this parameter to store state information.
 
 */
-typedef void (*Plotter) (Bit8, Bit8, Bit8, void*);
+typedef void (*m6502_Plotter) (Bit8, Bit8, Bit8, void*);
 
 struct machine_6502 {
   BOOL codeCompiledOK;
 
 struct machine_6502 {
   BOOL codeCompiledOK;
@@ -124,54 +124,54 @@ struct machine_6502 {
   int labelPtr;
   BOOL codeRunning;
   int myInterval;
   int labelPtr;
   BOOL codeRunning;
   int myInterval;
-  Opcodes opcodes[NUM_OPCODES];
+  m6502_Opcodes opcodes[NUM_OPCODES];
   int screen[32][32];
   int codeLen;
   int screen[32][32];
   int codeLen;
-  OpcodeIndex opcache[0xff];
-  Plotter plot;
+  m6502_OpcodeIndex opcache[0xff];
+  m6502_Plotter plot;
   void *plotterState;
 };
 
 /* build6502() - Creates an instance of the 6502 machine */
   void *plotterState;
 };
 
 /* build6502() - Creates an instance of the 6502 machine */
-machine_6502 *build6502(void);
+machine_6502 *m6502_build(void);
 
 /* destroy6502() - compile the file and exectue it until the program
    is finished */
 
 /* destroy6502() - compile the file and exectue it until the program
    is finished */
-void destroy6502(machine_6502 *machine);
+void m6502_destroy6502(machine_6502 *machine);
 
 /* eval_file() - Compiles and runs a file until the program is
    finished */
 
 /* eval_file() - Compiles and runs a file until the program is
    finished */
-void eval_file(machine_6502 *machine, const char *filename, 
-              Plotter plot, void *plotterState);
+void m6502_eval_file(machine_6502 *machine, const char *filename, 
+              m6502_Plotter plot, void *plotterState);
 
 /* start_eval_file() - Compile the file and execute the first
    instruction */
 
 /* start_eval_file() - Compile the file and execute the first
    instruction */
-void start_eval_file(machine_6502 *machine, const char *filename, 
-                    Plotter plot, void *plotterState);
+void m6502_start_eval_file(machine_6502 *machine, const char *filename, 
+                    m6502_Plotter plot, void *plotterState);
 
 /* XXX
 
 /* XXX
-void start_eval_binary(machine_6502 *machine, Bit8 *program,
+void m6502_start_eval_binary(machine_6502 *machine, Bit8 *program,
                       unsigned int proglen,
                       Plotter plot, void *plotterState);
 */
 
                       unsigned int proglen,
                       Plotter plot, void *plotterState);
 */
 
-void start_eval_string(machine_6502 *machine, const char *code,
-                      Plotter plot, void *plotterState);
+void m6502_start_eval_string(machine_6502 *machine, const char *code,
+                      m6502_Plotter plot, void *plotterState);
 
 /* next_eval() - Execute the next insno of machine instructions */
 
 /* next_eval() - Execute the next insno of machine instructions */
-void next_eval(machine_6502 *machine, int insno);
+void m6502_next_eval(machine_6502 *machine, int insno);
 
 /* hexDump() - Dumps memory to output */
 
 /* hexDump() - Dumps memory to output */
-void hexDump(machine_6502 *machine, Bit16 start, 
+void m6502_hexDump(machine_6502 *machine, Bit16 start, 
             Bit16 numbytes, FILE *output);
 
 /* Disassemble() - Prints the assembly code for the program currently
    loaded in memory.*/
             Bit16 numbytes, FILE *output);
 
 /* Disassemble() - Prints the assembly code for the program currently
    loaded in memory.*/
-void disassemble(machine_6502 *machine, FILE *output);
+void m6502_disassemble(machine_6502 *machine, FILE *output);
 
 /* trace() - Prints to output the current value of registers, the
    current nmemonic, memory address and value. */
 
 /* trace() - Prints to output the current value of registers, the
    current nmemonic, memory address and value. */
-void trace(machine_6502 *machine, FILE *output);
+void m6502_trace(machine_6502 *machine, FILE *output);
 
 /* save_program() - Writes a binary file of the program loaded in
    memory. */
 
 /* save_program() - Writes a binary file of the program loaded in
    memory. */
index 7e15d0d4b01622348a533abc5f70156a50068e47..d6592163f496492db7f104570cbcf0b2bf47bcbf 100644 (file)
@@ -1898,6 +1898,9 @@ static void
 barcode_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 barcode_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->windowWidth = w;
+  st->windowHeight = h;
 }
 
 static void
 }
 
 static void
index 15bf2278441b01174e98bbb352c5f0cced89104d..081ba4851c57dc286b35fd16bce13c3a0e2c91ad 100644 (file)
@@ -87,7 +87,6 @@ static const char sccsid[] = "@(#)bouboule.c  4.00 97/01/01 xlockmore";
                                        "*fpsSolid:             true    \n"
 
 # define SMOOTH_COLORS
                                        "*fpsSolid:             true    \n"
 
 # define SMOOTH_COLORS
-# define reshape_bouboule 0
 # define bouboule_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 # define bouboule_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -838,6 +837,24 @@ release_bouboule(ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_bouboule(ModeInfo * mi, int width, int height)
+{
+       StarField  *sp = &starfield[MI_SCREEN(mi)];
+       sp->width  = width;
+       sp->height = height;
+    sininit(&sp->x,
+        sp->x.alpha, sp->x.step,
+        ((double) sp->width) / 4.0,
+        3.0 * ((double) sp->width) / 4.0,
+        POSCANRAND);
+    sininit(&sp->y,
+        sp->y.alpha, sp->y.step,
+        ((double) sp->height) / 4.0,
+        3.0 * ((double) sp->height) / 4.0,
+        POSCANRAND);
+}
+
 ENTRYPOINT void
 refresh_bouboule(ModeInfo * mi)
 {
 ENTRYPOINT void
 refresh_bouboule(ModeInfo * mi)
 {
index 20eeed8ab66a858d42520f3ddb816f8fa7578964..9ba52c1489275ea9c29b168cfc02705041b7f574 100644 (file)
@@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)braid.c     5.00 2000/11/01 xlockmore";
                                   "*fpsSolid: true \n" \
 
 # define UNIFORM_COLORS
                                   "*fpsSolid: true \n" \
 
 # define UNIFORM_COLORS
-# define reshape_braid 0
 # define braid_handle_event 0
 # include "xlockmore.h"
 # include "erase.h"
 # define braid_handle_event 0
 # include "xlockmore.h"
 # include "erase.h"
@@ -447,6 +446,13 @@ draw_braid(ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_braid(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_braid (mi);
+}
+
 ENTRYPOINT void
 release_braid(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_braid(ModeInfo * mi)
 {
index 5bfc225b1653b3a7f7e33f3b280ba614cc731cb2..ce2e496916d38eae5328a860a4702f67cf7b8a60 100644 (file)
@@ -2452,7 +2452,7 @@ hppa_linux (Display *dpy, Window window)
      { -1, "Soft power switch enabled, polling @ 0xf0400804.\n" },
      { -1, "pty: 256 Unix98 ptys configured\n" },
      { -1, "Generic RTC Driver v1.07\n" },
      { -1, "Soft power switch enabled, polling @ 0xf0400804.\n" },
      { -1, "pty: 256 Unix98 ptys configured\n" },
      { -1, "Generic RTC Driver v1.07\n" },
-     { -1, "Serial: 8250/16550 driver $Revision: 1.96 $ 13 ports, "
+     { -1, "Serial: 8250/16550 driver $Revision: 1.97 $ 13 ports, "
            "IRQ sharing disabled\n" },
      { -1, "ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A\n" },
      { -1, "ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A\n" },
            "IRQ sharing disabled\n" },
      { -1, "ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A\n" },
      { -1, "ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A\n" },
@@ -3922,6 +3922,8 @@ bsod_event (Display *dpy, Window window, void *closure, XEvent *event)
   /* pick a new mode and restart when mouse clicked, or certain keys typed. */
 
   if (event->type == ButtonPress)
   /* pick a new mode and restart when mouse clicked, or certain keys typed. */
 
   if (event->type == ButtonPress)
+    return True;
+  else if (event->type == ButtonRelease)
     reset_p = True;
   else if (event->type == KeyPress)
     {
     reset_p = True;
   else if (event->type == KeyPress)
     {
index 9e7e2de3ca53e197a0c03958a2cd5beb1e5624c2..6f547bea4f51ed2b46849d14e64455081a86364a 100644 (file)
@@ -813,6 +813,14 @@ static void
 ccurve_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 ccurve_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XWindowAttributes xgwa;
+  st->width = w;
+  st->height = h;
+  XGetWindowAttributes (st->dpy, st->window, &xgwa);
+  XFreePixmap (dpy, st->pixmap);
+  st->pixmap = XCreatePixmap (st->dpy, st->window, st->width, st->height,
+                              xgwa.depth);
 }
 
 static Bool
 }
 
 static Bool
index 231d8f7bed8551d853693a5c9c7ef0023b015407..165af0891d25615082b53f564a2b39be40f55974 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
 #!/usr/bin/perl -w
-# Copyright Â© 2008-2011 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2008-2012 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -19,7 +19,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
+my $version = q{ $Revision: 1.5 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
 
 my $verbose = 0;
 
 
 my $verbose = 0;
 
@@ -32,6 +32,12 @@ $xlockmore_default_opts .=
  "{\"-wireframe\", \".wireframe\", XrmoptionNoArg, \"true\"},\n" .
  "{\"-3d\", \".use3d\", XrmoptionNoArg, \"true\"},\n";
 
  "{\"-wireframe\", \".wireframe\", XrmoptionNoArg, \"true\"},\n" .
  "{\"-3d\", \".use3d\", XrmoptionNoArg, \"true\"},\n";
 
+my $analogtv_default_opts = '';
+foreach (qw(color tint brightness contrast)) {
+  $analogtv_default_opts .= "{\"-tv-$_\", \".TV$_\", XrmoptionSepArg, 0},\n";
+}
+
+
 
 # Returns two tables:
 # - A table of the default resource values.
 
 # Returns two tables:
 # - A table of the default resource values.
@@ -56,12 +62,13 @@ sub parse_src($) {
   close IN;
   $file =~ s@^.*/@@;
 
   close IN;
   $file =~ s@^.*/@@;
 
+  my $xlockmore_p = 0;
+  my $analogtv_p = ($body =~ m/ANALOGTV_DEFAULTS/);
+
   $body =~ s@/\*.*?\*/@@gs;
   $body =~ s@^#\s*(if|ifdef|ifndef|elif|else|endif).*$@@gm;
   $body =~ s/ANALOGTV_(DEFAULTS|OPTIONS)//gs;
 
   $body =~ s@/\*.*?\*/@@gs;
   $body =~ s@^#\s*(if|ifdef|ifndef|elif|else|endif).*$@@gm;
   $body =~ s/ANALOGTV_(DEFAULTS|OPTIONS)//gs;
 
-  my $xlockmore_p = 0;
-
   print STDERR "$progname: $file: defaults:\n" if ($verbose > 2);
   my %res_to_val;
   if ($body =~ m/_defaults\s*\[\]\s*=\s*{(.*?)}\s*;/s) {
   print STDERR "$progname: $file: defaults:\n" if ($verbose > 2);
   my %res_to_val;
   if ($body =~ m/_defaults\s*\[\]\s*=\s*{(.*?)}\s*;/s) {
@@ -116,9 +123,11 @@ sub parse_src($) {
   $switch_to_res{-fps}  = 'doFPS: true';
 
   my ($ign, $opts) = ($body =~ m/(_options|\bopts)\s*\[\]\s*=\s*{(.*?)}\s*;/s);
   $switch_to_res{-fps}  = 'doFPS: true';
 
   my ($ign, $opts) = ($body =~ m/(_options|\bopts)\s*\[\]\s*=\s*{(.*?)}\s*;/s);
-  if  ($xlockmore_p || $opts) {
+  if  ($xlockmore_p || $analogtv_p || $opts) {
     $opts = '' unless $opts;
     $opts .= ",\n$xlockmore_default_opts" if ($xlockmore_p);
     $opts = '' unless $opts;
     $opts .= ",\n$xlockmore_default_opts" if ($xlockmore_p);
+    $opts .= ",\n$analogtv_default_opts" if ($analogtv_p);
+
     foreach (split (/,\s*\n/, $opts)) {
       s/^\s*//s;
       s/\s*$//s;
     foreach (split (/,\s*\n/, $opts)) {
       s/^\s*//s;
       s/\s*$//s;
@@ -277,7 +286,10 @@ sub check_config($) {
     error ("$saver: unparsable xml claim: $_") unless $compare;
 
     my $sval = $src_opts->{$res};
     error ("$saver: unparsable xml claim: $_") unless $compare;
 
     my $sval = $src_opts->{$res};
-    if (!defined($sval)) {
+    if ($res =~ m/^TV/) {
+      print STDERR "$progname: $saver: OK: skipping \"$res\"\n"
+        if ($verbose > 1);
+    } elsif (!defined($sval)) {
       print STDERR "$progname: $saver: $res: not in source\n";
     } elsif ($compare eq '!='
              ? $sval eq $xval
       print STDERR "$progname: $saver: $res: not in source\n";
     } elsif ($compare eq '!='
              ? $sval eq $xval
index 5b9ba4990ec51febf325ae04183ec366d5bc14cf..415e7c0a499d2e69a6075386d9651d3ecc4a94d9 100644 (file)
@@ -933,6 +933,11 @@ static void
 compass_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 compass_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  st->size2 = MIN(st->xgwa.width, st->xgwa.height);
+  st->x = st->xgwa.width/2;
+  st->y = st->xgwa.height/2;
 }
 
 static Bool
 }
 
 static Bool
index 393addefcd01f122c4a11b387fcf30ba1dcb89a6..d1a1815a610a88465cacd80bc12a848105dde2f8 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 5.17
-                               22-Jun-2012
+                              version 5.18
+                               03-Jul-2012
 
                      http://www.jwz.org/xscreensaver/
 
 
                      http://www.jwz.org/xscreensaver/
 
index 409fa39b31fba7b9be7f1a70bdff115c9fa34a32..368d24a158ea3c14475ce87616ac8c1015dd48cf 100644 (file)
@@ -14,8 +14,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Draws an ant (with a headlight) who walks on top of an
-image of your desktop or other image.  
+Draws an ant (with a headlight) who walks around on top of a loaded image.
 
 Written by Blair Tennessy; 2003.
   </_description>
 
 Written by Blair Tennessy; 2003.
   </_description>
index 19a1340a0386f2a250d107e0bf6bcb2d50675076..a7d35bf94ed9a807382d0221cfc1ebea3c8ed48e 100644 (file)
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Packs the screen with growing squares or circles, colored according to a
-horizontal or vertical gradient, or according to the colors of the
-desktop or a loaded image file.  The objects grow until they touch,
-then stop.  When the screen is full, they shrink away and the process
-restarts.
+Packs the screen with growing squares or circles, colored according to
+a horizontal or vertical gradient, or according to the colors of a
+loaded image.  The objects grow until they touch, then stop.  When the
+screen is full, they shrink away and the process restarts.
 
 Written by Jamie Zawinski; 2005.
   </_description>
 
 Written by Jamie Zawinski; 2005.
   </_description>
index dc0c0f625c0fe70e6a958ebe0e2395d93227caf1..5c49021cd32729eb184a76624d7402ba486cebd3 100644 (file)
@@ -25,8 +25,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-A spotlight roams across an embossed version of your desktop or
-other picture.
+A spotlight roams across an embossed version of a loaded image.
 
 Written by Shane Smit; 1999.
   </_description>
 
 Written by Shane Smit; 1999.
   </_description>
index 3694be5383d40bb7cb65fd70607ba6480bdfc76e..9942905e7df78769163f955b9a550e36cfd9b7a8 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<screensaver name="DNAlogo" _label="DNA Logo">
+<screensaver name="DNAlogo" _label="DNA Logo" gl="yes">
 
   <command arg="-root"/>
 
 
   <command arg="-root"/>
 
index 4d5ec3d04df51fd878d035bca16c152261882006..662f8ff233fd1bbaffce9ac6e6b24bd0f2dbdea2 100644 (file)
@@ -16,7 +16,7 @@
   <xscreensaver-image />
 
   <_description>
   <xscreensaver-image />
 
   <_description>
-Grabs an image of the desktop and spins and deforms it in 3D.
+Spins and deforms an image.
 
 Written by Ben Buxton and Jamie Zawinski; 2001.
   </_description>
 
 Written by Ben Buxton and Jamie Zawinski; 2001.
   </_description>
index f9a4de44f89a7534fff390b971fbf6b32ae82f94..025fec8830397006e531c2292d7b62bdd78fca1e 100644 (file)
@@ -28,7 +28,7 @@
   <xscreensaver-image />
 
   <_description>
   <xscreensaver-image />
 
   <_description>
-A kaleidoscope that operates on your desktop image, or other pictures.
+A kaleidoscope that operates on a loaded image.
 
 http://en.wikipedia.org/wiki/Kaleidoscope
 
 
 http://en.wikipedia.org/wiki/Kaleidoscope
 
index e74396c9f459405818df8265cc6f63e8b85ec46b..6e665499531b325692aa458b36be1ce2745a5289 100644 (file)
@@ -22,7 +22,7 @@
 
     <number id="resolution" type="slider" arg="-resolution %"
              _label="Resolution" _low-label="Chunky" _high-label="Smooth"
 
     <number id="resolution" type="slider" arg="-resolution %"
              _label="Resolution" _low-label="Chunky" _high-label="Smooth"
-             low="25" high="200" default="100"/>
+             low="50" high="300" default="100"/>
    </vgroup>
   </hgroup>
 
    </vgroup>
   </hgroup>
 
@@ -37,8 +37,7 @@
   </hgroup>
 
   <_description>
   </hgroup>
 
   <_description>
-This grabs a screen image, carves it up into a jigsaw puzzle,
-shuffles it, and then solves the puzzle.
+This carves an image up into a jigsaw puzzle, shuffles it, and solves it.
 
 http://en.wikipedia.org/wiki/Jigsaw_puzzle
 http://en.wikipedia.org/wiki/Tessellation
 
 http://en.wikipedia.org/wiki/Jigsaw_puzzle
 http://en.wikipedia.org/wiki/Tessellation
index eae2c8507c13f1fa4f3ebe705fb4438fc000b262..6f08472069aa474afa842f6b511bf8bb07f9c7f9 100644 (file)
@@ -21,6 +21,9 @@
   <_description>
 A demonstration of the even-odd winding rule.
 
   <_description>
 A demonstration of the even-odd winding rule.
 
+http://en.wikipedia.org/wiki/Even-odd_rule
+http://en.wikipedia.org/wiki/Nonzero-rule
+
 Written by Dale Moore; 1995.
   </_description>
 </screensaver>
 Written by Dale Moore; 1995.
   </_description>
 </screensaver>
index 946eb1d72cf9e0be855dc4d5ddf0c367b562b16b..2fa82e23f5d06f75b9fadb38abce7f54708f6656 100644 (file)
   <hgroup>
    <boolean id="fisheye" _label="Fisheye lens" arg-unset="-no-fisheye"/>
    <boolean id="tight"   _label="Allow tight turns" arg-set="-tightturns"/>
   <hgroup>
    <boolean id="fisheye" _label="Fisheye lens" arg-unset="-no-fisheye"/>
    <boolean id="tight"   _label="Allow tight turns" arg-set="-tightturns"/>
-  <select id="style">
-    <option id="curves" _label="Curved pipes"   arg-set="-count 0"/>
+   <select id="style">
+    <option id="curves" _label="Curved pipes"   arg-set="-count 3"/>
     <option id="balls"  _label="Ball joints"    arg-set="-count 1"/>
     <option id="fit"    _label="Bolted fittings"/>
     <option id="balls"  _label="Ball joints"    arg-set="-count 1"/>
     <option id="fit"    _label="Bolted fittings"/>
-  </select>
-
+    <option id="random" _label="Random style"   arg-set="-count 0"/>
+   </select>
   </hgroup>
   </hgroup>
+
+  <hgroup>
    <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
    <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+   <boolean id="wire"    _label="Wireframe" arg-set="-wireframe"/>
+  </hgroup>
 
   <_description>
 A growing plumbing system, with bolts and valves.
 
   <_description>
 A growing plumbing system, with bolts and valves.
index 7ea18c7a1d399ff49de40cf34346af2264cabf2c..9d750f3dc30935b8f685f0aa366e0ef892bb0070 100644 (file)
@@ -43,8 +43,8 @@
   </hgroup>
 
   <_description>
   </hgroup>
 
   <_description>
-This draws rippling interference patterns like splashing water,
-overlayed on the desktop or an image.
+Rippling interference patterns reminiscent of splashing water
+distort a loaded image.
 
 Written by Tom Hammersley; 1999.
   </_description>
 
 Written by Tom Hammersley; 1999.
   </_description>
index 8669669910695807d0bfe40ab281a40874b5df8a..c2d5d8c52e4c4db860c4212d951778352f146926 100644 (file)
@@ -30,7 +30,7 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Creates a collage of rotated and scaled portions of the screen. 
+Distorts an image by rotating and scaling random sections of it.
 
 Written by Claudio Matsuoka; 2001.
   </_description>
 
 Written by Claudio Matsuoka; 2001.
   </_description>
index 2c006c76c1cac02f2a585b124a76b8ed7cffb5bf..21fcc28f2b2c523d3dd0c0c16a9604377f86c002 100644 (file)
@@ -16,6 +16,8 @@
              low="0.1" high="8.0" default="1.0"/>
 
     <select id="ping">
              low="0.1" high="8.0" default="1.0"/>
 
     <select id="ping">
+     <option id="sn" _label="Ping local subnet"/>
+<!--
      <option id="24" _label="Ping subnet/24 (254 hosts)" arg-set="-ping subnet/24"/>
      <option id="25" _label="Ping subnet/25 (126 hosts)" arg-set="-ping subnet/25"/>
      <option id="26" _label="Ping subnet/26 (62 hosts)"  arg-set="-ping subnet/26"/>
      <option id="24" _label="Ping subnet/24 (254 hosts)" arg-set="-ping subnet/24"/>
      <option id="25" _label="Ping subnet/25 (126 hosts)" arg-set="-ping subnet/25"/>
      <option id="26" _label="Ping subnet/26 (62 hosts)"  arg-set="-ping subnet/26"/>
      <option id="28" _label="Ping subnet/28 (14 hosts)"/>
      <option id="29" _label="Ping subnet/29 (6 hosts)"   arg-set="-ping subnet/29"/>
      <option id="30" _label="Ping subnet/30 (2 hosts)"   arg-set="-ping subnet/30"/>
      <option id="28" _label="Ping subnet/28 (14 hosts)"/>
      <option id="29" _label="Ping subnet/29 (6 hosts)"   arg-set="-ping subnet/29"/>
      <option id="30" _label="Ping subnet/30 (2 hosts)"   arg-set="-ping subnet/30"/>
+-->
+
      <option id="ssh" _label="Ping known SSH hosts"      arg-set="-ping /etc/hosts,$HOME/.ssh/known_hosts,$HOME/.ssh/known_hosts2"/>
      <option id="ssh" _label="Ping known SSH hosts"      arg-set="-ping /etc/hosts,$HOME/.ssh/known_hosts,$HOME/.ssh/known_hosts2"/>
-     <option id="ssh" _label="Simulation (don't ping)"   arg-set="-ping simulation"/>
+
+     <option id="popular" _label="Ping Google, Facebook, etc." arg-set="-ping google.com,facebook.com,twitter.com,yahoo.com,flickr.com,www.apple.com,wikipedia.org,linux.org,youtube.com,disqus.com,blogger.com,wordpress.com,tumblr.com,whitehouse.gov"/>
+
+     <option id="sim" _label="Simulation (don't ping)"   arg-set="-ping simulation"/>
     </select>
    </vgroup>
 
     </select>
    </vgroup>
 
@@ -67,7 +74,8 @@ milliseconds respectively.
 
 Alternately, it can run a simulation that doesn't involve hosts.
 
 
 Alternately, it can run a simulation that doesn't involve hosts.
 
-(If pinging doesn't work, you may need to make the executable be setuid.)
+(If pinging doesn't work on Linux, you may need to make the executable
+be setuid.)
 
 http://en.wikipedia.org/wiki/Ping#History
 
 
 http://en.wikipedia.org/wiki/Ping#History
 
index e77480bd883d738c234372e9219251669dff2d35..8c283a39540a4a3a8b0f721e0899dbf27b233ba3 100644 (file)
@@ -22,8 +22,8 @@
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
   <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
 
   <_description>
-Draws a spotlight scanning across a black screen, illuminating the
-underlying desktop (or a picture) when it passes.
+A spotlight scanning across a black screen, illuminating a loaded
+image when it passes.
 
 Written by Rick Schultz and Jamie Zawinski; 1999.
   </_description>
 
 Written by Rick Schultz and Jamie Zawinski; 1999.
   </_description>
index 7b4e482063e2419bda07b761199f3265c2de014e..62df14cda924e0d08202ed9a61b4b98e269d9a7b 100644 (file)
@@ -261,6 +261,8 @@ static void
 coral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 coral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  init_coral(st);
 }
 
 static Bool
 }
 
 static Bool
index 491577a2511944f2827768419f04c1dc35319d55..a1c501d84978099dd886ceb4dd11a3a531996ba0 100644 (file)
@@ -76,7 +76,6 @@ static const char sccsid[] = "@(#)crystal.c   4.12 98/09/10 xlockmore";
                                                 "*ncolors:               100   \n" \
                                                 "*fpsSolid:              true  \n" \
 
                                                 "*ncolors:               100   \n" \
                                                 "*fpsSolid:              true  \n" \
 
-# define reshape_crystal 0
 # define crystal_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define crystal_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1270,4 +1269,11 @@ init_crystal(ModeInfo * mi)
        XSetFunction(display, cryst->gc, GXcopy);
 }
 
        XSetFunction(display, cryst->gc, GXcopy);
 }
 
+ENTRYPOINT void
+reshape_crystal(ModeInfo * mi, int width, int height)
+{
+  release_crystal(mi);
+  init_crystal(mi);
+}
+
 XSCREENSAVER_MODULE ("Crystal", crystal)
 XSCREENSAVER_MODULE ("Crystal", crystal)
index cfb2a0a424d2e8d605c03ee48bcfe4be630dda25..42f8149a1d2d02dc79b4c30819886fc17a286af0 100644 (file)
@@ -40,6 +40,9 @@
 struct state {
   Display *dpy;
   Window window;
 struct state {
   Display *dpy;
   Window window;
+  XWindowAttributes xgwa;
+  Pixmap saved;
+  int saved_w, saved_h;
 
   int sizex, sizey;
   int delay;
 
   int sizex, sizey;
   int delay;
@@ -79,6 +82,7 @@ decayscreen_load_image (struct state *st)
   st->sizex = xgwa.width;
   st->sizey = xgwa.height;
   if (st->img_loader) abort();
   st->sizex = xgwa.width;
   st->sizey = xgwa.height;
   if (st->img_loader) abort();
+
   st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
                                             st->window, 0, 0);
 }
   st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
                                             st->window, 0, 0);
 }
@@ -88,7 +92,6 @@ decayscreen_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   XGCValues gcv;
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   XGCValues gcv;
-  XWindowAttributes xgwa;
   long gcflags;
   unsigned long bg;
   char *s;
   long gcflags;
   unsigned long bg;
   char *s;
@@ -125,15 +128,15 @@ decayscreen_init (Display *dpy, Window window)
   st->duration = get_integer_resource (st->dpy, "duration", "Seconds");
   if (st->duration < 1) st->duration = 1;
 
   st->duration = get_integer_resource (st->dpy, "duration", "Seconds");
   if (st->duration < 1) st->duration = 1;
 
-  XGetWindowAttributes (st->dpy, st->window, &xgwa);
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
 
   gcv.function = GXcopy;
   gcv.subwindow_mode = IncludeInferiors;
 
   gcv.function = GXcopy;
   gcv.subwindow_mode = IncludeInferiors;
-  bg = get_pixel_resource (st->dpy, xgwa.colormap, "background", "Background");
+  bg = get_pixel_resource (st->dpy, st->xgwa.colormap, "background", "Background");
   gcv.foreground = bg;
 
   gcflags = GCForeground | GCFunction;
   gcv.foreground = bg;
 
   gcflags = GCForeground | GCFunction;
-  if (use_subwindow_mode_p(xgwa.screen, st->window)) /* see grabscreen.c */
+  if (use_subwindow_mode_p(st->xgwa.screen, st->window)) /* see grabscreen.c */
     gcflags |= GCSubwindowMode;
   st->gc = XCreateGC (st->dpy, st->window, gcflags, &gcv);
 
     gcflags |= GCSubwindowMode;
   st->gc = XCreateGC (st->dpy, st->window, gcflags, &gcv);
 
@@ -181,6 +184,16 @@ decayscreen_draw (Display *dpy, Window window, void *closure)
           if (st->mode == MELT || st->mode == STRETCH)
             /* make sure screen eventually turns background color */
             XDrawLine (st->dpy, st->window, st->gc, 0, 0, st->sizex, 0); 
           if (st->mode == MELT || st->mode == STRETCH)
             /* make sure screen eventually turns background color */
             XDrawLine (st->dpy, st->window, st->gc, 0, 0, st->sizex, 0); 
+
+          if (!st->saved) {
+            st->saved = XCreatePixmap (st->dpy, st->window,
+                                       st->sizex, st->sizey,
+                                       st->xgwa.depth);
+            st->saved_w = st->sizex;
+            st->saved_h = st->sizey;
+          }
+          XCopyArea (st->dpy, st->window, st->saved, st->gc, 0, 0,
+                     st->sizex, st->sizey, 0, 0);
         }
       return st->delay;
     }
         }
       return st->delay;
     }
@@ -316,6 +329,11 @@ decayscreen_reshape (Display *dpy, Window window, void *closure,
                  unsigned int w, unsigned int h)
 {
   struct state *st = (struct state *) closure;
                  unsigned int w, unsigned int h)
 {
   struct state *st = (struct state *) closure;
+  XClearWindow (st->dpy, st->window);
+  XCopyArea (st->dpy, st->saved, st->window, st->gc,
+             0, 0, st->saved_w, st->saved_h,
+             (w - st->saved_w) / 2,
+             (h - st->saved_h) / 2);
   st->sizex = w;
   st->sizey = h;
 }
   st->sizex = w;
   st->sizey = h;
 }
index ab7a19b9fc79d77e0a6ebe682e0496406634e253..3d35dca5aef3b6f52cddbdf4a2f287c975b1fd4a 100644 (file)
@@ -59,7 +59,6 @@ static const char sccsid[] = "@(#)demon.c     5.00 2000/11/01 xlockmore";
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
-# define reshape_demon 0
 # define demon_handle_event 0
 # define UNIFORM_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # define demon_handle_event 0
 # define UNIFORM_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -947,6 +946,14 @@ draw_demon (ModeInfo * mi)
 }
 
 
 }
 
 
+ENTRYPOINT void
+reshape_demon(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_demon (mi);
+}
+
+
 ENTRYPOINT void
 release_demon (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_demon (ModeInfo * mi)
 {
index 34c17671cc9534901ad693620e42f1d57a45e543..1746f726c2e08653c9c0b79de3ccd92dfd5c2aea 100644 (file)
@@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)discrete.c  5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_discrete 0
 # define discrete_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
 # define discrete_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -423,6 +422,15 @@ draw_discrete (ModeInfo * mi)
 }
 
 
 }
 
 
+ENTRYPOINT void
+reshape_discrete(ModeInfo * mi, int width, int height)
+{
+  discretestruct *hp = &discretes[MI_SCREEN(mi)];
+  hp->maxx = width;
+  hp->maxy = height;
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
 ENTRYPOINT void
 release_discrete(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_discrete(ModeInfo * mi)
 {
index 4e4c809e63cf4a9fd23f05f673c5b23c93e27f33..92cc0de32b7e801369ff93b5916e32cb084fcc11 100644 (file)
@@ -781,6 +781,12 @@ static void
 distort_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 distort_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  /* XClearWindow (dpy, window); */
+  /* Why doesn't this work? */
+  XPutImage (st->dpy, st->window, st->gc, st->orig_map,
+             0, 0, st->orig_map->width, st->orig_map->height, 0, 0);
 }
 
 static Bool
 }
 
 static Bool
index 56e89b0a1ef85aa61372448008d00dfb8bd7c198..711bc09e96991348213b0b49e5af500fcd4e42b8 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)drift.c     5.00 2000/11/01 xlockmore";
                                  "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
                                  "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_drift 0
 # define drift_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
 # define drift_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # include "erase.h"
@@ -684,6 +683,13 @@ release_drift(ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_drift(ModeInfo * mi, int width, int height)
+{
+  MI_CLEARWINDOW(mi);
+  init_drift (mi);
+}
+
 ENTRYPOINT void
 refresh_drift(ModeInfo * mi)
 {
 ENTRYPOINT void
 refresh_drift(ModeInfo * mi)
 {
index 03b9645ecf48b9153bf544fb363dcd07ecaf04ef..5749aa6d7692e0f720f3ee50b6025068fcc66449 100644 (file)
@@ -449,6 +449,21 @@ static void
 eruption_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 eruption_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+#if 0
+  struct state *st = (struct state *) closure;
+  int i;
+  for (i = 0; i < st->iWinHeight; ++i)
+    free (st->fire[i]);
+
+  st->iWinWidth = w;
+  st->iWinHeight = h;
+
+  free (st->fire);
+  st->fire = calloc( st->iWinHeight, sizeof(unsigned char*));
+  for (i = 0; i < st->iWinHeight; ++i)
+    st->fire[i] = calloc( st->iWinWidth, sizeof(unsigned char));
+  st->draw_i = -1;
+#endif
 }
 
 static Bool
 }
 
 static Bool
index bb3054d19be3c7e2f5ca630e14a8493c0052336b..2a3700bf4053c5a1e8c9501126647302acc011f6 100644 (file)
@@ -48,7 +48,6 @@ static const char sccsid[] = "@(#)euler2d.c   5.00 2000/11/01 xlockmore";
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
                                        "*ncolors: 64    \n" \
                                        "*fpsSolid: true    \n" \
 
-# define reshape_euler2d 0
 # define euler2d_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # define euler2d_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -857,6 +856,13 @@ draw_euler2d (ModeInfo * mi)
 
 }
 
 
 }
 
+ENTRYPOINT void
+reshape_euler2d(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_euler2d (mi);
+}
+
 ENTRYPOINT void
 release_euler2d (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_euler2d (ModeInfo * mi)
 {
index babec31c6efb7d72deedde20bd545e387f21cae8..9fa65f8f13f10acb2ff58f6304c194683d7c9d56 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)fadeplot.c  5.00 2000/11/01 xlockmore";
 
 # define BRIGHT_COLORS
 # define UNIFORM_COLORS
 
 # define BRIGHT_COLORS
 # define UNIFORM_COLORS
-# define reshape_fadeplot 0
 # define fadeplot_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define fadeplot_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -212,10 +211,20 @@ draw_fadeplot (ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_fadeplot(ModeInfo * mi, int width, int height)
+{
+       fadeplotstruct *fp = &fadeplots[MI_SCREEN(mi)];
+    fp->width  = width;
+    fp->height = height;
+       fp->min = MAX(MIN(fp->width, fp->height) / 2, 1);
+       fp->factor.x = MAX(fp->width / (2 * fp->min), 1);
+       fp->factor.y = MAX(fp->height / (2 * fp->min), 1);
+}
+
 ENTRYPOINT void
 refresh_fadeplot (ModeInfo * mi)
 {
 ENTRYPOINT void
 refresh_fadeplot (ModeInfo * mi)
 {
-       MI_CLEARWINDOW(mi);
 }
 
 ENTRYPOINT void
 }
 
 ENTRYPOINT void
index 1cd68094b7ec6e641616a71488f6b8218b4fc785..351ca0002fca3df1a015a5e148e9eb72ecb3a5c1 100644 (file)
@@ -268,7 +268,7 @@ make_flag_bits(ModeInfo *mi)
 # if defined(_AIX)
                          sprintf(text, "%s\n%s %s.%s",
                                          uts.nodename, uts.sysname, uts.version, uts.release);
 # if defined(_AIX)
                          sprintf(text, "%s\n%s %s.%s",
                                          uts.nodename, uts.sysname, uts.version, uts.release);
-#  elif defined(__APPLE__)  /* MacOS X + XDarwin */
+#  elif defined(__APPLE__) && !defined(USE_IPHONE)  /* MacOS X + XDarwin */
               {
                 const char *file = 
                   "/System/Library/CoreServices/SystemVersion.plist";
               {
                 const char *file = 
                   "/System/Library/CoreServices/SystemVersion.plist";
index 46570ea9194e9a806cf55453619b51f426ea448f..eed6287cefd3a6141475b8100533527789d6fb8a 100644 (file)
@@ -434,6 +434,9 @@ static void
 flame_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 flame_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
 }
 
 static Bool
 }
 
 static Bool
index a2c819916bc98ec32b5b780022bb1e9d71484373..794776f1200cba66fe36e633095b93bf2d5f33ad 100644 (file)
@@ -104,7 +104,6 @@ static const char sccsid[] = "@(#)flow.c    5.00 2000/11/01 xlockmore";
                                        "*cycles:      10000 \n" \
                                        "*ncolors:     200   \n"
 
                                        "*cycles:      10000 \n" \
                                        "*ncolors:     200   \n"
 
-# define reshape_flow 0
 # define flow_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define flow_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1201,6 +1200,13 @@ draw_flow (ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_flow(ModeInfo * mi, int width, int height)
+{
+  init_flow (mi);
+}
+
+
 ENTRYPOINT void
 release_flow (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_flow (ModeInfo * mi)
 {
index 6a72738e508dda81b089ba216c6e082809ff7e97..43a0b5bf49500f609d58bbc90393bda0d5b5ae48 100644 (file)
@@ -47,7 +47,6 @@ static const char sccsid[] = "@(#)galaxy.c 4.04 97/07/28 xlockmore";
                                        "*fpsSolid:  true   \n" \
 
 # define UNIFORM_COLORS
                                        "*fpsSolid:  true   \n" \
 
 # define UNIFORM_COLORS
-# define reshape_galaxy 0
 # define galaxy_handle_event 0
 # include "xlockmore.h"    /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 # define galaxy_handle_event 0
 # include "xlockmore.h"    /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -440,6 +439,13 @@ draw_galaxy(ModeInfo * mi)
     startover(mi);
 }
 
     startover(mi);
 }
 
+ENTRYPOINT void
+reshape_galaxy(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_galaxy (mi);
+}
+
 ENTRYPOINT void
 release_galaxy(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_galaxy(ModeInfo * mi)
 {
index 36a0bb18f0ea2f735d9c658a1ba4dd213eb85361..9f256641cc61ad4ec53c37c4d8c6e2ca64bf97da 100644 (file)
@@ -203,7 +203,7 @@ HDRS                = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
                  texfont.h tangram_shapes.h sproingies.h extrusion.h \
                  glschool.h glschool_gl.h glschool_alg.h topblock.h \
                  involute.h teapot.h sonar.h dropshadow.h starwars.h \
                  texfont.h tangram_shapes.h sproingies.h extrusion.h \
                  glschool.h glschool_gl.h glschool_alg.h topblock.h \
                  involute.h teapot.h sonar.h dropshadow.h starwars.h \
-                 jwzgles.h jwzglesI.h
+                 jwzgles.h jwzglesI.h teapot2.h dnapizza.h
 GL_MEN         = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  cubenetic.man dangerball.man engine.man extrusion.man \
                  flipscreen3d.man gears.man gflux.man \
 GL_MEN         = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  cubenetic.man dangerball.man engine.man extrusion.man \
                  flipscreen3d.man gears.man gflux.man \
@@ -525,9 +525,9 @@ MOEBIUS_OBJS=sphere.o tube.o xpm-ximage.o $(HACK_TRACK_OBJS)
 moebius:       moebius.o       $(MOEBIUS_OBJS)
        $(CC_HACK) -o $@ $@.o   $(MOEBIUS_OBJS) $(HACK_LIBS) $(XPM_LIBS)
 
 moebius:       moebius.o       $(MOEBIUS_OBJS)
        $(CC_HACK) -o $@ $@.o   $(MOEBIUS_OBJS) $(HACK_LIBS) $(XPM_LIBS)
 
-PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o
-pipes:         pipes.o         $(PIPE_OBJS) $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(PIPE_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o normals.o
+pipes:         pipes.o         $(PIPE_OBJS) $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(PIPE_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 superquadrics: superquadrics.o $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
 superquadrics: superquadrics.o $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
@@ -535,8 +535,8 @@ superquadrics:      superquadrics.o $(HACK_OBJS)
 morph3d:       morph3d.o       $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
 morph3d:       morph3d.o       $(HACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
 
-rubik:         rubik.o         $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+rubik:         rubik.o         $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 stairs:                stairs.o        sphere.o xpm-ximage.o $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   sphere.o xpm-ximage.o $(HACK_TRACK_OBJS) \
 
 stairs:                stairs.o        sphere.o xpm-ximage.o $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   sphere.o xpm-ximage.o $(HACK_TRACK_OBJS) \
@@ -580,7 +580,8 @@ SW_OBJS=starwars.o glut_stroke.o glut_swidth.o \
 starwars:                      $(SW_OBJS)
        $(CC_HACK) -o $@        $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
 starwars:                      $(SW_OBJS)
        $(CC_HACK) -o $@        $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
-GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o $(TEXT) $(HACK_TRACK_OBJS)
+GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o sphere.o \
+        $(TEXT) $(HACK_TRACK_OBJS)
 gltext:                                $(GLT_OBJS)
        $(CC_HACK) -o $@        $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
 gltext:                                $(GLT_OBJS)
        $(CC_HACK) -o $@        $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS)
 
@@ -746,8 +747,8 @@ crackberg:  crackberg.o     $(HACK_OBJS)
 glhanoi:       glhanoi.o       $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 glhanoi:       glhanoi.o       $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
-cube21:                cube21.o        $(HACK_OBJS)
-       $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(HACK_LIBS)
+cube21:                cube21.o        $(HACK_TRACK_OBJS)
+       $(CC_HACK) -o $@ $@.o   $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
 TIMETUNNEL_OBJS = xpm-ximage.o  $(HACK_TRACK_OBJS)
 timetunnel:    timetunnel.o    $(TIMETUNNEL_OBJS)
 
 TIMETUNNEL_OBJS = xpm-ximage.o  $(HACK_TRACK_OBJS)
 timetunnel:    timetunnel.o    $(TIMETUNNEL_OBJS)
@@ -791,7 +792,8 @@ SONAR_OBJS=sonar-sim.o sonar-icmp.o ${FONT_OBJS} $(HACK_TRACK_OBJS)
 sonar:         sonar.o         $(SONAR_OBJS)
        $(CC_HACK) -o $@ $@.o   $(SONAR_OBJS) $(HACK_LIBS)
 
 sonar:         sonar.o         $(SONAR_OBJS)
        $(CC_HACK) -o $@ $@.o   $(SONAR_OBJS) $(HACK_LIBS)
 
-JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS)
+JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o \
+       ${FONT_OBJS} $(HACK_TRACK_GRAB_OBJS)
 jigsaw:                jigsaw.o        $(JIGSAW_OBJS)
        $(CC_HACK) -o $@ $@.o   $(JIGSAW_OBJS) $(HACK_LIBS)
 
 jigsaw:                jigsaw.o        $(JIGSAW_OBJS)
        $(CC_HACK) -o $@ $@.o   $(JIGSAW_OBJS) $(HACK_LIBS)
 
@@ -823,8 +825,10 @@ tronbit:                   $(TBIT_OBJS)
 antinspect.o: ../../config.h
 antinspect.o: $(HACK_SRC)/fps.h
 antinspect.o: $(srcdir)/gltrackball.h
 antinspect.o: ../../config.h
 antinspect.o: $(HACK_SRC)/fps.h
 antinspect.o: $(srcdir)/gltrackball.h
+antinspect.o: $(srcdir)/jwzglesI.h
 antinspect.o: $(srcdir)/jwzgles.h
 antinspect.o: $(HACK_SRC)/screenhackI.h
 antinspect.o: $(srcdir)/jwzgles.h
 antinspect.o: $(HACK_SRC)/screenhackI.h
+antinspect.o: $(srcdir)/sphere.h
 antinspect.o: $(UTILS_SRC)/colors.h
 antinspect.o: $(UTILS_SRC)/grabscreen.h
 antinspect.o: $(UTILS_SRC)/hsv.h
 antinspect.o: $(UTILS_SRC)/colors.h
 antinspect.o: $(UTILS_SRC)/grabscreen.h
 antinspect.o: $(UTILS_SRC)/hsv.h
@@ -839,9 +843,12 @@ antmaze.o: $(srcdir)/ants.h
 antmaze.o: ../../config.h
 antmaze.o: $(HACK_SRC)/fps.h
 antmaze.o: $(srcdir)/gltrackball.h
 antmaze.o: ../../config.h
 antmaze.o: $(HACK_SRC)/fps.h
 antmaze.o: $(srcdir)/gltrackball.h
+antmaze.o: $(srcdir)/jwzglesI.h
 antmaze.o: $(srcdir)/jwzgles.h
 antmaze.o: $(srcdir)/rotator.h
 antmaze.o: $(HACK_SRC)/screenhackI.h
 antmaze.o: $(srcdir)/jwzgles.h
 antmaze.o: $(srcdir)/rotator.h
 antmaze.o: $(HACK_SRC)/screenhackI.h
+antmaze.o: $(srcdir)/sphere.h
+antmaze.o: $(srcdir)/tube.h
 antmaze.o: $(UTILS_SRC)/colors.h
 antmaze.o: $(UTILS_SRC)/grabscreen.h
 antmaze.o: $(UTILS_SRC)/hsv.h
 antmaze.o: $(UTILS_SRC)/colors.h
 antmaze.o: $(UTILS_SRC)/grabscreen.h
 antmaze.o: $(UTILS_SRC)/hsv.h
@@ -857,9 +864,12 @@ antspotlight.o: ../../config.h
 antspotlight.o: $(HACK_SRC)/fps.h
 antspotlight.o: $(srcdir)/gltrackball.h
 antspotlight.o: $(srcdir)/grab-ximage.h
 antspotlight.o: $(HACK_SRC)/fps.h
 antspotlight.o: $(srcdir)/gltrackball.h
 antspotlight.o: $(srcdir)/grab-ximage.h
+antspotlight.o: $(srcdir)/jwzglesI.h
 antspotlight.o: $(srcdir)/jwzgles.h
 antspotlight.o: $(srcdir)/rotator.h
 antspotlight.o: $(HACK_SRC)/screenhackI.h
 antspotlight.o: $(srcdir)/jwzgles.h
 antspotlight.o: $(srcdir)/rotator.h
 antspotlight.o: $(HACK_SRC)/screenhackI.h
+antspotlight.o: $(srcdir)/sphere.h
+antspotlight.o: $(srcdir)/tube.h
 antspotlight.o: $(UTILS_SRC)/colors.h
 antspotlight.o: $(UTILS_SRC)/grabscreen.h
 antspotlight.o: $(UTILS_SRC)/hsv.h
 antspotlight.o: $(UTILS_SRC)/colors.h
 antspotlight.o: $(UTILS_SRC)/grabscreen.h
 antspotlight.o: $(UTILS_SRC)/hsv.h
@@ -874,6 +884,7 @@ atlantis.o: $(srcdir)/atlantis.h
 atlantis.o: ../../config.h
 atlantis.o: $(HACK_SRC)/fps.h
 atlantis.o: $(HACK_SRC)/images/sea-texture.xpm
 atlantis.o: ../../config.h
 atlantis.o: $(HACK_SRC)/fps.h
 atlantis.o: $(HACK_SRC)/images/sea-texture.xpm
+atlantis.o: $(srcdir)/jwzglesI.h
 atlantis.o: $(srcdir)/jwzgles.h
 atlantis.o: $(HACK_SRC)/screenhackI.h
 atlantis.o: $(UTILS_SRC)/colors.h
 atlantis.o: $(srcdir)/jwzgles.h
 atlantis.o: $(HACK_SRC)/screenhackI.h
 atlantis.o: $(UTILS_SRC)/colors.h
@@ -895,6 +906,7 @@ atunnel.o: $(HACK_SRC)/images/tunnel2.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel3.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel4.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel5.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel3.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel4.xpm
 atunnel.o: $(HACK_SRC)/images/tunnel5.xpm
+atunnel.o: $(srcdir)/jwzglesI.h
 atunnel.o: $(srcdir)/jwzgles.h
 atunnel.o: $(HACK_SRC)/screenhackI.h
 atunnel.o: $(srcdir)/tunnel_draw.h
 atunnel.o: $(srcdir)/jwzgles.h
 atunnel.o: $(HACK_SRC)/screenhackI.h
 atunnel.o: $(srcdir)/tunnel_draw.h
@@ -912,6 +924,7 @@ atunnel.o: $(srcdir)/xpm-ximage.h
 b_draw.o: $(srcdir)/bubble3d.h
 b_draw.o: ../../config.h
 b_draw.o: $(HACK_SRC)/fps.h
 b_draw.o: $(srcdir)/bubble3d.h
 b_draw.o: ../../config.h
 b_draw.o: $(HACK_SRC)/fps.h
+b_draw.o: $(srcdir)/jwzglesI.h
 b_draw.o: $(srcdir)/jwzgles.h
 b_draw.o: $(HACK_SRC)/screenhackI.h
 b_draw.o: $(UTILS_SRC)/colors.h
 b_draw.o: $(srcdir)/jwzgles.h
 b_draw.o: $(HACK_SRC)/screenhackI.h
 b_draw.o: $(UTILS_SRC)/colors.h
@@ -925,6 +938,7 @@ b_draw.o: $(UTILS_SRC)/yarandom.h
 b_draw.o: $(HACK_SRC)/xlockmoreI.h
 blinkbox.o: ../../config.h
 blinkbox.o: $(HACK_SRC)/fps.h
 b_draw.o: $(HACK_SRC)/xlockmoreI.h
 blinkbox.o: ../../config.h
 blinkbox.o: $(HACK_SRC)/fps.h
+blinkbox.o: $(srcdir)/jwzglesI.h
 blinkbox.o: $(srcdir)/jwzgles.h
 blinkbox.o: $(HACK_SRC)/screenhackI.h
 blinkbox.o: $(srcdir)/sphere.h
 blinkbox.o: $(srcdir)/jwzgles.h
 blinkbox.o: $(HACK_SRC)/screenhackI.h
 blinkbox.o: $(srcdir)/sphere.h
@@ -941,6 +955,7 @@ blinkbox.o: $(HACK_SRC)/xlockmore.h
 b_lockglue.o: $(srcdir)/bubble3d.h
 b_lockglue.o: ../../config.h
 b_lockglue.o: $(HACK_SRC)/fps.h
 b_lockglue.o: $(srcdir)/bubble3d.h
 b_lockglue.o: ../../config.h
 b_lockglue.o: $(HACK_SRC)/fps.h
+b_lockglue.o: $(srcdir)/jwzglesI.h
 b_lockglue.o: $(srcdir)/jwzgles.h
 b_lockglue.o: $(HACK_SRC)/screenhackI.h
 b_lockglue.o: $(UTILS_SRC)/colors.h
 b_lockglue.o: $(srcdir)/jwzgles.h
 b_lockglue.o: $(HACK_SRC)/screenhackI.h
 b_lockglue.o: $(UTILS_SRC)/colors.h
@@ -956,6 +971,7 @@ b_lockglue.o: $(HACK_SRC)/xlockmore.h
 blocktube.o: ../../config.h
 blocktube.o: $(HACK_SRC)/fps.h
 blocktube.o: $(HACK_SRC)/images/blocktube.xpm
 blocktube.o: ../../config.h
 blocktube.o: $(HACK_SRC)/fps.h
 blocktube.o: $(HACK_SRC)/images/blocktube.xpm
+blocktube.o: $(srcdir)/jwzglesI.h
 blocktube.o: $(srcdir)/jwzgles.h
 blocktube.o: $(HACK_SRC)/screenhackI.h
 blocktube.o: $(UTILS_SRC)/colors.h
 blocktube.o: $(srcdir)/jwzgles.h
 blocktube.o: $(HACK_SRC)/screenhackI.h
 blocktube.o: $(UTILS_SRC)/colors.h
@@ -972,6 +988,7 @@ blocktube.o: $(srcdir)/xpm-ximage.h
 boing.o: ../../config.h
 boing.o: $(HACK_SRC)/fps.h
 boing.o: $(srcdir)/gltrackball.h
 boing.o: ../../config.h
 boing.o: $(HACK_SRC)/fps.h
 boing.o: $(srcdir)/gltrackball.h
+boing.o: $(srcdir)/jwzglesI.h
 boing.o: $(srcdir)/jwzgles.h
 boing.o: $(HACK_SRC)/screenhackI.h
 boing.o: $(UTILS_SRC)/colors.h
 boing.o: $(srcdir)/jwzgles.h
 boing.o: $(HACK_SRC)/screenhackI.h
 boing.o: $(UTILS_SRC)/colors.h
@@ -988,6 +1005,7 @@ bouncingcow.o: ../../config.h
 bouncingcow.o: $(HACK_SRC)/fps.h
 bouncingcow.o: $(srcdir)/gllist.h
 bouncingcow.o: $(srcdir)/gltrackball.h
 bouncingcow.o: $(HACK_SRC)/fps.h
 bouncingcow.o: $(srcdir)/gllist.h
 bouncingcow.o: $(srcdir)/gltrackball.h
+bouncingcow.o: $(srcdir)/jwzglesI.h
 bouncingcow.o: $(srcdir)/jwzgles.h
 bouncingcow.o: $(srcdir)/rotator.h
 bouncingcow.o: $(HACK_SRC)/screenhackI.h
 bouncingcow.o: $(srcdir)/jwzgles.h
 bouncingcow.o: $(srcdir)/rotator.h
 bouncingcow.o: $(HACK_SRC)/screenhackI.h
@@ -1005,6 +1023,7 @@ bouncingcow.o: $(srcdir)/xpm-ximage.h
 boxed.o: $(srcdir)/boxed.h
 boxed.o: ../../config.h
 boxed.o: $(HACK_SRC)/fps.h
 boxed.o: $(srcdir)/boxed.h
 boxed.o: ../../config.h
 boxed.o: $(HACK_SRC)/fps.h
+boxed.o: $(srcdir)/jwzglesI.h
 boxed.o: $(srcdir)/jwzgles.h
 boxed.o: $(HACK_SRC)/screenhackI.h
 boxed.o: $(UTILS_SRC)/colors.h
 boxed.o: $(srcdir)/jwzgles.h
 boxed.o: $(HACK_SRC)/screenhackI.h
 boxed.o: $(UTILS_SRC)/colors.h
@@ -1020,6 +1039,7 @@ boxed.o: $(HACK_SRC)/xlockmore.h
 b_sphere.o: $(srcdir)/bubble3d.h
 b_sphere.o: ../../config.h
 b_sphere.o: $(HACK_SRC)/fps.h
 b_sphere.o: $(srcdir)/bubble3d.h
 b_sphere.o: ../../config.h
 b_sphere.o: $(HACK_SRC)/fps.h
+b_sphere.o: $(srcdir)/jwzglesI.h
 b_sphere.o: $(srcdir)/jwzgles.h
 b_sphere.o: $(HACK_SRC)/screenhackI.h
 b_sphere.o: $(UTILS_SRC)/colors.h
 b_sphere.o: $(srcdir)/jwzgles.h
 b_sphere.o: $(HACK_SRC)/screenhackI.h
 b_sphere.o: $(UTILS_SRC)/colors.h
@@ -1034,6 +1054,7 @@ b_sphere.o: $(HACK_SRC)/xlockmoreI.h
 bubble3d.o: $(srcdir)/bubble3d.h
 bubble3d.o: ../../config.h
 bubble3d.o: $(HACK_SRC)/fps.h
 bubble3d.o: $(srcdir)/bubble3d.h
 bubble3d.o: ../../config.h
 bubble3d.o: $(HACK_SRC)/fps.h
+bubble3d.o: $(srcdir)/jwzglesI.h
 bubble3d.o: $(srcdir)/jwzgles.h
 bubble3d.o: $(HACK_SRC)/screenhackI.h
 bubble3d.o: $(UTILS_SRC)/colors.h
 bubble3d.o: $(srcdir)/jwzgles.h
 bubble3d.o: $(HACK_SRC)/screenhackI.h
 bubble3d.o: $(UTILS_SRC)/colors.h
@@ -1046,9 +1067,13 @@ bubble3d.o: $(UTILS_SRC)/xshm.h
 bubble3d.o: $(UTILS_SRC)/yarandom.h
 bubble3d.o: $(HACK_SRC)/xlockmoreI.h
 buildlwo.o: $(srcdir)/buildlwo.h
 bubble3d.o: $(UTILS_SRC)/yarandom.h
 bubble3d.o: $(HACK_SRC)/xlockmoreI.h
 buildlwo.o: $(srcdir)/buildlwo.h
+buildlwo.o: ../../config.h
+buildlwo.o: $(srcdir)/jwzglesI.h
+buildlwo.o: $(srcdir)/jwzgles.h
 cage.o: ../../config.h
 cage.o: ../../config.h
-cage.o: $(srcdir)/e_textures.h
 cage.o: $(HACK_SRC)/fps.h
 cage.o: $(HACK_SRC)/fps.h
+cage.o: $(HACK_SRC)/images/wood.xpm
+cage.o: $(srcdir)/jwzglesI.h
 cage.o: $(srcdir)/jwzgles.h
 cage.o: $(HACK_SRC)/screenhackI.h
 cage.o: $(UTILS_SRC)/colors.h
 cage.o: $(srcdir)/jwzgles.h
 cage.o: $(HACK_SRC)/screenhackI.h
 cage.o: $(UTILS_SRC)/colors.h
@@ -1061,10 +1086,12 @@ cage.o: $(UTILS_SRC)/xshm.h
 cage.o: $(UTILS_SRC)/yarandom.h
 cage.o: $(HACK_SRC)/xlockmoreI.h
 cage.o: $(HACK_SRC)/xlockmore.h
 cage.o: $(UTILS_SRC)/yarandom.h
 cage.o: $(HACK_SRC)/xlockmoreI.h
 cage.o: $(HACK_SRC)/xlockmore.h
+cage.o: $(srcdir)/xpm-ximage.h
 carousel.o: ../../config.h
 carousel.o: $(HACK_SRC)/fps.h
 carousel.o: $(srcdir)/gltrackball.h
 carousel.o: $(srcdir)/grab-ximage.h
 carousel.o: ../../config.h
 carousel.o: $(HACK_SRC)/fps.h
 carousel.o: $(srcdir)/gltrackball.h
 carousel.o: $(srcdir)/grab-ximage.h
+carousel.o: $(srcdir)/jwzglesI.h
 carousel.o: $(srcdir)/jwzgles.h
 carousel.o: $(srcdir)/rotator.h
 carousel.o: $(HACK_SRC)/screenhackI.h
 carousel.o: $(srcdir)/jwzgles.h
 carousel.o: $(srcdir)/rotator.h
 carousel.o: $(HACK_SRC)/screenhackI.h
@@ -1080,9 +1107,13 @@ carousel.o: $(UTILS_SRC)/yarandom.h
 carousel.o: $(HACK_SRC)/xlockmoreI.h
 carousel.o: $(HACK_SRC)/xlockmore.h
 chessmodels.o: $(srcdir)/chessmodels.h
 carousel.o: $(HACK_SRC)/xlockmoreI.h
 carousel.o: $(HACK_SRC)/xlockmore.h
 chessmodels.o: $(srcdir)/chessmodels.h
+chessmodels.o: ../../config.h
+chessmodels.o: $(srcdir)/jwzglesI.h
+chessmodels.o: $(srcdir)/jwzgles.h
 circuit.o: ../../config.h
 circuit.o: $(srcdir)/font-ximage.h
 circuit.o: $(HACK_SRC)/fps.h
 circuit.o: ../../config.h
 circuit.o: $(srcdir)/font-ximage.h
 circuit.o: $(HACK_SRC)/fps.h
+circuit.o: $(srcdir)/jwzglesI.h
 circuit.o: $(srcdir)/jwzgles.h
 circuit.o: $(HACK_SRC)/screenhackI.h
 circuit.o: $(UTILS_SRC)/colors.h
 circuit.o: $(srcdir)/jwzgles.h
 circuit.o: $(HACK_SRC)/screenhackI.h
 circuit.o: $(UTILS_SRC)/colors.h
@@ -1095,12 +1126,19 @@ circuit.o: $(UTILS_SRC)/xshm.h
 circuit.o: $(UTILS_SRC)/yarandom.h
 circuit.o: $(HACK_SRC)/xlockmoreI.h
 circuit.o: $(HACK_SRC)/xlockmore.h
 circuit.o: $(UTILS_SRC)/yarandom.h
 circuit.o: $(HACK_SRC)/xlockmoreI.h
 circuit.o: $(HACK_SRC)/xlockmore.h
+companion_disc.o: ../../config.h
 companion_disc.o: $(srcdir)/gllist.h
 companion_disc.o: $(srcdir)/gllist.h
+companion_disc.o: $(srcdir)/jwzglesI.h
+companion_disc.o: $(srcdir)/jwzgles.h
+companion_heart.o: ../../config.h
 companion_heart.o: $(srcdir)/gllist.h
 companion_heart.o: $(srcdir)/gllist.h
+companion_heart.o: $(srcdir)/jwzglesI.h
+companion_heart.o: $(srcdir)/jwzgles.h
 companion.o: ../../config.h
 companion.o: $(HACK_SRC)/fps.h
 companion.o: $(srcdir)/gllist.h
 companion.o: $(srcdir)/gltrackball.h
 companion.o: ../../config.h
 companion.o: $(HACK_SRC)/fps.h
 companion.o: $(srcdir)/gllist.h
 companion.o: $(srcdir)/gltrackball.h
+companion.o: $(srcdir)/jwzglesI.h
 companion.o: $(srcdir)/jwzgles.h
 companion.o: $(srcdir)/rotator.h
 companion.o: $(HACK_SRC)/screenhackI.h
 companion.o: $(srcdir)/jwzgles.h
 companion.o: $(srcdir)/rotator.h
 companion.o: $(HACK_SRC)/screenhackI.h
@@ -1115,15 +1153,37 @@ companion.o: $(UTILS_SRC)/yarandom.h
 companion.o: $(HACK_SRC)/xlockmoreI.h
 companion.o: $(HACK_SRC)/xlockmore.h
 companion.o: $(srcdir)/xpm-ximage.h
 companion.o: $(HACK_SRC)/xlockmoreI.h
 companion.o: $(HACK_SRC)/xlockmore.h
 companion.o: $(srcdir)/xpm-ximage.h
+companion_quad.o: ../../config.h
 companion_quad.o: $(srcdir)/gllist.h
 companion_quad.o: $(srcdir)/gllist.h
+companion_quad.o: $(srcdir)/jwzglesI.h
+companion_quad.o: $(srcdir)/jwzgles.h
+cow_face.o: ../../config.h
 cow_face.o: $(srcdir)/gllist.h
 cow_face.o: $(srcdir)/gllist.h
+cow_face.o: $(srcdir)/jwzglesI.h
+cow_face.o: $(srcdir)/jwzgles.h
+cow_hide.o: ../../config.h
 cow_hide.o: $(srcdir)/gllist.h
 cow_hide.o: $(srcdir)/gllist.h
+cow_hide.o: $(srcdir)/jwzglesI.h
+cow_hide.o: $(srcdir)/jwzgles.h
+cow_hoofs.o: ../../config.h
 cow_hoofs.o: $(srcdir)/gllist.h
 cow_hoofs.o: $(srcdir)/gllist.h
+cow_hoofs.o: $(srcdir)/jwzglesI.h
+cow_hoofs.o: $(srcdir)/jwzgles.h
+cow_horns.o: ../../config.h
 cow_horns.o: $(srcdir)/gllist.h
 cow_horns.o: $(srcdir)/gllist.h
+cow_horns.o: $(srcdir)/jwzglesI.h
+cow_horns.o: $(srcdir)/jwzgles.h
+cow_tail.o: ../../config.h
 cow_tail.o: $(srcdir)/gllist.h
 cow_tail.o: $(srcdir)/gllist.h
+cow_tail.o: $(srcdir)/jwzglesI.h
+cow_tail.o: $(srcdir)/jwzgles.h
+cow_udder.o: ../../config.h
 cow_udder.o: $(srcdir)/gllist.h
 cow_udder.o: $(srcdir)/gllist.h
+cow_udder.o: $(srcdir)/jwzglesI.h
+cow_udder.o: $(srcdir)/jwzgles.h
 crackberg.o: ../../config.h
 crackberg.o: $(HACK_SRC)/fps.h
 crackberg.o: ../../config.h
 crackberg.o: $(HACK_SRC)/fps.h
+crackberg.o: $(srcdir)/jwzglesI.h
 crackberg.o: $(srcdir)/jwzgles.h
 crackberg.o: $(HACK_SRC)/screenhackI.h
 crackberg.o: $(UTILS_SRC)/colors.h
 crackberg.o: $(srcdir)/jwzgles.h
 crackberg.o: $(HACK_SRC)/screenhackI.h
 crackberg.o: $(UTILS_SRC)/colors.h
@@ -1138,6 +1198,8 @@ crackberg.o: $(HACK_SRC)/xlockmoreI.h
 crackberg.o: $(HACK_SRC)/xlockmore.h
 cube21.o: ../../config.h
 cube21.o: $(HACK_SRC)/fps.h
 crackberg.o: $(HACK_SRC)/xlockmore.h
 cube21.o: ../../config.h
 cube21.o: $(HACK_SRC)/fps.h
+cube21.o: $(srcdir)/gltrackball.h
+cube21.o: $(srcdir)/jwzglesI.h
 cube21.o: $(srcdir)/jwzgles.h
 cube21.o: $(HACK_SRC)/screenhackI.h
 cube21.o: $(UTILS_SRC)/colors.h
 cube21.o: $(srcdir)/jwzgles.h
 cube21.o: $(HACK_SRC)/screenhackI.h
 cube21.o: $(UTILS_SRC)/colors.h
@@ -1153,6 +1215,7 @@ cube21.o: $(HACK_SRC)/xlockmore.h
 cubenetic.o: ../../config.h
 cubenetic.o: $(HACK_SRC)/fps.h
 cubenetic.o: $(srcdir)/gltrackball.h
 cubenetic.o: ../../config.h
 cubenetic.o: $(HACK_SRC)/fps.h
 cubenetic.o: $(srcdir)/gltrackball.h
+cubenetic.o: $(srcdir)/jwzglesI.h
 cubenetic.o: $(srcdir)/jwzgles.h
 cubenetic.o: $(srcdir)/rotator.h
 cubenetic.o: $(HACK_SRC)/screenhackI.h
 cubenetic.o: $(srcdir)/jwzgles.h
 cubenetic.o: $(srcdir)/rotator.h
 cubenetic.o: $(HACK_SRC)/screenhackI.h
@@ -1169,6 +1232,7 @@ cubenetic.o: $(HACK_SRC)/xlockmore.h
 cubestorm.o: ../../config.h
 cubestorm.o: $(HACK_SRC)/fps.h
 cubestorm.o: $(srcdir)/gltrackball.h
 cubestorm.o: ../../config.h
 cubestorm.o: $(HACK_SRC)/fps.h
 cubestorm.o: $(srcdir)/gltrackball.h
+cubestorm.o: $(srcdir)/jwzglesI.h
 cubestorm.o: $(srcdir)/jwzgles.h
 cubestorm.o: $(srcdir)/rotator.h
 cubestorm.o: $(HACK_SRC)/screenhackI.h
 cubestorm.o: $(srcdir)/jwzgles.h
 cubestorm.o: $(srcdir)/rotator.h
 cubestorm.o: $(HACK_SRC)/screenhackI.h
@@ -1185,6 +1249,7 @@ cubestorm.o: $(HACK_SRC)/xlockmore.h
 cubicgrid.o: ../../config.h
 cubicgrid.o: $(HACK_SRC)/fps.h
 cubicgrid.o: $(srcdir)/gltrackball.h
 cubicgrid.o: ../../config.h
 cubicgrid.o: $(HACK_SRC)/fps.h
 cubicgrid.o: $(srcdir)/gltrackball.h
+cubicgrid.o: $(srcdir)/jwzglesI.h
 cubicgrid.o: $(srcdir)/jwzgles.h
 cubicgrid.o: $(srcdir)/rotator.h
 cubicgrid.o: $(HACK_SRC)/screenhackI.h
 cubicgrid.o: $(srcdir)/jwzgles.h
 cubicgrid.o: $(srcdir)/rotator.h
 cubicgrid.o: $(HACK_SRC)/screenhackI.h
@@ -1201,6 +1266,7 @@ cubicgrid.o: $(HACK_SRC)/xlockmore.h
 dangerball.o: ../../config.h
 dangerball.o: $(HACK_SRC)/fps.h
 dangerball.o: $(srcdir)/gltrackball.h
 dangerball.o: ../../config.h
 dangerball.o: $(HACK_SRC)/fps.h
 dangerball.o: $(srcdir)/gltrackball.h
+dangerball.o: $(srcdir)/jwzglesI.h
 dangerball.o: $(srcdir)/jwzgles.h
 dangerball.o: $(srcdir)/rotator.h
 dangerball.o: $(HACK_SRC)/screenhackI.h
 dangerball.o: $(srcdir)/jwzgles.h
 dangerball.o: $(srcdir)/rotator.h
 dangerball.o: $(HACK_SRC)/screenhackI.h
@@ -1217,8 +1283,10 @@ dangerball.o: $(UTILS_SRC)/yarandom.h
 dangerball.o: $(HACK_SRC)/xlockmoreI.h
 dangerball.o: $(HACK_SRC)/xlockmore.h
 dnalogo.o: ../../config.h
 dangerball.o: $(HACK_SRC)/xlockmoreI.h
 dangerball.o: $(HACK_SRC)/xlockmore.h
 dnalogo.o: ../../config.h
+dnalogo.o: $(srcdir)/dnapizza.h
 dnalogo.o: $(HACK_SRC)/fps.h
 dnalogo.o: $(srcdir)/gltrackball.h
 dnalogo.o: $(HACK_SRC)/fps.h
 dnalogo.o: $(srcdir)/gltrackball.h
+dnalogo.o: $(srcdir)/jwzglesI.h
 dnalogo.o: $(srcdir)/jwzgles.h
 dnalogo.o: $(srcdir)/normals.h
 dnalogo.o: $(srcdir)/rotator.h
 dnalogo.o: $(srcdir)/jwzgles.h
 dnalogo.o: $(srcdir)/normals.h
 dnalogo.o: $(srcdir)/rotator.h
@@ -1237,6 +1305,8 @@ dnalogo.o: $(HACK_SRC)/xlockmore.h
 dolphin.o: $(srcdir)/atlantis.h
 dolphin.o: ../../config.h
 dolphin.o: $(HACK_SRC)/fps.h
 dolphin.o: $(srcdir)/atlantis.h
 dolphin.o: ../../config.h
 dolphin.o: $(HACK_SRC)/fps.h
+dolphin.o: $(srcdir)/jwzglesI.h
+dolphin.o: $(srcdir)/jwzgles.h
 dolphin.o: $(HACK_SRC)/screenhackI.h
 dolphin.o: $(UTILS_SRC)/colors.h
 dolphin.o: $(UTILS_SRC)/grabscreen.h
 dolphin.o: $(HACK_SRC)/screenhackI.h
 dolphin.o: $(UTILS_SRC)/colors.h
 dolphin.o: $(UTILS_SRC)/grabscreen.h
@@ -1245,12 +1315,16 @@ dolphin.o: $(UTILS_SRC)/resources.h
 dolphin.o: $(UTILS_SRC)/usleep.h
 dolphin.o: $(UTILS_SRC)/visual.h
 dolphin.o: $(UTILS_SRC)/yarandom.h
 dolphin.o: $(UTILS_SRC)/usleep.h
 dolphin.o: $(UTILS_SRC)/visual.h
 dolphin.o: $(UTILS_SRC)/yarandom.h
+dropshadow.o: ../../config.h
 dropshadow.o: $(srcdir)/dropshadow.h
 dropshadow.o: $(srcdir)/dropshadow.h
+dropshadow.o: $(srcdir)/jwzglesI.h
+dropshadow.o: $(srcdir)/jwzgles.h
 endgame.o: $(srcdir)/chessgames.h
 endgame.o: $(srcdir)/chessmodels.h
 endgame.o: ../../config.h
 endgame.o: $(HACK_SRC)/fps.h
 endgame.o: $(srcdir)/gltrackball.h
 endgame.o: $(srcdir)/chessgames.h
 endgame.o: $(srcdir)/chessmodels.h
 endgame.o: ../../config.h
 endgame.o: $(HACK_SRC)/fps.h
 endgame.o: $(srcdir)/gltrackball.h
+endgame.o: $(srcdir)/jwzglesI.h
 endgame.o: $(srcdir)/jwzgles.h
 endgame.o: $(HACK_SRC)/screenhackI.h
 endgame.o: $(UTILS_SRC)/colors.h
 endgame.o: $(srcdir)/jwzgles.h
 endgame.o: $(HACK_SRC)/screenhackI.h
 endgame.o: $(UTILS_SRC)/colors.h
@@ -1267,9 +1341,11 @@ engine.o: ../../config.h
 engine.o: $(HACK_SRC)/fps.h
 engine.o: $(srcdir)/gltrackball.h
 engine.o: $(srcdir)/glxfonts.h
 engine.o: $(HACK_SRC)/fps.h
 engine.o: $(srcdir)/gltrackball.h
 engine.o: $(srcdir)/glxfonts.h
+engine.o: $(srcdir)/jwzglesI.h
 engine.o: $(srcdir)/jwzgles.h
 engine.o: $(srcdir)/rotator.h
 engine.o: $(HACK_SRC)/screenhackI.h
 engine.o: $(srcdir)/jwzgles.h
 engine.o: $(srcdir)/rotator.h
 engine.o: $(HACK_SRC)/screenhackI.h
+engine.o: $(srcdir)/texfont.h
 engine.o: $(UTILS_SRC)/colors.h
 engine.o: $(UTILS_SRC)/grabscreen.h
 engine.o: $(UTILS_SRC)/hsv.h
 engine.o: $(UTILS_SRC)/colors.h
 engine.o: $(UTILS_SRC)/grabscreen.h
 engine.o: $(UTILS_SRC)/hsv.h
@@ -1282,16 +1358,25 @@ engine.o: $(HACK_SRC)/xlockmoreI.h
 engine.o: $(HACK_SRC)/xlockmore.h
 extrusion-helix2.o: ../../config.h
 extrusion-helix2.o: $(srcdir)/extrusion.h
 engine.o: $(HACK_SRC)/xlockmore.h
 extrusion-helix2.o: ../../config.h
 extrusion-helix2.o: $(srcdir)/extrusion.h
+extrusion-helix2.o: $(srcdir)/jwzglesI.h
+extrusion-helix2.o: $(srcdir)/jwzgles.h
 extrusion-helix3.o: ../../config.h
 extrusion-helix3.o: $(srcdir)/extrusion.h
 extrusion-helix3.o: ../../config.h
 extrusion-helix3.o: $(srcdir)/extrusion.h
+extrusion-helix3.o: $(srcdir)/jwzglesI.h
+extrusion-helix3.o: $(srcdir)/jwzgles.h
 extrusion-helix4.o: ../../config.h
 extrusion-helix4.o: $(srcdir)/extrusion.h
 extrusion-helix4.o: ../../config.h
 extrusion-helix4.o: $(srcdir)/extrusion.h
+extrusion-helix4.o: $(srcdir)/jwzglesI.h
+extrusion-helix4.o: $(srcdir)/jwzgles.h
 extrusion-joinoffset.o: ../../config.h
 extrusion-joinoffset.o: $(srcdir)/extrusion.h
 extrusion-joinoffset.o: ../../config.h
 extrusion-joinoffset.o: $(srcdir)/extrusion.h
+extrusion-joinoffset.o: $(srcdir)/jwzglesI.h
+extrusion-joinoffset.o: $(srcdir)/jwzgles.h
 extrusion.o: ../../config.h
 extrusion.o: $(srcdir)/extrusion.h
 extrusion.o: $(HACK_SRC)/fps.h
 extrusion.o: $(srcdir)/gltrackball.h
 extrusion.o: ../../config.h
 extrusion.o: $(srcdir)/extrusion.h
 extrusion.o: $(HACK_SRC)/fps.h
 extrusion.o: $(srcdir)/gltrackball.h
+extrusion.o: $(srcdir)/jwzglesI.h
 extrusion.o: $(srcdir)/jwzgles.h
 extrusion.o: $(srcdir)/rotator.h
 extrusion.o: $(HACK_SRC)/screenhackI.h
 extrusion.o: $(srcdir)/jwzgles.h
 extrusion.o: $(srcdir)/rotator.h
 extrusion.o: $(HACK_SRC)/screenhackI.h
@@ -1308,14 +1393,21 @@ extrusion.o: $(HACK_SRC)/xlockmore.h
 extrusion.o: $(srcdir)/xpm-ximage.h
 extrusion-screw.o: ../../config.h
 extrusion-screw.o: $(srcdir)/extrusion.h
 extrusion.o: $(srcdir)/xpm-ximage.h
 extrusion-screw.o: ../../config.h
 extrusion-screw.o: $(srcdir)/extrusion.h
+extrusion-screw.o: $(srcdir)/jwzglesI.h
+extrusion-screw.o: $(srcdir)/jwzgles.h
 extrusion-taper.o: ../../config.h
 extrusion-taper.o: $(srcdir)/extrusion.h
 extrusion-taper.o: ../../config.h
 extrusion-taper.o: $(srcdir)/extrusion.h
+extrusion-taper.o: $(srcdir)/jwzglesI.h
+extrusion-taper.o: $(srcdir)/jwzgles.h
 extrusion-twistoid.o: ../../config.h
 extrusion-twistoid.o: $(srcdir)/extrusion.h
 extrusion-twistoid.o: ../../config.h
 extrusion-twistoid.o: $(srcdir)/extrusion.h
+extrusion-twistoid.o: $(srcdir)/jwzglesI.h
+extrusion-twistoid.o: $(srcdir)/jwzgles.h
 flipflop.o: ../../config.h
 flipflop.o: $(HACK_SRC)/fps.h
 flipflop.o: $(srcdir)/gltrackball.h
 flipflop.o: $(srcdir)/grab-ximage.h
 flipflop.o: ../../config.h
 flipflop.o: $(HACK_SRC)/fps.h
 flipflop.o: $(srcdir)/gltrackball.h
 flipflop.o: $(srcdir)/grab-ximage.h
+flipflop.o: $(srcdir)/jwzglesI.h
 flipflop.o: $(srcdir)/jwzgles.h
 flipflop.o: $(HACK_SRC)/screenhackI.h
 flipflop.o: $(UTILS_SRC)/colors.h
 flipflop.o: $(srcdir)/jwzgles.h
 flipflop.o: $(HACK_SRC)/screenhackI.h
 flipflop.o: $(UTILS_SRC)/colors.h
@@ -1332,6 +1424,7 @@ flipscreen3d.o: ../../config.h
 flipscreen3d.o: $(HACK_SRC)/fps.h
 flipscreen3d.o: $(srcdir)/gltrackball.h
 flipscreen3d.o: $(srcdir)/grab-ximage.h
 flipscreen3d.o: $(HACK_SRC)/fps.h
 flipscreen3d.o: $(srcdir)/gltrackball.h
 flipscreen3d.o: $(srcdir)/grab-ximage.h
+flipscreen3d.o: $(srcdir)/jwzglesI.h
 flipscreen3d.o: $(srcdir)/jwzgles.h
 flipscreen3d.o: $(HACK_SRC)/screenhackI.h
 flipscreen3d.o: $(UTILS_SRC)/colors.h
 flipscreen3d.o: $(srcdir)/jwzgles.h
 flipscreen3d.o: $(HACK_SRC)/screenhackI.h
 flipscreen3d.o: $(UTILS_SRC)/colors.h
@@ -1346,6 +1439,7 @@ flipscreen3d.o: $(HACK_SRC)/xlockmoreI.h
 flipscreen3d.o: $(HACK_SRC)/xlockmore.h
 fliptext.o: ../../config.h
 fliptext.o: $(HACK_SRC)/fps.h
 flipscreen3d.o: $(HACK_SRC)/xlockmore.h
 fliptext.o: ../../config.h
 fliptext.o: $(HACK_SRC)/fps.h
+fliptext.o: $(srcdir)/jwzglesI.h
 fliptext.o: $(srcdir)/jwzgles.h
 fliptext.o: $(HACK_SRC)/screenhackI.h
 fliptext.o: $(srcdir)/texfont.h
 fliptext.o: $(srcdir)/jwzgles.h
 fliptext.o: $(HACK_SRC)/screenhackI.h
 fliptext.o: $(srcdir)/texfont.h
@@ -1353,6 +1447,7 @@ fliptext.o: $(UTILS_SRC)/colors.h
 fliptext.o: $(UTILS_SRC)/grabscreen.h
 fliptext.o: $(UTILS_SRC)/hsv.h
 fliptext.o: $(UTILS_SRC)/resources.h
 fliptext.o: $(UTILS_SRC)/grabscreen.h
 fliptext.o: $(UTILS_SRC)/hsv.h
 fliptext.o: $(UTILS_SRC)/resources.h
+fliptext.o: $(UTILS_SRC)/textclient.h
 fliptext.o: $(UTILS_SRC)/usleep.h
 fliptext.o: $(UTILS_SRC)/visual.h
 fliptext.o: $(UTILS_SRC)/xshm.h
 fliptext.o: $(UTILS_SRC)/usleep.h
 fliptext.o: $(UTILS_SRC)/visual.h
 fliptext.o: $(UTILS_SRC)/xshm.h
@@ -1363,6 +1458,7 @@ flurry.o: ../../config.h
 flurry.o: $(srcdir)/flurry.h
 flurry.o: $(HACK_SRC)/fps.h
 flurry.o: $(srcdir)/gltrackball.h
 flurry.o: $(srcdir)/flurry.h
 flurry.o: $(HACK_SRC)/fps.h
 flurry.o: $(srcdir)/gltrackball.h
+flurry.o: $(srcdir)/jwzglesI.h
 flurry.o: $(srcdir)/jwzgles.h
 flurry.o: $(srcdir)/rotator.h
 flurry.o: $(HACK_SRC)/screenhackI.h
 flurry.o: $(srcdir)/jwzgles.h
 flurry.o: $(srcdir)/rotator.h
 flurry.o: $(HACK_SRC)/screenhackI.h
@@ -1379,21 +1475,29 @@ flurry.o: $(HACK_SRC)/xlockmore.h
 flurry-smoke.o: ../../config.h
 flurry-smoke.o: $(srcdir)/flurry.h
 flurry-smoke.o: $(srcdir)/gltrackball.h
 flurry-smoke.o: ../../config.h
 flurry-smoke.o: $(srcdir)/flurry.h
 flurry-smoke.o: $(srcdir)/gltrackball.h
+flurry-smoke.o: $(srcdir)/jwzglesI.h
+flurry-smoke.o: $(srcdir)/jwzgles.h
 flurry-smoke.o: $(srcdir)/rotator.h
 flurry-smoke.o: $(UTILS_SRC)/yarandom.h
 flurry-spark.o: ../../config.h
 flurry-spark.o: $(srcdir)/flurry.h
 flurry-spark.o: $(srcdir)/gltrackball.h
 flurry-smoke.o: $(srcdir)/rotator.h
 flurry-smoke.o: $(UTILS_SRC)/yarandom.h
 flurry-spark.o: ../../config.h
 flurry-spark.o: $(srcdir)/flurry.h
 flurry-spark.o: $(srcdir)/gltrackball.h
+flurry-spark.o: $(srcdir)/jwzglesI.h
+flurry-spark.o: $(srcdir)/jwzgles.h
 flurry-spark.o: $(srcdir)/rotator.h
 flurry-spark.o: $(UTILS_SRC)/yarandom.h
 flurry-star.o: ../../config.h
 flurry-star.o: $(srcdir)/flurry.h
 flurry-star.o: $(srcdir)/gltrackball.h
 flurry-spark.o: $(srcdir)/rotator.h
 flurry-spark.o: $(UTILS_SRC)/yarandom.h
 flurry-star.o: ../../config.h
 flurry-star.o: $(srcdir)/flurry.h
 flurry-star.o: $(srcdir)/gltrackball.h
+flurry-star.o: $(srcdir)/jwzglesI.h
+flurry-star.o: $(srcdir)/jwzgles.h
 flurry-star.o: $(srcdir)/rotator.h
 flurry-star.o: $(UTILS_SRC)/yarandom.h
 flurry-texture.o: ../../config.h
 flurry-texture.o: $(srcdir)/flurry.h
 flurry-texture.o: $(srcdir)/gltrackball.h
 flurry-star.o: $(srcdir)/rotator.h
 flurry-star.o: $(UTILS_SRC)/yarandom.h
 flurry-texture.o: ../../config.h
 flurry-texture.o: $(srcdir)/flurry.h
 flurry-texture.o: $(srcdir)/gltrackball.h
+flurry-texture.o: $(srcdir)/jwzglesI.h
+flurry-texture.o: $(srcdir)/jwzgles.h
 flurry-texture.o: $(srcdir)/rotator.h
 flurry-texture.o: $(UTILS_SRC)/yarandom.h
 flyingtoasters.o: ../../config.h
 flurry-texture.o: $(srcdir)/rotator.h
 flurry-texture.o: $(UTILS_SRC)/yarandom.h
 flyingtoasters.o: ../../config.h
@@ -1402,6 +1506,7 @@ flyingtoasters.o: $(srcdir)/gllist.h
 flyingtoasters.o: $(srcdir)/gltrackball.h
 flyingtoasters.o: $(HACK_SRC)/images/chromesphere.xpm
 flyingtoasters.o: $(HACK_SRC)/images/toast.xpm
 flyingtoasters.o: $(srcdir)/gltrackball.h
 flyingtoasters.o: $(HACK_SRC)/images/chromesphere.xpm
 flyingtoasters.o: $(HACK_SRC)/images/toast.xpm
+flyingtoasters.o: $(srcdir)/jwzglesI.h
 flyingtoasters.o: $(srcdir)/jwzgles.h
 flyingtoasters.o: $(HACK_SRC)/screenhackI.h
 flyingtoasters.o: $(UTILS_SRC)/colors.h
 flyingtoasters.o: $(srcdir)/jwzgles.h
 flyingtoasters.o: $(HACK_SRC)/screenhackI.h
 flyingtoasters.o: $(UTILS_SRC)/colors.h
@@ -1417,13 +1522,16 @@ flyingtoasters.o: $(HACK_SRC)/xlockmore.h
 flyingtoasters.o: $(srcdir)/xpm-ximage.h
 font-ximage.o: ../../config.h
 font-ximage.o: $(srcdir)/font-ximage.h
 flyingtoasters.o: $(srcdir)/xpm-ximage.h
 font-ximage.o: ../../config.h
 font-ximage.o: $(srcdir)/font-ximage.h
+font-ximage.o: $(srcdir)/jwzglesI.h
 font-ximage.o: $(srcdir)/jwzgles.h
 fps-gl.o: ../../config.h
 fps-gl.o: $(HACK_SRC)/fpsI.h
 fps-gl.o: $(HACK_SRC)/fps.h
 fps-gl.o: $(srcdir)/glxfonts.h
 font-ximage.o: $(srcdir)/jwzgles.h
 fps-gl.o: ../../config.h
 fps-gl.o: $(HACK_SRC)/fpsI.h
 fps-gl.o: $(HACK_SRC)/fps.h
 fps-gl.o: $(srcdir)/glxfonts.h
+fps-gl.o: $(srcdir)/jwzglesI.h
 fps-gl.o: $(srcdir)/jwzgles.h
 fps-gl.o: $(HACK_SRC)/screenhackI.h
 fps-gl.o: $(srcdir)/jwzgles.h
 fps-gl.o: $(HACK_SRC)/screenhackI.h
+fps-gl.o: $(srcdir)/texfont.h
 fps-gl.o: $(UTILS_SRC)/colors.h
 fps-gl.o: $(UTILS_SRC)/grabscreen.h
 fps-gl.o: $(UTILS_SRC)/hsv.h
 fps-gl.o: $(UTILS_SRC)/colors.h
 fps-gl.o: $(UTILS_SRC)/grabscreen.h
 fps-gl.o: $(UTILS_SRC)/hsv.h
@@ -1437,6 +1545,7 @@ gears.o: ../../config.h
 gears.o: $(HACK_SRC)/fps.h
 gears.o: $(srcdir)/gltrackball.h
 gears.o: $(srcdir)/involute.h
 gears.o: $(HACK_SRC)/fps.h
 gears.o: $(srcdir)/gltrackball.h
 gears.o: $(srcdir)/involute.h
+gears.o: $(srcdir)/jwzglesI.h
 gears.o: $(srcdir)/jwzgles.h
 gears.o: $(srcdir)/normals.h
 gears.o: $(srcdir)/rotator.h
 gears.o: $(srcdir)/jwzgles.h
 gears.o: $(srcdir)/normals.h
 gears.o: $(srcdir)/rotator.h
@@ -1456,6 +1565,7 @@ gflux.o: ../../config.h
 gflux.o: $(HACK_SRC)/fps.h
 gflux.o: $(srcdir)/gltrackball.h
 gflux.o: $(srcdir)/grab-ximage.h
 gflux.o: $(HACK_SRC)/fps.h
 gflux.o: $(srcdir)/gltrackball.h
 gflux.o: $(srcdir)/grab-ximage.h
+gflux.o: $(srcdir)/jwzglesI.h
 gflux.o: $(srcdir)/jwzgles.h
 gflux.o: $(HACK_SRC)/screenhackI.h
 gflux.o: $(UTILS_SRC)/colors.h
 gflux.o: $(srcdir)/jwzgles.h
 gflux.o: $(HACK_SRC)/screenhackI.h
 gflux.o: $(UTILS_SRC)/colors.h
@@ -1471,6 +1581,7 @@ gflux.o: $(HACK_SRC)/xlockmore.h
 glblur.o: ../../config.h
 glblur.o: $(HACK_SRC)/fps.h
 glblur.o: $(srcdir)/gltrackball.h
 glblur.o: ../../config.h
 glblur.o: $(HACK_SRC)/fps.h
 glblur.o: $(srcdir)/gltrackball.h
+glblur.o: $(srcdir)/jwzglesI.h
 glblur.o: $(srcdir)/jwzgles.h
 glblur.o: $(srcdir)/rotator.h
 glblur.o: $(HACK_SRC)/screenhackI.h
 glblur.o: $(srcdir)/jwzgles.h
 glblur.o: $(srcdir)/rotator.h
 glblur.o: $(HACK_SRC)/screenhackI.h
@@ -1486,6 +1597,7 @@ glblur.o: $(HACK_SRC)/xlockmoreI.h
 glblur.o: $(HACK_SRC)/xlockmore.h
 glcells.o: ../../config.h
 glcells.o: $(HACK_SRC)/fps.h
 glblur.o: $(HACK_SRC)/xlockmore.h
 glcells.o: ../../config.h
 glcells.o: $(HACK_SRC)/fps.h
+glcells.o: $(srcdir)/jwzglesI.h
 glcells.o: $(srcdir)/jwzgles.h
 glcells.o: $(HACK_SRC)/screenhackI.h
 glcells.o: $(UTILS_SRC)/colors.h
 glcells.o: $(srcdir)/jwzgles.h
 glcells.o: $(HACK_SRC)/screenhackI.h
 glcells.o: $(UTILS_SRC)/colors.h
@@ -1501,6 +1613,7 @@ glcells.o: $(HACK_SRC)/xlockmore.h
 gleidescope.o: ../../config.h
 gleidescope.o: $(HACK_SRC)/fps.h
 gleidescope.o: $(srcdir)/grab-ximage.h
 gleidescope.o: ../../config.h
 gleidescope.o: $(HACK_SRC)/fps.h
 gleidescope.o: $(srcdir)/grab-ximage.h
+gleidescope.o: $(srcdir)/jwzglesI.h
 gleidescope.o: $(srcdir)/jwzgles.h
 gleidescope.o: $(HACK_SRC)/screenhackI.h
 gleidescope.o: $(UTILS_SRC)/colors.h
 gleidescope.o: $(srcdir)/jwzgles.h
 gleidescope.o: $(HACK_SRC)/screenhackI.h
 gleidescope.o: $(UTILS_SRC)/colors.h
@@ -1519,6 +1632,7 @@ glforestfire.o: $(HACK_SRC)/fps.h
 glforestfire.o: $(srcdir)/gltrackball.h
 glforestfire.o: $(HACK_SRC)/images/ground.xpm
 glforestfire.o: $(HACK_SRC)/images/tree.xpm
 glforestfire.o: $(srcdir)/gltrackball.h
 glforestfire.o: $(HACK_SRC)/images/ground.xpm
 glforestfire.o: $(HACK_SRC)/images/tree.xpm
+glforestfire.o: $(srcdir)/jwzglesI.h
 glforestfire.o: $(srcdir)/jwzgles.h
 glforestfire.o: $(HACK_SRC)/screenhackI.h
 glforestfire.o: $(UTILS_SRC)/colors.h
 glforestfire.o: $(srcdir)/jwzgles.h
 glforestfire.o: $(HACK_SRC)/screenhackI.h
 glforestfire.o: $(UTILS_SRC)/colors.h
@@ -1534,6 +1648,7 @@ glforestfire.o: $(HACK_SRC)/xlockmore.h
 glforestfire.o: $(srcdir)/xpm-ximage.h
 glhanoi.o: ../../config.h
 glhanoi.o: $(HACK_SRC)/fps.h
 glforestfire.o: $(srcdir)/xpm-ximage.h
 glhanoi.o: ../../config.h
 glhanoi.o: $(HACK_SRC)/fps.h
+glhanoi.o: $(srcdir)/jwzglesI.h
 glhanoi.o: $(srcdir)/jwzgles.h
 glhanoi.o: $(srcdir)/rotator.h
 glhanoi.o: $(HACK_SRC)/screenhackI.h
 glhanoi.o: $(srcdir)/jwzgles.h
 glhanoi.o: $(srcdir)/rotator.h
 glhanoi.o: $(HACK_SRC)/screenhackI.h
@@ -1550,6 +1665,7 @@ glhanoi.o: $(HACK_SRC)/xlockmore.h
 glknots.o: ../../config.h
 glknots.o: $(HACK_SRC)/fps.h
 glknots.o: $(srcdir)/gltrackball.h
 glknots.o: ../../config.h
 glknots.o: $(HACK_SRC)/fps.h
 glknots.o: $(srcdir)/gltrackball.h
+glknots.o: $(srcdir)/jwzglesI.h
 glknots.o: $(srcdir)/jwzgles.h
 glknots.o: $(srcdir)/rotator.h
 glknots.o: $(HACK_SRC)/screenhackI.h
 glknots.o: $(srcdir)/jwzgles.h
 glknots.o: $(srcdir)/rotator.h
 glknots.o: $(HACK_SRC)/screenhackI.h
@@ -1564,10 +1680,14 @@ glknots.o: $(UTILS_SRC)/xshm.h
 glknots.o: $(UTILS_SRC)/yarandom.h
 glknots.o: $(HACK_SRC)/xlockmoreI.h
 glknots.o: $(HACK_SRC)/xlockmore.h
 glknots.o: $(UTILS_SRC)/yarandom.h
 glknots.o: $(HACK_SRC)/xlockmoreI.h
 glknots.o: $(HACK_SRC)/xlockmore.h
+gllist.o: ../../config.h
 gllist.o: $(srcdir)/gllist.h
 gllist.o: $(srcdir)/gllist.h
+gllist.o: $(srcdir)/jwzglesI.h
+gllist.o: $(srcdir)/jwzgles.h
 glmatrix.o: ../../config.h
 glmatrix.o: $(HACK_SRC)/fps.h
 glmatrix.o: $(HACK_SRC)/images/matrix3.xpm
 glmatrix.o: ../../config.h
 glmatrix.o: $(HACK_SRC)/fps.h
 glmatrix.o: $(HACK_SRC)/images/matrix3.xpm
+glmatrix.o: $(srcdir)/jwzglesI.h
 glmatrix.o: $(srcdir)/jwzgles.h
 glmatrix.o: $(HACK_SRC)/screenhackI.h
 glmatrix.o: $(UTILS_SRC)/colors.h
 glmatrix.o: $(srcdir)/jwzgles.h
 glmatrix.o: $(HACK_SRC)/screenhackI.h
 glmatrix.o: $(UTILS_SRC)/colors.h
@@ -1585,6 +1705,7 @@ glplanet.o: ../../config.h
 glplanet.o: $(HACK_SRC)/fps.h
 glplanet.o: $(srcdir)/gltrackball.h
 glplanet.o: $(HACK_SRC)/images/earth.xpm
 glplanet.o: $(HACK_SRC)/fps.h
 glplanet.o: $(srcdir)/gltrackball.h
 glplanet.o: $(HACK_SRC)/images/earth.xpm
+glplanet.o: $(srcdir)/jwzglesI.h
 glplanet.o: $(srcdir)/jwzgles.h
 glplanet.o: $(srcdir)/rotator.h
 glplanet.o: $(HACK_SRC)/screenhackI.h
 glplanet.o: $(srcdir)/jwzgles.h
 glplanet.o: $(srcdir)/rotator.h
 glplanet.o: $(HACK_SRC)/screenhackI.h
@@ -1603,8 +1724,10 @@ glplanet.o: $(srcdir)/xpm-ximage.h
 glschool_alg.o: ../../config.h
 glschool_alg.o: $(srcdir)/glschool_alg.h
 glschool_alg.o: $(UTILS_SRC)/yarandom.h
 glschool_alg.o: ../../config.h
 glschool_alg.o: $(srcdir)/glschool_alg.h
 glschool_alg.o: $(UTILS_SRC)/yarandom.h
+glschool_gl.o: ../../config.h
 glschool_gl.o: $(srcdir)/glschool_alg.h
 glschool_gl.o: $(srcdir)/glschool_gl.h
 glschool_gl.o: $(srcdir)/glschool_alg.h
 glschool_gl.o: $(srcdir)/glschool_gl.h
+glschool_gl.o: $(srcdir)/jwzglesI.h
 glschool_gl.o: $(srcdir)/jwzgles.h
 glschool_gl.o: $(srcdir)/sphere.h
 glschool_gl.o: $(srcdir)/tube.h
 glschool_gl.o: $(srcdir)/jwzgles.h
 glschool_gl.o: $(srcdir)/sphere.h
 glschool_gl.o: $(srcdir)/tube.h
@@ -1613,6 +1736,7 @@ glschool.o: $(HACK_SRC)/fps.h
 glschool.o: $(srcdir)/glschool_alg.h
 glschool.o: $(srcdir)/glschool_gl.h
 glschool.o: $(srcdir)/glschool.h
 glschool.o: $(srcdir)/glschool_alg.h
 glschool.o: $(srcdir)/glschool_gl.h
 glschool.o: $(srcdir)/glschool.h
+glschool.o: $(srcdir)/jwzglesI.h
 glschool.o: $(srcdir)/jwzgles.h
 glschool.o: $(HACK_SRC)/screenhackI.h
 glschool.o: $(UTILS_SRC)/colors.h
 glschool.o: $(srcdir)/jwzgles.h
 glschool.o: $(HACK_SRC)/screenhackI.h
 glschool.o: $(UTILS_SRC)/colors.h
@@ -1629,8 +1753,10 @@ glslideshow.o: ../../config.h
 glslideshow.o: $(HACK_SRC)/fps.h
 glslideshow.o: $(srcdir)/glxfonts.h
 glslideshow.o: $(srcdir)/grab-ximage.h
 glslideshow.o: $(HACK_SRC)/fps.h
 glslideshow.o: $(srcdir)/glxfonts.h
 glslideshow.o: $(srcdir)/grab-ximage.h
+glslideshow.o: $(srcdir)/jwzglesI.h
 glslideshow.o: $(srcdir)/jwzgles.h
 glslideshow.o: $(HACK_SRC)/screenhackI.h
 glslideshow.o: $(srcdir)/jwzgles.h
 glslideshow.o: $(HACK_SRC)/screenhackI.h
+glslideshow.o: $(srcdir)/texfont.h
 glslideshow.o: $(UTILS_SRC)/colors.h
 glslideshow.o: $(UTILS_SRC)/grabscreen.h
 glslideshow.o: $(UTILS_SRC)/hsv.h
 glslideshow.o: $(UTILS_SRC)/colors.h
 glslideshow.o: $(UTILS_SRC)/grabscreen.h
 glslideshow.o: $(UTILS_SRC)/hsv.h
@@ -1644,8 +1770,10 @@ glslideshow.o: $(HACK_SRC)/xlockmore.h
 glsnake.o: ../../config.h
 glsnake.o: $(HACK_SRC)/fps.h
 glsnake.o: $(srcdir)/glxfonts.h
 glsnake.o: ../../config.h
 glsnake.o: $(HACK_SRC)/fps.h
 glsnake.o: $(srcdir)/glxfonts.h
+glsnake.o: $(srcdir)/jwzglesI.h
 glsnake.o: $(srcdir)/jwzgles.h
 glsnake.o: $(HACK_SRC)/screenhackI.h
 glsnake.o: $(srcdir)/jwzgles.h
 glsnake.o: $(HACK_SRC)/screenhackI.h
+glsnake.o: $(srcdir)/texfont.h
 glsnake.o: $(UTILS_SRC)/colors.h
 glsnake.o: $(UTILS_SRC)/grabscreen.h
 glsnake.o: $(UTILS_SRC)/hsv.h
 glsnake.o: $(UTILS_SRC)/colors.h
 glsnake.o: $(UTILS_SRC)/grabscreen.h
 glsnake.o: $(UTILS_SRC)/hsv.h
@@ -1661,14 +1789,17 @@ gltext.o: $(HACK_SRC)/fps.h
 gltext.o: $(srcdir)/gltrackball.h
 gltext.o: $(srcdir)/glut_roman.h
 gltext.o: $(srcdir)/glutstroke.h
 gltext.o: $(srcdir)/gltrackball.h
 gltext.o: $(srcdir)/glut_roman.h
 gltext.o: $(srcdir)/glutstroke.h
+gltext.o: $(srcdir)/jwzglesI.h
 gltext.o: $(srcdir)/jwzgles.h
 gltext.o: $(srcdir)/rotator.h
 gltext.o: $(HACK_SRC)/screenhackI.h
 gltext.o: $(srcdir)/jwzgles.h
 gltext.o: $(srcdir)/rotator.h
 gltext.o: $(HACK_SRC)/screenhackI.h
+gltext.o: $(srcdir)/sphere.h
 gltext.o: $(srcdir)/tube.h
 gltext.o: $(UTILS_SRC)/colors.h
 gltext.o: $(UTILS_SRC)/grabscreen.h
 gltext.o: $(UTILS_SRC)/hsv.h
 gltext.o: $(UTILS_SRC)/resources.h
 gltext.o: $(srcdir)/tube.h
 gltext.o: $(UTILS_SRC)/colors.h
 gltext.o: $(UTILS_SRC)/grabscreen.h
 gltext.o: $(UTILS_SRC)/hsv.h
 gltext.o: $(UTILS_SRC)/resources.h
+gltext.o: $(UTILS_SRC)/textclient.h
 gltext.o: $(UTILS_SRC)/usleep.h
 gltext.o: $(UTILS_SRC)/visual.h
 gltext.o: $(UTILS_SRC)/xshm.h
 gltext.o: $(UTILS_SRC)/usleep.h
 gltext.o: $(UTILS_SRC)/visual.h
 gltext.o: $(UTILS_SRC)/xshm.h
@@ -1677,20 +1808,27 @@ gltext.o: $(HACK_SRC)/xlockmoreI.h
 gltext.o: $(HACK_SRC)/xlockmore.h
 gltrackball.o: ../../config.h
 gltrackball.o: $(srcdir)/gltrackball.h
 gltext.o: $(HACK_SRC)/xlockmore.h
 gltrackball.o: ../../config.h
 gltrackball.o: $(srcdir)/gltrackball.h
+gltrackball.o: $(srcdir)/jwzglesI.h
 gltrackball.o: $(srcdir)/jwzgles.h
 gltrackball.o: $(srcdir)/trackball.h
 glut_stroke.o: ../../config.h
 glut_stroke.o: $(srcdir)/glutstroke.h
 gltrackball.o: $(srcdir)/jwzgles.h
 gltrackball.o: $(srcdir)/trackball.h
 glut_stroke.o: ../../config.h
 glut_stroke.o: $(srcdir)/glutstroke.h
+glut_stroke.o: $(srcdir)/jwzglesI.h
 glut_stroke.o: $(srcdir)/jwzgles.h
 glut_swidth.o: ../../config.h
 glut_swidth.o: $(srcdir)/glutstroke.h
 glut_stroke.o: $(srcdir)/jwzgles.h
 glut_swidth.o: ../../config.h
 glut_swidth.o: $(srcdir)/glutstroke.h
+glut_swidth.o: $(srcdir)/jwzglesI.h
 glut_swidth.o: $(srcdir)/jwzgles.h
 glxfonts.o: ../../config.h
 glut_swidth.o: $(srcdir)/jwzgles.h
 glxfonts.o: ../../config.h
+glxfonts.o: $(HACK_SRC)/fps.h
 glxfonts.o: $(srcdir)/glxfonts.h
 glxfonts.o: $(srcdir)/glxfonts.h
+glxfonts.o: $(srcdir)/jwzglesI.h
 glxfonts.o: $(srcdir)/jwzgles.h
 glxfonts.o: $(srcdir)/jwzgles.h
+glxfonts.o: $(srcdir)/texfont.h
 glxfonts.o: $(UTILS_SRC)/resources.h
 grab-ximage.o: ../../config.h
 grab-ximage.o: $(srcdir)/grab-ximage.h
 glxfonts.o: $(UTILS_SRC)/resources.h
 grab-ximage.o: ../../config.h
 grab-ximage.o: $(srcdir)/grab-ximage.h
+grab-ximage.o: $(srcdir)/jwzglesI.h
 grab-ximage.o: $(srcdir)/jwzgles.h
 grab-ximage.o: $(UTILS_SRC)/grabscreen.h
 grab-ximage.o: $(UTILS_SRC)/resources.h
 grab-ximage.o: $(srcdir)/jwzgles.h
 grab-ximage.o: $(UTILS_SRC)/grabscreen.h
 grab-ximage.o: $(UTILS_SRC)/resources.h
@@ -1699,6 +1837,7 @@ grab-ximage.o: $(UTILS_SRC)/xshm.h
 hilbert.o: ../../config.h
 hilbert.o: $(HACK_SRC)/fps.h
 hilbert.o: $(srcdir)/gltrackball.h
 hilbert.o: ../../config.h
 hilbert.o: $(HACK_SRC)/fps.h
 hilbert.o: $(srcdir)/gltrackball.h
+hilbert.o: $(srcdir)/jwzglesI.h
 hilbert.o: $(srcdir)/jwzgles.h
 hilbert.o: $(srcdir)/rotator.h
 hilbert.o: $(HACK_SRC)/screenhackI.h
 hilbert.o: $(srcdir)/jwzgles.h
 hilbert.o: $(srcdir)/rotator.h
 hilbert.o: $(HACK_SRC)/screenhackI.h
@@ -1717,6 +1856,7 @@ hilbert.o: $(HACK_SRC)/xlockmore.h
 hypertorus.o: ../../config.h
 hypertorus.o: $(HACK_SRC)/fps.h
 hypertorus.o: $(srcdir)/gltrackball.h
 hypertorus.o: ../../config.h
 hypertorus.o: $(HACK_SRC)/fps.h
 hypertorus.o: $(srcdir)/gltrackball.h
+hypertorus.o: $(srcdir)/jwzglesI.h
 hypertorus.o: $(srcdir)/jwzgles.h
 hypertorus.o: $(HACK_SRC)/screenhackI.h
 hypertorus.o: $(UTILS_SRC)/colors.h
 hypertorus.o: $(srcdir)/jwzgles.h
 hypertorus.o: $(HACK_SRC)/screenhackI.h
 hypertorus.o: $(UTILS_SRC)/colors.h
@@ -1731,6 +1871,7 @@ hypertorus.o: $(HACK_SRC)/xlockmoreI.h
 hypertorus.o: $(HACK_SRC)/xlockmore.h
 hypnowheel.o: ../../config.h
 hypnowheel.o: $(HACK_SRC)/fps.h
 hypertorus.o: $(HACK_SRC)/xlockmore.h
 hypnowheel.o: ../../config.h
 hypnowheel.o: $(HACK_SRC)/fps.h
+hypnowheel.o: $(srcdir)/jwzglesI.h
 hypnowheel.o: $(srcdir)/jwzgles.h
 hypnowheel.o: $(srcdir)/rotator.h
 hypnowheel.o: $(HACK_SRC)/screenhackI.h
 hypnowheel.o: $(srcdir)/jwzgles.h
 hypnowheel.o: $(srcdir)/rotator.h
 hypnowheel.o: $(HACK_SRC)/screenhackI.h
@@ -1747,6 +1888,7 @@ hypnowheel.o: $(HACK_SRC)/xlockmore.h
 involute.o: ../../config.h
 involute.o: $(HACK_SRC)/fps.h
 involute.o: $(srcdir)/involute.h
 involute.o: ../../config.h
 involute.o: $(HACK_SRC)/fps.h
 involute.o: $(srcdir)/involute.h
+involute.o: $(srcdir)/jwzglesI.h
 involute.o: $(srcdir)/jwzgles.h
 involute.o: $(srcdir)/normals.h
 involute.o: $(HACK_SRC)/screenhackI.h
 involute.o: $(srcdir)/jwzgles.h
 involute.o: $(srcdir)/normals.h
 involute.o: $(HACK_SRC)/screenhackI.h
@@ -1761,6 +1903,7 @@ jigglypuff.o: ../../config.h
 jigglypuff.o: $(HACK_SRC)/fps.h
 jigglypuff.o: $(srcdir)/gltrackball.h
 jigglypuff.o: $(HACK_SRC)/images/jigglymap.xpm
 jigglypuff.o: $(HACK_SRC)/fps.h
 jigglypuff.o: $(srcdir)/gltrackball.h
 jigglypuff.o: $(HACK_SRC)/images/jigglymap.xpm
+jigglypuff.o: $(srcdir)/jwzglesI.h
 jigglypuff.o: $(srcdir)/jwzgles.h
 jigglypuff.o: $(HACK_SRC)/screenhackI.h
 jigglypuff.o: $(UTILS_SRC)/colors.h
 jigglypuff.o: $(srcdir)/jwzgles.h
 jigglypuff.o: $(HACK_SRC)/screenhackI.h
 jigglypuff.o: $(UTILS_SRC)/colors.h
@@ -1778,10 +1921,12 @@ jigsaw.o: ../../config.h
 jigsaw.o: $(HACK_SRC)/fps.h
 jigsaw.o: $(srcdir)/gltrackball.h
 jigsaw.o: $(srcdir)/grab-ximage.h
 jigsaw.o: $(HACK_SRC)/fps.h
 jigsaw.o: $(srcdir)/gltrackball.h
 jigsaw.o: $(srcdir)/grab-ximage.h
+jigsaw.o: $(srcdir)/jwzglesI.h
 jigsaw.o: $(srcdir)/jwzgles.h
 jigsaw.o: $(srcdir)/normals.h
 jigsaw.o: $(srcdir)/rotator.h
 jigsaw.o: $(HACK_SRC)/screenhackI.h
 jigsaw.o: $(srcdir)/jwzgles.h
 jigsaw.o: $(srcdir)/normals.h
 jigsaw.o: $(srcdir)/rotator.h
 jigsaw.o: $(HACK_SRC)/screenhackI.h
+jigsaw.o: $(srcdir)/texfont.h
 jigsaw.o: $(UTILS_SRC)/colors.h
 jigsaw.o: $(UTILS_SRC)/grabscreen.h
 jigsaw.o: $(UTILS_SRC)/hsv.h
 jigsaw.o: $(UTILS_SRC)/colors.h
 jigsaw.o: $(UTILS_SRC)/grabscreen.h
 jigsaw.o: $(UTILS_SRC)/hsv.h
@@ -1797,10 +1942,12 @@ juggler3d.o: ../../config.h
 juggler3d.o: $(HACK_SRC)/fps.h
 juggler3d.o: $(srcdir)/gltrackball.h
 juggler3d.o: $(srcdir)/glxfonts.h
 juggler3d.o: $(HACK_SRC)/fps.h
 juggler3d.o: $(srcdir)/gltrackball.h
 juggler3d.o: $(srcdir)/glxfonts.h
+juggler3d.o: $(srcdir)/jwzglesI.h
 juggler3d.o: $(srcdir)/jwzgles.h
 juggler3d.o: $(srcdir)/rotator.h
 juggler3d.o: $(HACK_SRC)/screenhackI.h
 juggler3d.o: $(srcdir)/sphere.h
 juggler3d.o: $(srcdir)/jwzgles.h
 juggler3d.o: $(srcdir)/rotator.h
 juggler3d.o: $(HACK_SRC)/screenhackI.h
 juggler3d.o: $(srcdir)/sphere.h
+juggler3d.o: $(srcdir)/texfont.h
 juggler3d.o: $(srcdir)/tube.h
 juggler3d.o: $(UTILS_SRC)/colors.h
 juggler3d.o: $(UTILS_SRC)/grabscreen.h
 juggler3d.o: $(srcdir)/tube.h
 juggler3d.o: $(UTILS_SRC)/colors.h
 juggler3d.o: $(UTILS_SRC)/grabscreen.h
@@ -1813,10 +1960,11 @@ juggler3d.o: $(UTILS_SRC)/yarandom.h
 juggler3d.o: $(HACK_SRC)/xlockmoreI.h
 juggler3d.o: $(HACK_SRC)/xlockmore.h
 jwzgles.o: ../../config.h
 juggler3d.o: $(HACK_SRC)/xlockmoreI.h
 juggler3d.o: $(HACK_SRC)/xlockmore.h
 jwzgles.o: ../../config.h
-jwzgles.o: $(srcdir)/jwzgles.h
+jwzgles.o: $(srcdir)/jwzglesI.h
 klein.o: ../../config.h
 klein.o: $(HACK_SRC)/fps.h
 klein.o: $(srcdir)/gltrackball.h
 klein.o: ../../config.h
 klein.o: $(HACK_SRC)/fps.h
 klein.o: $(srcdir)/gltrackball.h
+klein.o: $(srcdir)/jwzglesI.h
 klein.o: $(srcdir)/jwzgles.h
 klein.o: $(HACK_SRC)/screenhackI.h
 klein.o: $(UTILS_SRC)/colors.h
 klein.o: $(srcdir)/jwzgles.h
 klein.o: $(HACK_SRC)/screenhackI.h
 klein.o: $(UTILS_SRC)/colors.h
@@ -1832,7 +1980,8 @@ klein.o: $(HACK_SRC)/xlockmore.h
 lament.o: ../../config.h
 lament.o: $(HACK_SRC)/fps.h
 lament.o: $(srcdir)/gltrackball.h
 lament.o: ../../config.h
 lament.o: $(HACK_SRC)/fps.h
 lament.o: $(srcdir)/gltrackball.h
-lament.o: $(HACK_SRC)/images/lament.xpm
+lament.o: $(HACK_SRC)/images/lament512.xpm
+lament.o: $(srcdir)/jwzglesI.h
 lament.o: $(srcdir)/jwzgles.h
 lament.o: $(srcdir)/normals.h
 lament.o: $(srcdir)/rotator.h
 lament.o: $(srcdir)/jwzgles.h
 lament.o: $(srcdir)/normals.h
 lament.o: $(srcdir)/rotator.h
@@ -1851,6 +2000,7 @@ lament.o: $(srcdir)/xpm-ximage.h
 lavalite.o: ../../config.h
 lavalite.o: $(HACK_SRC)/fps.h
 lavalite.o: $(srcdir)/gltrackball.h
 lavalite.o: ../../config.h
 lavalite.o: $(HACK_SRC)/fps.h
 lavalite.o: $(srcdir)/gltrackball.h
+lavalite.o: $(srcdir)/jwzglesI.h
 lavalite.o: $(srcdir)/jwzgles.h
 lavalite.o: $(srcdir)/marching.h
 lavalite.o: $(srcdir)/rotator.h
 lavalite.o: $(srcdir)/jwzgles.h
 lavalite.o: $(srcdir)/marching.h
 lavalite.o: $(srcdir)/rotator.h
@@ -1868,6 +2018,7 @@ lavalite.o: $(HACK_SRC)/xlockmore.h
 lavalite.o: $(srcdir)/xpm-ximage.h
 lockward.o: ../../config.h
 lockward.o: $(HACK_SRC)/fps.h
 lavalite.o: $(srcdir)/xpm-ximage.h
 lockward.o: ../../config.h
 lockward.o: $(HACK_SRC)/fps.h
+lockward.o: $(srcdir)/jwzglesI.h
 lockward.o: $(srcdir)/jwzgles.h
 lockward.o: $(HACK_SRC)/screenhackI.h
 lockward.o: $(UTILS_SRC)/colors.h
 lockward.o: $(srcdir)/jwzgles.h
 lockward.o: $(HACK_SRC)/screenhackI.h
 lockward.o: $(UTILS_SRC)/colors.h
@@ -1881,12 +2032,14 @@ lockward.o: $(UTILS_SRC)/yarandom.h
 lockward.o: $(HACK_SRC)/xlockmoreI.h
 lockward.o: $(HACK_SRC)/xlockmore.h
 marching.o: ../../config.h
 lockward.o: $(HACK_SRC)/xlockmoreI.h
 lockward.o: $(HACK_SRC)/xlockmore.h
 marching.o: ../../config.h
+marching.o: $(srcdir)/jwzglesI.h
 marching.o: $(srcdir)/jwzgles.h
 marching.o: $(srcdir)/marching.h
 marching.o: $(srcdir)/normals.h
 menger.o: ../../config.h
 menger.o: $(HACK_SRC)/fps.h
 menger.o: $(srcdir)/gltrackball.h
 marching.o: $(srcdir)/jwzgles.h
 marching.o: $(srcdir)/marching.h
 marching.o: $(srcdir)/normals.h
 menger.o: ../../config.h
 menger.o: $(HACK_SRC)/fps.h
 menger.o: $(srcdir)/gltrackball.h
+menger.o: $(srcdir)/jwzglesI.h
 menger.o: $(srcdir)/jwzgles.h
 menger.o: $(srcdir)/rotator.h
 menger.o: $(HACK_SRC)/screenhackI.h
 menger.o: $(srcdir)/jwzgles.h
 menger.o: $(srcdir)/rotator.h
 menger.o: $(HACK_SRC)/screenhackI.h
@@ -1904,6 +2057,7 @@ mirrorblob.o: ../../config.h
 mirrorblob.o: $(HACK_SRC)/fps.h
 mirrorblob.o: $(srcdir)/gltrackball.h
 mirrorblob.o: $(srcdir)/grab-ximage.h
 mirrorblob.o: $(HACK_SRC)/fps.h
 mirrorblob.o: $(srcdir)/gltrackball.h
 mirrorblob.o: $(srcdir)/grab-ximage.h
+mirrorblob.o: $(srcdir)/jwzglesI.h
 mirrorblob.o: $(srcdir)/jwzgles.h
 mirrorblob.o: $(HACK_SRC)/screenhackI.h
 mirrorblob.o: $(UTILS_SRC)/colors.h
 mirrorblob.o: $(srcdir)/jwzgles.h
 mirrorblob.o: $(HACK_SRC)/screenhackI.h
 mirrorblob.o: $(UTILS_SRC)/colors.h
@@ -1920,6 +2074,7 @@ moebiusgears.o: ../../config.h
 moebiusgears.o: $(HACK_SRC)/fps.h
 moebiusgears.o: $(srcdir)/gltrackball.h
 moebiusgears.o: $(srcdir)/involute.h
 moebiusgears.o: $(HACK_SRC)/fps.h
 moebiusgears.o: $(srcdir)/gltrackball.h
 moebiusgears.o: $(srcdir)/involute.h
+moebiusgears.o: $(srcdir)/jwzglesI.h
 moebiusgears.o: $(srcdir)/jwzgles.h
 moebiusgears.o: $(srcdir)/normals.h
 moebiusgears.o: $(srcdir)/rotator.h
 moebiusgears.o: $(srcdir)/jwzgles.h
 moebiusgears.o: $(srcdir)/normals.h
 moebiusgears.o: $(srcdir)/rotator.h
@@ -1935,12 +2090,14 @@ moebiusgears.o: $(UTILS_SRC)/yarandom.h
 moebiusgears.o: $(HACK_SRC)/xlockmoreI.h
 moebiusgears.o: $(HACK_SRC)/xlockmore.h
 moebius.o: ../../config.h
 moebiusgears.o: $(HACK_SRC)/xlockmoreI.h
 moebiusgears.o: $(HACK_SRC)/xlockmore.h
 moebius.o: ../../config.h
-moebius.o: $(srcdir)/e_textures.h
 moebius.o: $(HACK_SRC)/fps.h
 moebius.o: $(srcdir)/gltrackball.h
 moebius.o: $(HACK_SRC)/fps.h
 moebius.o: $(srcdir)/gltrackball.h
+moebius.o: $(srcdir)/jwzglesI.h
 moebius.o: $(srcdir)/jwzgles.h
 moebius.o: $(srcdir)/rotator.h
 moebius.o: $(HACK_SRC)/screenhackI.h
 moebius.o: $(srcdir)/jwzgles.h
 moebius.o: $(srcdir)/rotator.h
 moebius.o: $(HACK_SRC)/screenhackI.h
+moebius.o: $(srcdir)/sphere.h
+moebius.o: $(srcdir)/tube.h
 moebius.o: $(UTILS_SRC)/colors.h
 moebius.o: $(UTILS_SRC)/grabscreen.h
 moebius.o: $(UTILS_SRC)/hsv.h
 moebius.o: $(UTILS_SRC)/colors.h
 moebius.o: $(UTILS_SRC)/grabscreen.h
 moebius.o: $(UTILS_SRC)/hsv.h
@@ -1955,11 +2112,13 @@ molecule.o: ../../config.h
 molecule.o: $(HACK_SRC)/fps.h
 molecule.o: $(srcdir)/gltrackball.h
 molecule.o: $(srcdir)/glxfonts.h
 molecule.o: $(HACK_SRC)/fps.h
 molecule.o: $(srcdir)/gltrackball.h
 molecule.o: $(srcdir)/glxfonts.h
+molecule.o: $(srcdir)/jwzglesI.h
 molecule.o: $(srcdir)/jwzgles.h
 molecule.o: molecules.h
 molecule.o: $(srcdir)/rotator.h
 molecule.o: $(HACK_SRC)/screenhackI.h
 molecule.o: $(srcdir)/sphere.h
 molecule.o: $(srcdir)/jwzgles.h
 molecule.o: molecules.h
 molecule.o: $(srcdir)/rotator.h
 molecule.o: $(HACK_SRC)/screenhackI.h
 molecule.o: $(srcdir)/sphere.h
+molecule.o: $(srcdir)/texfont.h
 molecule.o: $(srcdir)/tube.h
 molecule.o: $(UTILS_SRC)/colors.h
 molecule.o: $(UTILS_SRC)/grabscreen.h
 molecule.o: $(srcdir)/tube.h
 molecule.o: $(UTILS_SRC)/colors.h
 molecule.o: $(UTILS_SRC)/grabscreen.h
@@ -1973,6 +2132,7 @@ molecule.o: $(HACK_SRC)/xlockmoreI.h
 molecule.o: $(HACK_SRC)/xlockmore.h
 morph3d.o: ../../config.h
 morph3d.o: $(HACK_SRC)/fps.h
 molecule.o: $(HACK_SRC)/xlockmore.h
 morph3d.o: ../../config.h
 morph3d.o: $(HACK_SRC)/fps.h
+morph3d.o: $(srcdir)/jwzglesI.h
 morph3d.o: $(srcdir)/jwzgles.h
 morph3d.o: $(HACK_SRC)/screenhackI.h
 morph3d.o: $(UTILS_SRC)/colors.h
 morph3d.o: $(srcdir)/jwzgles.h
 morph3d.o: $(HACK_SRC)/screenhackI.h
 morph3d.o: $(UTILS_SRC)/colors.h
@@ -1987,6 +2147,7 @@ morph3d.o: $(HACK_SRC)/xlockmoreI.h
 morph3d.o: $(HACK_SRC)/xlockmore.h
 noof.o: ../../config.h
 noof.o: $(HACK_SRC)/fps.h
 morph3d.o: $(HACK_SRC)/xlockmore.h
 noof.o: ../../config.h
 noof.o: $(HACK_SRC)/fps.h
+noof.o: $(srcdir)/jwzglesI.h
 noof.o: $(srcdir)/jwzgles.h
 noof.o: $(HACK_SRC)/screenhackI.h
 noof.o: $(UTILS_SRC)/colors.h
 noof.o: $(srcdir)/jwzgles.h
 noof.o: $(HACK_SRC)/screenhackI.h
 noof.o: $(UTILS_SRC)/colors.h
@@ -2000,11 +2161,14 @@ noof.o: $(UTILS_SRC)/yarandom.h
 noof.o: $(HACK_SRC)/xlockmoreI.h
 noof.o: $(HACK_SRC)/xlockmore.h
 normals.o: ../../config.h
 noof.o: $(HACK_SRC)/xlockmoreI.h
 noof.o: $(HACK_SRC)/xlockmore.h
 normals.o: ../../config.h
+normals.o: $(srcdir)/jwzglesI.h
+normals.o: $(srcdir)/jwzgles.h
 normals.o: $(srcdir)/normals.h
 photopile.o: ../../config.h
 photopile.o: $(srcdir)/dropshadow.h
 photopile.o: $(HACK_SRC)/fps.h
 photopile.o: $(srcdir)/grab-ximage.h
 normals.o: $(srcdir)/normals.h
 photopile.o: ../../config.h
 photopile.o: $(srcdir)/dropshadow.h
 photopile.o: $(HACK_SRC)/fps.h
 photopile.o: $(srcdir)/grab-ximage.h
+photopile.o: $(srcdir)/jwzglesI.h
 photopile.o: $(srcdir)/jwzgles.h
 photopile.o: $(HACK_SRC)/screenhackI.h
 photopile.o: $(srcdir)/texfont.h
 photopile.o: $(srcdir)/jwzgles.h
 photopile.o: $(HACK_SRC)/screenhackI.h
 photopile.o: $(srcdir)/texfont.h
@@ -2023,9 +2187,11 @@ pinion.o: $(HACK_SRC)/fps.h
 pinion.o: $(srcdir)/gltrackball.h
 pinion.o: $(srcdir)/glxfonts.h
 pinion.o: $(srcdir)/involute.h
 pinion.o: $(srcdir)/gltrackball.h
 pinion.o: $(srcdir)/glxfonts.h
 pinion.o: $(srcdir)/involute.h
+pinion.o: $(srcdir)/jwzglesI.h
 pinion.o: $(srcdir)/jwzgles.h
 pinion.o: $(srcdir)/normals.h
 pinion.o: $(HACK_SRC)/screenhackI.h
 pinion.o: $(srcdir)/jwzgles.h
 pinion.o: $(srcdir)/normals.h
 pinion.o: $(HACK_SRC)/screenhackI.h
+pinion.o: $(srcdir)/texfont.h
 pinion.o: $(UTILS_SRC)/colors.h
 pinion.o: $(UTILS_SRC)/grabscreen.h
 pinion.o: $(UTILS_SRC)/hsv.h
 pinion.o: $(UTILS_SRC)/colors.h
 pinion.o: $(UTILS_SRC)/grabscreen.h
 pinion.o: $(UTILS_SRC)/hsv.h
@@ -2037,11 +2203,17 @@ pinion.o: $(UTILS_SRC)/yarandom.h
 pinion.o: $(HACK_SRC)/xlockmoreI.h
 pinion.o: $(HACK_SRC)/xlockmore.h
 pipeobjs.o: $(srcdir)/buildlwo.h
 pinion.o: $(HACK_SRC)/xlockmoreI.h
 pinion.o: $(HACK_SRC)/xlockmore.h
 pipeobjs.o: $(srcdir)/buildlwo.h
+pipeobjs.o: ../../config.h
+pipeobjs.o: $(srcdir)/jwzglesI.h
+pipeobjs.o: $(srcdir)/jwzgles.h
 pipes.o: $(srcdir)/buildlwo.h
 pipes.o: ../../config.h
 pipes.o: $(HACK_SRC)/fps.h
 pipes.o: $(srcdir)/buildlwo.h
 pipes.o: ../../config.h
 pipes.o: $(HACK_SRC)/fps.h
+pipes.o: $(srcdir)/gltrackball.h
+pipes.o: $(srcdir)/jwzglesI.h
 pipes.o: $(srcdir)/jwzgles.h
 pipes.o: $(HACK_SRC)/screenhackI.h
 pipes.o: $(srcdir)/jwzgles.h
 pipes.o: $(HACK_SRC)/screenhackI.h
+pipes.o: $(srcdir)/sphere.h
 pipes.o: $(srcdir)/teapot.h
 pipes.o: $(UTILS_SRC)/colors.h
 pipes.o: $(UTILS_SRC)/grabscreen.h
 pipes.o: $(srcdir)/teapot.h
 pipes.o: $(UTILS_SRC)/colors.h
 pipes.o: $(UTILS_SRC)/grabscreen.h
@@ -2057,12 +2229,14 @@ polyhedra-gl.o: ../../config.h
 polyhedra-gl.o: $(HACK_SRC)/fps.h
 polyhedra-gl.o: $(srcdir)/gltrackball.h
 polyhedra-gl.o: $(srcdir)/glxfonts.h
 polyhedra-gl.o: $(HACK_SRC)/fps.h
 polyhedra-gl.o: $(srcdir)/gltrackball.h
 polyhedra-gl.o: $(srcdir)/glxfonts.h
+polyhedra-gl.o: $(srcdir)/jwzglesI.h
 polyhedra-gl.o: $(srcdir)/jwzgles.h
 polyhedra-gl.o: $(srcdir)/normals.h
 polyhedra-gl.o: $(srcdir)/polyhedra.h
 polyhedra-gl.o: $(srcdir)/rotator.h
 polyhedra-gl.o: $(HACK_SRC)/screenhackI.h
 polyhedra-gl.o: $(srcdir)/teapot.h
 polyhedra-gl.o: $(srcdir)/jwzgles.h
 polyhedra-gl.o: $(srcdir)/normals.h
 polyhedra-gl.o: $(srcdir)/polyhedra.h
 polyhedra-gl.o: $(srcdir)/rotator.h
 polyhedra-gl.o: $(HACK_SRC)/screenhackI.h
 polyhedra-gl.o: $(srcdir)/teapot.h
+polyhedra-gl.o: $(srcdir)/texfont.h
 polyhedra-gl.o: $(UTILS_SRC)/colors.h
 polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h
 polyhedra-gl.o: $(UTILS_SRC)/hsv.h
 polyhedra-gl.o: $(UTILS_SRC)/colors.h
 polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h
 polyhedra-gl.o: $(UTILS_SRC)/hsv.h
@@ -2078,6 +2252,7 @@ polyhedra.o: $(srcdir)/polyhedra.h
 polytopes.o: ../../config.h
 polytopes.o: $(HACK_SRC)/fps.h
 polytopes.o: $(srcdir)/gltrackball.h
 polytopes.o: ../../config.h
 polytopes.o: $(HACK_SRC)/fps.h
 polytopes.o: $(srcdir)/gltrackball.h
+polytopes.o: $(srcdir)/jwzglesI.h
 polytopes.o: $(srcdir)/jwzgles.h
 polytopes.o: $(HACK_SRC)/screenhackI.h
 polytopes.o: $(UTILS_SRC)/colors.h
 polytopes.o: $(srcdir)/jwzgles.h
 polytopes.o: $(HACK_SRC)/screenhackI.h
 polytopes.o: $(UTILS_SRC)/colors.h
@@ -2093,6 +2268,7 @@ polytopes.o: $(HACK_SRC)/xlockmore.h
 providence.o: ../../config.h
 providence.o: $(HACK_SRC)/fps.h
 providence.o: $(srcdir)/gltrackball.h
 providence.o: ../../config.h
 providence.o: $(HACK_SRC)/fps.h
 providence.o: $(srcdir)/gltrackball.h
+providence.o: $(srcdir)/jwzglesI.h
 providence.o: $(srcdir)/jwzgles.h
 providence.o: $(HACK_SRC)/screenhackI.h
 providence.o: $(UTILS_SRC)/colors.h
 providence.o: $(srcdir)/jwzgles.h
 providence.o: $(HACK_SRC)/screenhackI.h
 providence.o: $(UTILS_SRC)/colors.h
@@ -2107,6 +2283,7 @@ providence.o: $(HACK_SRC)/xlockmoreI.h
 providence.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: ../../config.h
 pulsar.o: $(HACK_SRC)/fps.h
 providence.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: ../../config.h
 pulsar.o: $(HACK_SRC)/fps.h
+pulsar.o: $(srcdir)/jwzglesI.h
 pulsar.o: $(srcdir)/jwzgles.h
 pulsar.o: $(HACK_SRC)/screenhackI.h
 pulsar.o: $(UTILS_SRC)/colors.h
 pulsar.o: $(srcdir)/jwzgles.h
 pulsar.o: $(HACK_SRC)/screenhackI.h
 pulsar.o: $(UTILS_SRC)/colors.h
@@ -2120,9 +2297,11 @@ pulsar.o: $(UTILS_SRC)/yarandom.h
 pulsar.o: $(HACK_SRC)/xlockmoreI.h
 pulsar.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: $(srcdir)/xpm-ximage.h
 pulsar.o: $(HACK_SRC)/xlockmoreI.h
 pulsar.o: $(HACK_SRC)/xlockmore.h
 pulsar.o: $(srcdir)/xpm-ximage.h
+queens.o: $(srcdir)/chessmodels.h
 queens.o: ../../config.h
 queens.o: $(HACK_SRC)/fps.h
 queens.o: $(srcdir)/gltrackball.h
 queens.o: ../../config.h
 queens.o: $(HACK_SRC)/fps.h
 queens.o: $(srcdir)/gltrackball.h
+queens.o: $(srcdir)/jwzglesI.h
 queens.o: $(srcdir)/jwzgles.h
 queens.o: $(HACK_SRC)/screenhackI.h
 queens.o: $(UTILS_SRC)/colors.h
 queens.o: $(srcdir)/jwzgles.h
 queens.o: $(HACK_SRC)/screenhackI.h
 queens.o: $(UTILS_SRC)/colors.h
@@ -2141,6 +2320,7 @@ rotator.o: $(UTILS_SRC)/yarandom.h
 rubikblocks.o: ../../config.h
 rubikblocks.o: $(HACK_SRC)/fps.h
 rubikblocks.o: $(srcdir)/gltrackball.h
 rubikblocks.o: ../../config.h
 rubikblocks.o: $(HACK_SRC)/fps.h
 rubikblocks.o: $(srcdir)/gltrackball.h
+rubikblocks.o: $(srcdir)/jwzglesI.h
 rubikblocks.o: $(srcdir)/jwzgles.h
 rubikblocks.o: $(srcdir)/rotator.h
 rubikblocks.o: $(HACK_SRC)/screenhackI.h
 rubikblocks.o: $(srcdir)/jwzgles.h
 rubikblocks.o: $(srcdir)/rotator.h
 rubikblocks.o: $(HACK_SRC)/screenhackI.h
@@ -2156,6 +2336,8 @@ rubikblocks.o: $(HACK_SRC)/xlockmoreI.h
 rubikblocks.o: $(HACK_SRC)/xlockmore.h
 rubik.o: ../../config.h
 rubik.o: $(HACK_SRC)/fps.h
 rubikblocks.o: $(HACK_SRC)/xlockmore.h
 rubik.o: ../../config.h
 rubik.o: $(HACK_SRC)/fps.h
+rubik.o: $(srcdir)/gltrackball.h
+rubik.o: $(srcdir)/jwzglesI.h
 rubik.o: $(srcdir)/jwzgles.h
 rubik.o: $(HACK_SRC)/screenhackI.h
 rubik.o: $(UTILS_SRC)/colors.h
 rubik.o: $(srcdir)/jwzgles.h
 rubik.o: $(HACK_SRC)/screenhackI.h
 rubik.o: $(UTILS_SRC)/colors.h
@@ -2168,18 +2350,40 @@ rubik.o: $(UTILS_SRC)/xshm.h
 rubik.o: $(UTILS_SRC)/yarandom.h
 rubik.o: $(HACK_SRC)/xlockmoreI.h
 rubik.o: $(HACK_SRC)/xlockmore.h
 rubik.o: $(UTILS_SRC)/yarandom.h
 rubik.o: $(HACK_SRC)/xlockmoreI.h
 rubik.o: $(HACK_SRC)/xlockmore.h
+s1_1.o: ../../config.h
 s1_1.o: $(srcdir)/gllist.h
 s1_1.o: $(srcdir)/gllist.h
+s1_1.o: $(srcdir)/jwzglesI.h
+s1_1.o: $(srcdir)/jwzgles.h
+s1_2.o: ../../config.h
 s1_2.o: $(srcdir)/gllist.h
 s1_2.o: $(srcdir)/gllist.h
+s1_2.o: $(srcdir)/jwzglesI.h
+s1_2.o: $(srcdir)/jwzgles.h
+s1_3.o: ../../config.h
 s1_3.o: $(srcdir)/gllist.h
 s1_3.o: $(srcdir)/gllist.h
+s1_3.o: $(srcdir)/jwzglesI.h
+s1_3.o: $(srcdir)/jwzgles.h
+s1_4.o: ../../config.h
 s1_4.o: $(srcdir)/gllist.h
 s1_4.o: $(srcdir)/gllist.h
+s1_4.o: $(srcdir)/jwzglesI.h
+s1_4.o: $(srcdir)/jwzgles.h
+s1_5.o: ../../config.h
 s1_5.o: $(srcdir)/gllist.h
 s1_5.o: $(srcdir)/gllist.h
+s1_5.o: $(srcdir)/jwzglesI.h
+s1_5.o: $(srcdir)/jwzgles.h
+s1_6.o: ../../config.h
 s1_6.o: $(srcdir)/gllist.h
 s1_6.o: $(srcdir)/gllist.h
+s1_6.o: $(srcdir)/jwzglesI.h
+s1_6.o: $(srcdir)/jwzgles.h
+s1_b.o: ../../config.h
 s1_b.o: $(srcdir)/gllist.h
 s1_b.o: $(srcdir)/gllist.h
+s1_b.o: $(srcdir)/jwzglesI.h
+s1_b.o: $(srcdir)/jwzgles.h
 sballs.o: ../../config.h
 sballs.o: $(HACK_SRC)/fps.h
 sballs.o: $(srcdir)/gltrackball.h
 sballs.o: $(HACK_SRC)/images/sball-bg.xpm
 sballs.o: $(HACK_SRC)/images/sball.xpm
 sballs.o: ../../config.h
 sballs.o: $(HACK_SRC)/fps.h
 sballs.o: $(srcdir)/gltrackball.h
 sballs.o: $(HACK_SRC)/images/sball-bg.xpm
 sballs.o: $(HACK_SRC)/images/sball.xpm
+sballs.o: $(srcdir)/jwzglesI.h
 sballs.o: $(srcdir)/jwzgles.h
 sballs.o: $(HACK_SRC)/screenhackI.h
 sballs.o: $(UTILS_SRC)/colors.h
 sballs.o: $(srcdir)/jwzgles.h
 sballs.o: $(HACK_SRC)/screenhackI.h
 sballs.o: $(UTILS_SRC)/colors.h
@@ -2196,6 +2400,8 @@ sballs.o: $(srcdir)/xpm-ximage.h
 shark.o: $(srcdir)/atlantis.h
 shark.o: ../../config.h
 shark.o: $(HACK_SRC)/fps.h
 shark.o: $(srcdir)/atlantis.h
 shark.o: ../../config.h
 shark.o: $(HACK_SRC)/fps.h
+shark.o: $(srcdir)/jwzglesI.h
+shark.o: $(srcdir)/jwzgles.h
 shark.o: $(HACK_SRC)/screenhackI.h
 shark.o: $(UTILS_SRC)/colors.h
 shark.o: $(UTILS_SRC)/grabscreen.h
 shark.o: $(HACK_SRC)/screenhackI.h
 shark.o: $(UTILS_SRC)/colors.h
 shark.o: $(UTILS_SRC)/grabscreen.h
@@ -2207,6 +2413,7 @@ shark.o: $(UTILS_SRC)/yarandom.h
 sierpinski3d.o: ../../config.h
 sierpinski3d.o: $(HACK_SRC)/fps.h
 sierpinski3d.o: $(srcdir)/gltrackball.h
 sierpinski3d.o: ../../config.h
 sierpinski3d.o: $(HACK_SRC)/fps.h
 sierpinski3d.o: $(srcdir)/gltrackball.h
+sierpinski3d.o: $(srcdir)/jwzglesI.h
 sierpinski3d.o: $(srcdir)/jwzgles.h
 sierpinski3d.o: $(srcdir)/rotator.h
 sierpinski3d.o: $(HACK_SRC)/screenhackI.h
 sierpinski3d.o: $(srcdir)/jwzgles.h
 sierpinski3d.o: $(srcdir)/rotator.h
 sierpinski3d.o: $(HACK_SRC)/screenhackI.h
@@ -2224,6 +2431,7 @@ skytentacles.o: ../../config.h
 skytentacles.o: $(HACK_SRC)/fps.h
 skytentacles.o: $(srcdir)/gltrackball.h
 skytentacles.o: $(HACK_SRC)/images/scales.xpm
 skytentacles.o: $(HACK_SRC)/fps.h
 skytentacles.o: $(srcdir)/gltrackball.h
 skytentacles.o: $(HACK_SRC)/images/scales.xpm
+skytentacles.o: $(srcdir)/jwzglesI.h
 skytentacles.o: $(srcdir)/jwzgles.h
 skytentacles.o: $(srcdir)/normals.h
 skytentacles.o: $(srcdir)/rotator.h
 skytentacles.o: $(srcdir)/jwzgles.h
 skytentacles.o: $(srcdir)/normals.h
 skytentacles.o: $(srcdir)/rotator.h
@@ -2254,6 +2462,7 @@ sonar-icmp.o: $(UTILS_SRC)/yarandom.h
 sonar.o: ../../config.h
 sonar.o: $(HACK_SRC)/fps.h
 sonar.o: $(srcdir)/gltrackball.h
 sonar.o: ../../config.h
 sonar.o: $(HACK_SRC)/fps.h
 sonar.o: $(srcdir)/gltrackball.h
+sonar.o: $(srcdir)/jwzglesI.h
 sonar.o: $(srcdir)/jwzgles.h
 sonar.o: $(srcdir)/rotator.h
 sonar.o: $(HACK_SRC)/screenhackI.h
 sonar.o: $(srcdir)/jwzgles.h
 sonar.o: $(srcdir)/rotator.h
 sonar.o: $(HACK_SRC)/screenhackI.h
@@ -2284,10 +2493,12 @@ spheremonics.o: ../../config.h
 spheremonics.o: $(HACK_SRC)/fps.h
 spheremonics.o: $(srcdir)/gltrackball.h
 spheremonics.o: $(srcdir)/glxfonts.h
 spheremonics.o: $(HACK_SRC)/fps.h
 spheremonics.o: $(srcdir)/gltrackball.h
 spheremonics.o: $(srcdir)/glxfonts.h
+spheremonics.o: $(srcdir)/jwzglesI.h
 spheremonics.o: $(srcdir)/jwzgles.h
 spheremonics.o: $(srcdir)/normals.h
 spheremonics.o: $(srcdir)/rotator.h
 spheremonics.o: $(HACK_SRC)/screenhackI.h
 spheremonics.o: $(srcdir)/jwzgles.h
 spheremonics.o: $(srcdir)/normals.h
 spheremonics.o: $(srcdir)/rotator.h
 spheremonics.o: $(HACK_SRC)/screenhackI.h
+spheremonics.o: $(srcdir)/texfont.h
 spheremonics.o: $(UTILS_SRC)/colors.h
 spheremonics.o: $(UTILS_SRC)/grabscreen.h
 spheremonics.o: $(UTILS_SRC)/hsv.h
 spheremonics.o: $(UTILS_SRC)/colors.h
 spheremonics.o: $(UTILS_SRC)/grabscreen.h
 spheremonics.o: $(UTILS_SRC)/hsv.h
@@ -2299,11 +2510,13 @@ spheremonics.o: $(UTILS_SRC)/yarandom.h
 spheremonics.o: $(HACK_SRC)/xlockmoreI.h
 spheremonics.o: $(HACK_SRC)/xlockmore.h
 sphere.o: ../../config.h
 spheremonics.o: $(HACK_SRC)/xlockmoreI.h
 spheremonics.o: $(HACK_SRC)/xlockmore.h
 sphere.o: ../../config.h
+sphere.o: $(srcdir)/jwzglesI.h
 sphere.o: $(srcdir)/jwzgles.h
 sphere.o: $(srcdir)/sphere.h
 sproingies.o: ../../config.h
 sproingies.o: $(HACK_SRC)/fps.h
 sproingies.o: $(srcdir)/gllist.h
 sphere.o: $(srcdir)/jwzgles.h
 sphere.o: $(srcdir)/sphere.h
 sproingies.o: ../../config.h
 sproingies.o: $(HACK_SRC)/fps.h
 sproingies.o: $(srcdir)/gllist.h
+sproingies.o: $(srcdir)/jwzglesI.h
 sproingies.o: $(srcdir)/jwzgles.h
 sproingies.o: $(HACK_SRC)/screenhackI.h
 sproingies.o: $(srcdir)/sproingies.h
 sproingies.o: $(srcdir)/jwzgles.h
 sproingies.o: $(HACK_SRC)/screenhackI.h
 sproingies.o: $(srcdir)/sproingies.h
@@ -2318,6 +2531,7 @@ sproingies.o: $(UTILS_SRC)/yarandom.h
 sproingies.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: ../../config.h
 sproingiewrap.o: $(HACK_SRC)/fps.h
 sproingies.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: ../../config.h
 sproingiewrap.o: $(HACK_SRC)/fps.h
+sproingiewrap.o: $(srcdir)/jwzglesI.h
 sproingiewrap.o: $(srcdir)/jwzgles.h
 sproingiewrap.o: $(HACK_SRC)/screenhackI.h
 sproingiewrap.o: $(srcdir)/sproingies.h
 sproingiewrap.o: $(srcdir)/jwzgles.h
 sproingiewrap.o: $(HACK_SRC)/screenhackI.h
 sproingiewrap.o: $(srcdir)/sproingies.h
@@ -2332,9 +2546,10 @@ sproingiewrap.o: $(UTILS_SRC)/yarandom.h
 sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: $(HACK_SRC)/xlockmore.h
 stairs.o: ../../config.h
 sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h
 sproingiewrap.o: $(HACK_SRC)/xlockmore.h
 stairs.o: ../../config.h
-stairs.o: $(srcdir)/e_textures.h
 stairs.o: $(HACK_SRC)/fps.h
 stairs.o: $(srcdir)/gltrackball.h
 stairs.o: $(HACK_SRC)/fps.h
 stairs.o: $(srcdir)/gltrackball.h
+stairs.o: $(HACK_SRC)/images/wood.xpm
+stairs.o: $(srcdir)/jwzglesI.h
 stairs.o: $(srcdir)/jwzgles.h
 stairs.o: $(HACK_SRC)/screenhackI.h
 stairs.o: $(srcdir)/sphere.h
 stairs.o: $(srcdir)/jwzgles.h
 stairs.o: $(HACK_SRC)/screenhackI.h
 stairs.o: $(srcdir)/sphere.h
@@ -2348,17 +2563,21 @@ stairs.o: $(UTILS_SRC)/xshm.h
 stairs.o: $(UTILS_SRC)/yarandom.h
 stairs.o: $(HACK_SRC)/xlockmoreI.h
 stairs.o: $(HACK_SRC)/xlockmore.h
 stairs.o: $(UTILS_SRC)/yarandom.h
 stairs.o: $(HACK_SRC)/xlockmoreI.h
 stairs.o: $(HACK_SRC)/xlockmore.h
+stairs.o: $(srcdir)/xpm-ximage.h
 starwars.o: ../../config.h
 starwars.o: $(HACK_SRC)/fps.h
 starwars.o: $(srcdir)/glut_roman.h
 starwars.o: $(srcdir)/glutstroke.h
 starwars.o: ../../config.h
 starwars.o: $(HACK_SRC)/fps.h
 starwars.o: $(srcdir)/glut_roman.h
 starwars.o: $(srcdir)/glutstroke.h
+starwars.o: $(srcdir)/jwzglesI.h
 starwars.o: $(srcdir)/jwzgles.h
 starwars.o: $(HACK_SRC)/screenhackI.h
 starwars.o: $(srcdir)/jwzgles.h
 starwars.o: $(HACK_SRC)/screenhackI.h
+starwars.o: $(srcdir)/starwars.h
 starwars.o: $(srcdir)/texfont.h
 starwars.o: $(UTILS_SRC)/colors.h
 starwars.o: $(UTILS_SRC)/grabscreen.h
 starwars.o: $(UTILS_SRC)/hsv.h
 starwars.o: $(UTILS_SRC)/resources.h
 starwars.o: $(srcdir)/texfont.h
 starwars.o: $(UTILS_SRC)/colors.h
 starwars.o: $(UTILS_SRC)/grabscreen.h
 starwars.o: $(UTILS_SRC)/hsv.h
 starwars.o: $(UTILS_SRC)/resources.h
+starwars.o: $(UTILS_SRC)/textclient.h
 starwars.o: $(UTILS_SRC)/usleep.h
 starwars.o: $(UTILS_SRC)/visual.h
 starwars.o: $(UTILS_SRC)/xshm.h
 starwars.o: $(UTILS_SRC)/usleep.h
 starwars.o: $(UTILS_SRC)/visual.h
 starwars.o: $(UTILS_SRC)/xshm.h
@@ -2366,6 +2585,7 @@ starwars.o: $(UTILS_SRC)/yarandom.h
 starwars.o: $(HACK_SRC)/xlockmoreI.h
 starwars.o: $(HACK_SRC)/xlockmore.h
 stonerview-move.o: ../../config.h
 starwars.o: $(HACK_SRC)/xlockmoreI.h
 starwars.o: $(HACK_SRC)/xlockmore.h
 stonerview-move.o: ../../config.h
+stonerview-move.o: $(srcdir)/jwzglesI.h
 stonerview-move.o: $(srcdir)/jwzgles.h
 stonerview-move.o: $(srcdir)/stonerview.h
 stonerview-move.o: $(srcdir)/stonerview-move.h
 stonerview-move.o: $(srcdir)/jwzgles.h
 stonerview-move.o: $(srcdir)/stonerview.h
 stonerview-move.o: $(srcdir)/stonerview-move.h
@@ -2374,6 +2594,7 @@ stonerview-move.o: $(UTILS_SRC)/yarandom.h
 stonerview.o: ../../config.h
 stonerview.o: $(HACK_SRC)/fps.h
 stonerview.o: $(srcdir)/gltrackball.h
 stonerview.o: ../../config.h
 stonerview.o: $(HACK_SRC)/fps.h
 stonerview.o: $(srcdir)/gltrackball.h
+stonerview.o: $(srcdir)/jwzglesI.h
 stonerview.o: $(srcdir)/jwzgles.h
 stonerview.o: $(HACK_SRC)/screenhackI.h
 stonerview.o: $(srcdir)/stonerview.h
 stonerview.o: $(srcdir)/jwzgles.h
 stonerview.o: $(HACK_SRC)/screenhackI.h
 stonerview.o: $(srcdir)/stonerview.h
@@ -2390,18 +2611,21 @@ stonerview.o: $(UTILS_SRC)/yarandom.h
 stonerview.o: $(HACK_SRC)/xlockmoreI.h
 stonerview.o: $(HACK_SRC)/xlockmore.h
 stonerview-osc.o: ../../config.h
 stonerview.o: $(HACK_SRC)/xlockmoreI.h
 stonerview.o: $(HACK_SRC)/xlockmore.h
 stonerview-osc.o: ../../config.h
+stonerview-osc.o: $(srcdir)/jwzglesI.h
 stonerview-osc.o: $(srcdir)/jwzgles.h
 stonerview-osc.o: $(srcdir)/stonerview.h
 stonerview-osc.o: $(srcdir)/stonerview-move.h
 stonerview-osc.o: $(srcdir)/stonerview-osc.h
 stonerview-osc.o: $(UTILS_SRC)/yarandom.h
 stonerview-view.o: ../../config.h
 stonerview-osc.o: $(srcdir)/jwzgles.h
 stonerview-osc.o: $(srcdir)/stonerview.h
 stonerview-osc.o: $(srcdir)/stonerview-move.h
 stonerview-osc.o: $(srcdir)/stonerview-osc.h
 stonerview-osc.o: $(UTILS_SRC)/yarandom.h
 stonerview-view.o: ../../config.h
+stonerview-view.o: $(srcdir)/jwzglesI.h
 stonerview-view.o: $(srcdir)/jwzgles.h
 stonerview-view.o: $(srcdir)/stonerview.h
 stonerview-view.o: $(srcdir)/stonerview-move.h
 stonerview-view.o: $(srcdir)/stonerview-osc.h
 superquadrics.o: ../../config.h
 superquadrics.o: $(HACK_SRC)/fps.h
 stonerview-view.o: $(srcdir)/jwzgles.h
 stonerview-view.o: $(srcdir)/stonerview.h
 stonerview-view.o: $(srcdir)/stonerview-move.h
 stonerview-view.o: $(srcdir)/stonerview-osc.h
 superquadrics.o: ../../config.h
 superquadrics.o: $(HACK_SRC)/fps.h
+superquadrics.o: $(srcdir)/jwzglesI.h
 superquadrics.o: $(srcdir)/jwzgles.h
 superquadrics.o: $(HACK_SRC)/screenhackI.h
 superquadrics.o: $(UTILS_SRC)/colors.h
 superquadrics.o: $(srcdir)/jwzgles.h
 superquadrics.o: $(HACK_SRC)/screenhackI.h
 superquadrics.o: $(UTILS_SRC)/colors.h
@@ -2417,6 +2641,7 @@ superquadrics.o: $(HACK_SRC)/xlockmore.h
 surfaces.o: ../../config.h
 surfaces.o: $(HACK_SRC)/fps.h
 surfaces.o: $(srcdir)/gltrackball.h
 surfaces.o: ../../config.h
 surfaces.o: $(HACK_SRC)/fps.h
 surfaces.o: $(srcdir)/gltrackball.h
+surfaces.o: $(srcdir)/jwzglesI.h
 surfaces.o: $(srcdir)/jwzgles.h
 surfaces.o: $(srcdir)/rotator.h
 surfaces.o: $(HACK_SRC)/screenhackI.h
 surfaces.o: $(srcdir)/jwzgles.h
 surfaces.o: $(srcdir)/rotator.h
 surfaces.o: $(HACK_SRC)/screenhackI.h
@@ -2433,6 +2658,7 @@ surfaces.o: $(HACK_SRC)/xlockmore.h
 swim.o: $(srcdir)/atlantis.h
 swim.o: ../../config.h
 swim.o: $(HACK_SRC)/fps.h
 swim.o: $(srcdir)/atlantis.h
 swim.o: ../../config.h
 swim.o: $(HACK_SRC)/fps.h
+swim.o: $(srcdir)/jwzglesI.h
 swim.o: $(srcdir)/jwzgles.h
 swim.o: $(HACK_SRC)/screenhackI.h
 swim.o: $(UTILS_SRC)/colors.h
 swim.o: $(srcdir)/jwzgles.h
 swim.o: $(HACK_SRC)/screenhackI.h
 swim.o: $(UTILS_SRC)/colors.h
@@ -2447,9 +2673,11 @@ swim.o: $(HACK_SRC)/xlockmoreI.h
 tangram.o: ../../config.h
 tangram.o: $(HACK_SRC)/fps.h
 tangram.o: $(srcdir)/glxfonts.h
 tangram.o: ../../config.h
 tangram.o: $(HACK_SRC)/fps.h
 tangram.o: $(srcdir)/glxfonts.h
+tangram.o: $(srcdir)/jwzglesI.h
 tangram.o: $(srcdir)/jwzgles.h
 tangram.o: $(HACK_SRC)/screenhackI.h
 tangram.o: $(srcdir)/tangram_shapes.h
 tangram.o: $(srcdir)/jwzgles.h
 tangram.o: $(HACK_SRC)/screenhackI.h
 tangram.o: $(srcdir)/tangram_shapes.h
+tangram.o: $(srcdir)/texfont.h
 tangram.o: $(UTILS_SRC)/colors.h
 tangram.o: $(UTILS_SRC)/grabscreen.h
 tangram.o: $(UTILS_SRC)/hsv.h
 tangram.o: $(UTILS_SRC)/colors.h
 tangram.o: $(UTILS_SRC)/grabscreen.h
 tangram.o: $(UTILS_SRC)/hsv.h
@@ -2460,11 +2688,19 @@ tangram.o: $(UTILS_SRC)/xshm.h
 tangram.o: $(UTILS_SRC)/yarandom.h
 tangram.o: $(HACK_SRC)/xlockmoreI.h
 tangram.o: $(HACK_SRC)/xlockmore.h
 tangram.o: $(UTILS_SRC)/yarandom.h
 tangram.o: $(HACK_SRC)/xlockmoreI.h
 tangram.o: $(HACK_SRC)/xlockmore.h
+tangram_shapes.o: ../../config.h
+tangram_shapes.o: $(srcdir)/jwzglesI.h
+tangram_shapes.o: $(srcdir)/jwzgles.h
 tangram_shapes.o: $(srcdir)/tangram_shapes.h
 teapot.o: ../../config.h
 tangram_shapes.o: $(srcdir)/tangram_shapes.h
 teapot.o: ../../config.h
+teapot.o: $(srcdir)/jwzglesI.h
 teapot.o: $(srcdir)/jwzgles.h
 teapot.o: $(srcdir)/jwzgles.h
+teapot.o: $(srcdir)/normals.h
+teapot.o: $(srcdir)/teapot2.h
 teapot.o: $(srcdir)/teapot.h
 texfont.o: ../../config.h
 teapot.o: $(srcdir)/teapot.h
 texfont.o: ../../config.h
+texfont.o: $(srcdir)/jwzglesI.h
+texfont.o: $(srcdir)/jwzgles.h
 texfont.o: $(srcdir)/texfont.h
 texfont.o: $(UTILS_SRC)/resources.h
 timetunnel.o: ../../config.h
 texfont.o: $(srcdir)/texfont.h
 texfont.o: $(UTILS_SRC)/resources.h
 timetunnel.o: ../../config.h
@@ -2474,6 +2710,7 @@ timetunnel.o: $(HACK_SRC)/images/timetunnel0.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel1.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel2.xpm
 timetunnel.o: $(HACK_SRC)/images/tunnelstar.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel1.xpm
 timetunnel.o: $(HACK_SRC)/images/timetunnel2.xpm
 timetunnel.o: $(HACK_SRC)/images/tunnelstar.xpm
+timetunnel.o: $(srcdir)/jwzglesI.h
 timetunnel.o: $(srcdir)/jwzgles.h
 timetunnel.o: $(srcdir)/rotator.h
 timetunnel.o: $(HACK_SRC)/screenhackI.h
 timetunnel.o: $(srcdir)/jwzgles.h
 timetunnel.o: $(srcdir)/rotator.h
 timetunnel.o: $(HACK_SRC)/screenhackI.h
@@ -2489,23 +2726,55 @@ timetunnel.o: $(UTILS_SRC)/yarandom.h
 timetunnel.o: $(HACK_SRC)/xlockmoreI.h
 timetunnel.o: $(HACK_SRC)/xlockmore.h
 timetunnel.o: $(srcdir)/xpm-ximage.h
 timetunnel.o: $(HACK_SRC)/xlockmoreI.h
 timetunnel.o: $(HACK_SRC)/xlockmore.h
 timetunnel.o: $(srcdir)/xpm-ximage.h
+toast2.o: ../../config.h
 toast2.o: $(srcdir)/gllist.h
 toast2.o: $(srcdir)/gllist.h
+toast2.o: $(srcdir)/jwzglesI.h
+toast2.o: $(srcdir)/jwzgles.h
+toaster_base.o: ../../config.h
 toaster_base.o: $(srcdir)/gllist.h
 toaster_base.o: $(srcdir)/gllist.h
+toaster_base.o: $(srcdir)/jwzglesI.h
+toaster_base.o: $(srcdir)/jwzgles.h
+toaster_handle2.o: ../../config.h
 toaster_handle2.o: $(srcdir)/gllist.h
 toaster_handle2.o: $(srcdir)/gllist.h
+toaster_handle2.o: $(srcdir)/jwzglesI.h
+toaster_handle2.o: $(srcdir)/jwzgles.h
+toaster_handle.o: ../../config.h
 toaster_handle.o: $(srcdir)/gllist.h
 toaster_handle.o: $(srcdir)/gllist.h
+toaster_handle.o: $(srcdir)/jwzglesI.h
+toaster_handle.o: $(srcdir)/jwzgles.h
+toaster_jet.o: ../../config.h
 toaster_jet.o: $(srcdir)/gllist.h
 toaster_jet.o: $(srcdir)/gllist.h
+toaster_jet.o: $(srcdir)/jwzglesI.h
+toaster_jet.o: $(srcdir)/jwzgles.h
+toaster_knob.o: ../../config.h
 toaster_knob.o: $(srcdir)/gllist.h
 toaster_knob.o: $(srcdir)/gllist.h
+toaster_knob.o: $(srcdir)/jwzglesI.h
+toaster_knob.o: $(srcdir)/jwzgles.h
+toaster.o: ../../config.h
 toaster.o: $(srcdir)/gllist.h
 toaster.o: $(srcdir)/gllist.h
+toaster.o: $(srcdir)/jwzglesI.h
+toaster.o: $(srcdir)/jwzgles.h
+toaster_slots.o: ../../config.h
 toaster_slots.o: $(srcdir)/gllist.h
 toaster_slots.o: $(srcdir)/gllist.h
+toaster_slots.o: $(srcdir)/jwzglesI.h
+toaster_slots.o: $(srcdir)/jwzgles.h
+toaster_wing.o: ../../config.h
 toaster_wing.o: $(srcdir)/gllist.h
 toaster_wing.o: $(srcdir)/gllist.h
+toaster_wing.o: $(srcdir)/jwzglesI.h
+toaster_wing.o: $(srcdir)/jwzgles.h
+toast.o: ../../config.h
 toast.o: $(srcdir)/gllist.h
 toast.o: $(srcdir)/gllist.h
+toast.o: $(srcdir)/jwzglesI.h
+toast.o: $(srcdir)/jwzgles.h
 topblock.o: ../../config.h
 topblock.o: $(HACK_SRC)/fps.h
 topblock.o: $(srcdir)/gltrackball.h
 topblock.o: ../../config.h
 topblock.o: $(HACK_SRC)/fps.h
 topblock.o: $(srcdir)/gltrackball.h
+topblock.o: $(srcdir)/jwzglesI.h
 topblock.o: $(srcdir)/jwzgles.h
 topblock.o: $(HACK_SRC)/screenhackI.h
 topblock.o: $(srcdir)/sphere.h
 topblock.o: $(srcdir)/topblock.h
 topblock.o: $(srcdir)/jwzgles.h
 topblock.o: $(HACK_SRC)/screenhackI.h
 topblock.o: $(srcdir)/sphere.h
 topblock.o: $(srcdir)/topblock.h
+topblock.o: $(srcdir)/tube.h
 topblock.o: $(UTILS_SRC)/colors.h
 topblock.o: $(UTILS_SRC)/grabscreen.h
 topblock.o: $(UTILS_SRC)/hsv.h
 topblock.o: $(UTILS_SRC)/colors.h
 topblock.o: $(UTILS_SRC)/grabscreen.h
 topblock.o: $(UTILS_SRC)/hsv.h
@@ -2518,13 +2787,23 @@ topblock.o: $(HACK_SRC)/xlockmoreI.h
 topblock.o: $(HACK_SRC)/xlockmore.h
 trackball.o: ../../config.h
 trackball.o: $(srcdir)/trackball.h
 topblock.o: $(HACK_SRC)/xlockmore.h
 trackball.o: ../../config.h
 trackball.o: $(srcdir)/trackball.h
+tronbit_idle1.o: ../../config.h
 tronbit_idle1.o: $(srcdir)/gllist.h
 tronbit_idle1.o: $(srcdir)/gllist.h
+tronbit_idle1.o: $(srcdir)/jwzglesI.h
+tronbit_idle1.o: $(srcdir)/jwzgles.h
+tronbit_idle2.o: ../../config.h
 tronbit_idle2.o: $(srcdir)/gllist.h
 tronbit_idle2.o: $(srcdir)/gllist.h
+tronbit_idle2.o: $(srcdir)/jwzglesI.h
+tronbit_idle2.o: $(srcdir)/jwzgles.h
+tronbit_no.o: ../../config.h
 tronbit_no.o: $(srcdir)/gllist.h
 tronbit_no.o: $(srcdir)/gllist.h
+tronbit_no.o: $(srcdir)/jwzglesI.h
+tronbit_no.o: $(srcdir)/jwzgles.h
 tronbit.o: ../../config.h
 tronbit.o: $(HACK_SRC)/fps.h
 tronbit.o: $(srcdir)/gllist.h
 tronbit.o: $(srcdir)/gltrackball.h
 tronbit.o: ../../config.h
 tronbit.o: $(HACK_SRC)/fps.h
 tronbit.o: $(srcdir)/gllist.h
 tronbit.o: $(srcdir)/gltrackball.h
+tronbit.o: $(srcdir)/jwzglesI.h
 tronbit.o: $(srcdir)/jwzgles.h
 tronbit.o: $(srcdir)/rotator.h
 tronbit.o: $(HACK_SRC)/screenhackI.h
 tronbit.o: $(srcdir)/jwzgles.h
 tronbit.o: $(srcdir)/rotator.h
 tronbit.o: $(HACK_SRC)/screenhackI.h
@@ -2539,12 +2818,17 @@ tronbit.o: $(UTILS_SRC)/xshm.h
 tronbit.o: $(UTILS_SRC)/yarandom.h
 tronbit.o: $(HACK_SRC)/xlockmoreI.h
 tronbit.o: $(HACK_SRC)/xlockmore.h
 tronbit.o: $(UTILS_SRC)/yarandom.h
 tronbit.o: $(HACK_SRC)/xlockmoreI.h
 tronbit.o: $(HACK_SRC)/xlockmore.h
+tronbit_yes.o: ../../config.h
 tronbit_yes.o: $(srcdir)/gllist.h
 tronbit_yes.o: $(srcdir)/gllist.h
+tronbit_yes.o: $(srcdir)/jwzglesI.h
+tronbit_yes.o: $(srcdir)/jwzgles.h
 tube.o: ../../config.h
 tube.o: ../../config.h
+tube.o: $(srcdir)/jwzglesI.h
 tube.o: $(srcdir)/jwzgles.h
 tube.o: $(srcdir)/tube.h
 tunnel_draw.o: ../../config.h
 tunnel_draw.o: $(HACK_SRC)/fps.h
 tube.o: $(srcdir)/jwzgles.h
 tube.o: $(srcdir)/tube.h
 tunnel_draw.o: ../../config.h
 tunnel_draw.o: $(HACK_SRC)/fps.h
+tunnel_draw.o: $(srcdir)/jwzglesI.h
 tunnel_draw.o: $(srcdir)/jwzgles.h
 tunnel_draw.o: $(HACK_SRC)/screenhackI.h
 tunnel_draw.o: $(srcdir)/tunnel_draw.h
 tunnel_draw.o: $(srcdir)/jwzgles.h
 tunnel_draw.o: $(HACK_SRC)/screenhackI.h
 tunnel_draw.o: $(srcdir)/tunnel_draw.h
@@ -2559,6 +2843,7 @@ tunnel_draw.o: $(UTILS_SRC)/yarandom.h
 tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h
 voronoi.o: ../../config.h
 voronoi.o: $(HACK_SRC)/fps.h
 tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h
 voronoi.o: ../../config.h
 voronoi.o: $(HACK_SRC)/fps.h
+voronoi.o: $(srcdir)/jwzglesI.h
 voronoi.o: $(srcdir)/jwzgles.h
 voronoi.o: $(HACK_SRC)/screenhackI.h
 voronoi.o: $(UTILS_SRC)/colors.h
 voronoi.o: $(srcdir)/jwzgles.h
 voronoi.o: $(HACK_SRC)/screenhackI.h
 voronoi.o: $(UTILS_SRC)/colors.h
@@ -2574,6 +2859,8 @@ voronoi.o: $(HACK_SRC)/xlockmore.h
 whale.o: $(srcdir)/atlantis.h
 whale.o: ../../config.h
 whale.o: $(HACK_SRC)/fps.h
 whale.o: $(srcdir)/atlantis.h
 whale.o: ../../config.h
 whale.o: $(HACK_SRC)/fps.h
+whale.o: $(srcdir)/jwzglesI.h
+whale.o: $(srcdir)/jwzgles.h
 whale.o: $(HACK_SRC)/screenhackI.h
 whale.o: $(UTILS_SRC)/colors.h
 whale.o: $(UTILS_SRC)/grabscreen.h
 whale.o: $(HACK_SRC)/screenhackI.h
 whale.o: $(UTILS_SRC)/colors.h
 whale.o: $(UTILS_SRC)/grabscreen.h
@@ -2585,8 +2872,10 @@ whale.o: $(UTILS_SRC)/yarandom.h
 xlock-gl-utils.o: ../../config.h
 xlock-gl-utils.o: $(HACK_SRC)/fps.h
 xlock-gl-utils.o: $(srcdir)/glxfonts.h
 xlock-gl-utils.o: ../../config.h
 xlock-gl-utils.o: $(HACK_SRC)/fps.h
 xlock-gl-utils.o: $(srcdir)/glxfonts.h
+xlock-gl-utils.o: $(srcdir)/jwzglesI.h
 xlock-gl-utils.o: $(srcdir)/jwzgles.h
 xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h
 xlock-gl-utils.o: $(srcdir)/jwzgles.h
 xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h
+xlock-gl-utils.o: $(srcdir)/texfont.h
 xlock-gl-utils.o: $(UTILS_SRC)/colors.h
 xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h
 xlock-gl-utils.o: $(UTILS_SRC)/hsv.h
 xlock-gl-utils.o: $(UTILS_SRC)/colors.h
 xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h
 xlock-gl-utils.o: $(UTILS_SRC)/hsv.h
index 3c9e1de3da3f1ce7aea10fb83065e6c3a0cc6940..0ca7f05f433bc7f9042b05a2ba4379693f05b556 100644 (file)
@@ -1504,9 +1504,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)),  */
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */
 
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)),  */
 /*            started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */
 
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0);
 
 
   glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0);
 
@@ -1539,9 +1537,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
   glTranslatef(0.0, 0.0, -16.0);
   glRotatef(60.0, 1.0, 0.0, 0.0);
   glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0);
   glTranslatef(0.0, 0.0, -16.0);
   glRotatef(60.0, 1.0, 0.0, 0.0);
   glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* sync */
   if(!draw_antmaze_strip(mi)) {
 
   /* sync */
   if(!draw_antmaze_strip(mi)) {
index ee244ea5c137b38fe7bdd95d488ef9258c2cb090..29eee782af6de99df3e09307f59b3e209cf5c5e7 100644 (file)
@@ -196,7 +196,7 @@ static void Init(ModeInfo * mi)
                LoadTexture(mi, texture5,5);
                glEnable(GL_TEXTURE_2D);
        }
                LoadTexture(mi, texture5,5);
                glEnable(GL_TEXTURE_2D);
        }
-       sa->ts = InitTunnel();
+       sa->ts = atunnel_InitTunnel();
        
        /* Set lighting parameters */
        if (do_light)
        
        /* Set lighting parameters */
        if (do_light)
@@ -270,8 +270,8 @@ ENTRYPOINT void draw_atunnel(ModeInfo * mi)
 
        glLoadIdentity();
 
 
        glLoadIdentity();
 
-       DrawTunnel(sa->ts, do_texture, do_light, sa->texture);
-       SplashScreen(sa->ts, do_wire, do_texture, do_light);
+       atunnel_DrawTunnel(sa->ts, do_texture, do_light, sa->texture);
+       atunnel_SplashScreen(sa->ts, do_wire, do_texture, do_light);
 
        glFlush();  
        /* manage framerate display */
 
        glFlush();  
        /* manage framerate display */
index 979907210a19beacc86b0ad42d38e4c578ba1326..3396217ffeabe84c5fe0b091722734d93d154c7b 100644 (file)
@@ -1,4 +1,4 @@
-/* boing, Copyright (c) 2005-2008 Jamie Zawinski <jwz@jwz.org>
+/* boing, Copyright (c) 2005-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -461,6 +461,13 @@ reshape_boing (ModeInfo *mi, int width, int height)
 
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
 
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
+
+  if (height > width)
+    {
+      GLfloat s = width / (GLfloat) height;
+      glScalef (s, s, s);
+    }
+
   gluPerspective (8.0, 1/h, 1.0, 10.0);
 
   glMatrixMode(GL_MODELVIEW);
   gluPerspective (8.0, 1/h, 1.0, 10.0);
 
   glMatrixMode(GL_MODELVIEW);
@@ -629,8 +636,19 @@ draw_boing (ModeInfo *mi)
     tick_physics (mi);
 
   glPushMatrix ();
     tick_physics (mi);
 
   glPushMatrix ();
+
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (1/s, s, 1);
+      }
+  }
+
   gltrackball_rotate (bp->trackball);
   gltrackball_rotate (bp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos);
 
 
   glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos);
 
index 21ece3c7dc714d70dc88716f40f40faf61ac0974..b769c1172c9eea34f4dc829bf6c5da125c77e1da 100644 (file)
@@ -447,6 +447,8 @@ draw_floater (ModeInfo *mi, floater *f)
   glPushMatrix();
   glTranslatef (f->x, f->y, f->z);
 
   glPushMatrix();
   glTranslatef (f->x, f->y, f->z);
 
+  gltrackball_rotate (bp->trackball);
+
   glRotatef (y * 360, 0.0, 1.0, 0.0);
   if (f->spinner_p)
     {
   glRotatef (y * 360, 0.0, 1.0, 0.0);
   if (f->spinner_p)
     {
@@ -500,7 +502,6 @@ draw_cow (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-  gltrackball_rotate (bp->trackball);
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   glScalef (0.5, 0.5, 0.5);
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   glScalef (0.5, 0.5, 0.5);
index 2a2a0ceeb3f08bdd26f04f07c7902adbdcfd7bd3..49abc5814cb4ff786507ba09257dcaa5cdc6a5f9 100644 (file)
@@ -516,13 +516,23 @@ loading_msg (ModeInfo *mi, int n)
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
 
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
-  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
 
 
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+  }
+
+  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
   glTranslatef ((MI_WIDTH(mi)  - ss->loading_sw) / 2,
                 (MI_HEIGHT(mi) - ss->loading_sh) / 2,
                 0);
   glTranslatef ((MI_WIDTH(mi)  - ss->loading_sw) / 2,
                 (MI_HEIGHT(mi) - ss->loading_sh) / 2,
                 0);
@@ -833,6 +843,8 @@ draw_carousel (ModeInfo *mi)
 
   glPushMatrix();
 
 
   glPushMatrix();
 
+  glRotatef(current_device_rotation(), 0, 0, 1);
+
 
   /* Run the startup "un-shrink" animation.
    */
 
   /* Run the startup "un-shrink" animation.
    */
@@ -868,7 +880,6 @@ draw_carousel (ModeInfo *mi)
   {
     double x, y, z;
     gltrackball_rotate (ss->trackball);
   {
     double x, y, z;
     gltrackball_rotate (ss->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     /* Tilt the tube up or down by up to 30 degrees */
     get_position (ss->rot, &x, &y, &z, !ss->button_down_p);
 
     /* Tilt the tube up or down by up to 30 degrees */
     get_position (ss->rot, &x, &y, &z, !ss->button_down_p);
index a752d4f75de06af0c2e52e659caf2123f172a2ef..28f5c57070eda9fdf6ed71545183c587e76447ef 100644 (file)
@@ -42,7 +42,7 @@ typedef struct {
 } ChessGame;
 
 #define GAMES 7
 } ChessGame;
 
 #define GAMES 7
-ChessGame games[GAMES] = {
+static ChessGame games[GAMES] = {
   
   /** 
       game 1:
   
   /** 
       game 1:
index d47895aaaa896b953705aa03d37d059f3c45a26c..eac7b25273d631f177c828e7406dbe853e3b187c 100644 (file)
 #define SETBACKREF 65524
 #define BACKREF 65523
 
 #define SETBACKREF 65524
 #define BACKREF 65523
 
-unsigned short classic_pawn_data[] = {
+static unsigned short classic_pawn_data[] = {
   SPIN,16,
   350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880,
   SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340,
   ENDOFDATA
 };
 
   SPIN,16,
   350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880,
   SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340,
   ENDOFDATA
 };
 
-unsigned short classic_rook_data[] = {
+static unsigned short classic_rook_data[] = {
   SPIN,16,
   380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300,
   ENDOFDATA
 };
 
   SPIN,16,
   380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300,
   ENDOFDATA
 };
 
-unsigned short classic_knight_data[] = {
+static unsigned short classic_knight_data[] = {
   SPIN,16,
   410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580,
 
   SPIN,16,
   410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580,
 
@@ -161,7 +161,7 @@ unsigned short classic_knight_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short classic_bishop_data[] = {
+static unsigned short classic_bishop_data[] = {
   SPIN,16,
   400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940,
   SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480,
   SPIN,16,
   400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940,
   SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480,
@@ -169,7 +169,7 @@ unsigned short classic_bishop_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short classic_queen_data[] = {
+static unsigned short classic_queen_data[] = {
   SPIN,16,
   480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180,
   SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920,
   SPIN,16,
   480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180,
   SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920,
@@ -178,7 +178,7 @@ unsigned short classic_queen_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short classic_king_data[] = {
+static unsigned short classic_king_data[] = {
   SPIN,16,
   500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260,
   SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970,
   SPIN,16,
   500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260,
   SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970,
@@ -205,7 +205,7 @@ unsigned short classic_king_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short knight_data[] = {
+static unsigned short knight_data[] = {
   VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611,
   6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611,
   2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517,
   VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611,
   6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611,
   2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517,
@@ -1016,7 +1016,7 @@ unsigned short knight_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short bishop_data[] = {
+static unsigned short bishop_data[] = {
   VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790,
   4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532,
   1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154,
   VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790,
   4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532,
   1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154,
@@ -1109,7 +1109,7 @@ unsigned short bishop_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short king_data[] = {
+static unsigned short king_data[] = {
   SPIN,20,
   11378,0,11378,856,SEAM,10928,1152,
   11302,1684,11302,2209,11065,2684,
   SPIN,20,
   11378,0,11378,856,SEAM,10928,1152,
   11302,1684,11302,2209,11065,2684,
@@ -1165,7 +1165,7 @@ unsigned short king_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short queen_data[] = {
+static unsigned short queen_data[] = {
   SPIN,24,
   11092,0,11092,914,SEAM,10653,1284,
   11018,1798,11018,2358,10787,2866,
   SPIN,24,
   11092,0,11092,914,SEAM,10653,1284,
   11018,1798,11018,2358,10787,2866,
@@ -1185,7 +1185,7 @@ unsigned short queen_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short pawn_data[] = {
+static unsigned short pawn_data[] = {
   SPIN,16,
   7395,0,7395,609,
   SEAM,7102,910,7345,1199,7345,1572,7191,1910,
   SPIN,16,
   7395,0,7395,609,
   SEAM,7102,910,7345,1199,7345,1572,7191,1910,
@@ -1200,7 +1200,7 @@ unsigned short pawn_data[] = {
   ENDOFDATA
 };
 
   ENDOFDATA
 };
 
-unsigned short rook_data[] = {
+static unsigned short rook_data[] = {
   SPIN,20,
   9374,0,9374,756,SEAM,9003,1062,9311,1487,
   9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595,
   SPIN,20,
   9374,0,9374,756,SEAM,9003,1062,9311,1487,
   9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595,
@@ -1268,7 +1268,8 @@ unsigned short rook_data[] = {
 
 static double piece_size;
 
 
 static double piece_size;
 
-static int enumerate_ring_vertices( int steps, unsigned short *data, void *h,
+static int
+enumerate_ring_vertices( int steps, unsigned short *data, void *h,
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   int patlen = 1,i;
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   int patlen = 1,i;
@@ -1293,7 +1294,8 @@ static int enumerate_ring_vertices( int steps, unsigned short *data, void *h,
   return pts + patlen * 2 - data;
 }
 
   return pts + patlen * 2 - data;
 }
 
-static void enumerate_vertices( unsigned short *data, void *h,
+static void
+enumerate_vertices( unsigned short *data, void *h,
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   while(1) {
   void (*process_vertex)(void *h,double x,double y,double z))
 {
   while(1) {
@@ -1368,7 +1370,8 @@ static void enumerate_vertices( unsigned short *data, void *h,
   }
 }
 
   }
 }
 
-static void enumerate_ring_faces( int basevertex, int steps,
+static void
+enumerate_ring_faces( int basevertex, int steps,
   int prevbase, int prevsteps, void *h, int *count_ret,
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
   int prevbase, int prevsteps, void *h, int *count_ret,
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
@@ -1415,7 +1418,8 @@ static void enumerate_ring_faces( int basevertex, int steps,
   }
 }
 
   }
 }
 
-static void enumerate_faces( unsigned short *data, void *h, int *count_ret,
+static void
+enumerate_faces( unsigned short *data, void *h, int *count_ret,
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
   int basevertex = 0, startofvertices = 0;
   void (*process_face)(void *h,int v1,int v2,int v3,int v4))
 {
   int basevertex = 0, startofvertices = 0;
@@ -1546,7 +1550,8 @@ static void enumerate_faces( unsigned short *data, void *h, int *count_ret,
   }
 }
 
   }
 }
 
-static void normalize( float v[3]) {
+static void
+normalize( float v[3]) {
   float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
 
   if( d == 0.0) {
   float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
 
   if( d == 0.0) {
@@ -1562,7 +1567,8 @@ static void normalize( float v[3]) {
   v[2] /= d;
 }
 
   v[2] /= d;
 }
 
-static void normcrossprod( float v1[3], float v2[3], float out[3])
+static void
+normcrossprod( float v1[3], float v2[3], float out[3])
 {
   out[0] = v1[1] * v2[2] - v1[2] * v2[1];
   out[1] = v1[2] * v2[0] - v1[0] * v2[2];
 {
   out[0] = v1[1] * v2[2] - v1[2] * v2[1];
   out[1] = v1[2] * v2[0] - v1[0] * v2[2];
@@ -1580,16 +1586,18 @@ static void normcrossprod( float v1[3], float v2[3], float out[3])
         (v1)[1] += (v2)[1], \
         (v1)[2] += (v2)[2])
 
         (v1)[1] += (v2)[1], \
         (v1)[2] += (v2)[2])
 
-int numverts;
-float *vertices;
-float *normals;
+static int numverts;
+static float *vertices;
+static float *normals;
 
 
-static void count_vertex( void *dummy, double x, double y, double z)
+static void
+count_vertex( void *dummy, double x, double y, double z)
 {
   numverts++;
 }
 
 {
   numverts++;
 }
 
-static void add_normal( void *dummy, int v1, int v2, int v3, int v4)
+static void
+add_normal( void *dummy, int v1, int v2, int v3, int v4)
 {
   float surfnormal[3],d1[3],d2[3];
 
 {
   float surfnormal[3],d1[3],d2[3];
 
@@ -1620,7 +1628,8 @@ static void add_normal( void *dummy, int v1, int v2, int v3, int v4)
   }
 }
 
   }
 }
 
-static void collect_vertex( void *curvert, double x, double y, double z)
+static void
+collect_vertex( void *curvert, double x, double y, double z)
 {
   (*(float**)curvert)[0] = x;
   (*(float**)curvert)[1] = y;
 {
   (*(float**)curvert)[0] = x;
   (*(float**)curvert)[1] = y;
@@ -1628,7 +1637,8 @@ static void collect_vertex( void *curvert, double x, double y, double z)
   (*(float**)curvert) += 3;
 }
 
   (*(float**)curvert) += 3;
 }
 
-static void draw_face( void *dummy, int v1, int v2, int v3, int v4)
+static void
+draw_face( void *dummy, int v1, int v2, int v3, int v4)
 {
   glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS);
   glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]);
 {
   glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS);
   glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]);
@@ -1644,7 +1654,8 @@ static void draw_face( void *dummy, int v1, int v2, int v3, int v4)
   glEnd();
 }
 
   glEnd();
 }
 
-static int draw_piece( unsigned short *piece_data)
+static int
+draw_piece( unsigned short *piece_data)
 {
   int i;
   float *curvert;
 {
   int i;
   float *curvert;
@@ -1685,7 +1696,7 @@ static int draw_piece( unsigned short *piece_data)
   return count;
 }
 
   return count;
 }
 
-void gen_model_lists( int classic, int poly_count[PIECES]) {
+void chessmodels_gen_lists( int classic, int poly_count[PIECES]) {
 
   Bool queen_only_p = classic < 0;
   if (classic < 0) classic = 0;
 
   Bool queen_only_p = classic < 0;
   if (classic < 0) classic = 0;
index 87a26a52da6983f60d8aef274b9b5f89fecd2dc1..6e41e22414c3421adb474fec9fee7d5b07788934 100644 (file)
@@ -40,5 +40,5 @@
 #define BROOK    12
 #define BPAWN    13 
 
 #define BROOK    12
 #define BPAWN    13 
 
-extern void gen_model_lists( int classic, int poly_count[PIECES]);
+extern void chessmodels_gen_lists( int classic, int poly_count[PIECES]);
 
 
index 3dc86d832b66269d9f20a32be774de1aac771733..d0c84ed083a67cb7ba459db2633e729bbd5be9ca 100644 (file)
@@ -575,8 +575,8 @@ draw_cube (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-  gltrackball_rotate (bp->trackball);
   glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (bp->trackball);
 
   glScalef (2, 2, 2);
 
 
   glScalef (2, 2, 2);
 
index c4e925c73670fdcc389bce8954db781cad9f0004..2d8acbd47db7afad3a7e1281ec90d37d380d8949 100644 (file)
@@ -131,6 +131,10 @@ struct _cberg_state {
 
     double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b,
            vf0r,vf0g,vf0b, vf1r, vf1g, vf1b;
 
     double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b,
            vf0r,vf0g,vf0b, vf1r, vf1g, vf1b;
+
+    Bool button_down_p;
+    int mouse_x, mouse_y;
+    struct timeval paused;
 };
 
 
 };
 
 
@@ -1297,6 +1301,38 @@ ENTRYPOINT Bool crackberg_handle_event (ModeInfo *mi, XEvent *ev)
                 break;
             default:            return False;
         }
                 break;
             default:            return False;
         }
+    } else if (ev->xany.type == ButtonPress &&
+               ev->xbutton.button == Button1) {
+      cberg->button_down_p = True;
+      cberg->mouse_x = ev->xbutton.x;
+      cberg->mouse_y = ev->xbutton.y;
+      cberg->motion_state = MOTION_MANUAL;
+      cberg->paused.tv_sec = 0;
+    } else if (ev->xany.type == ButtonRelease &&
+               ev->xbutton.button == Button1) {
+      cberg->button_down_p = False;
+      cberg->motion_state = MOTION_AUTO;
+      /* After mouse-up, don't go back into auto-motion mode for a second, so
+         that repeated click-and-drag gestures don't fight with auto-motion. */
+      gettimeofday(&cberg->paused, NULL);
+    } else if (ev->xany.type == MotionNotify &&
+               cberg->button_down_p) {
+      int dx = ev->xmotion.x - cberg->mouse_x;
+      int dy = ev->xmotion.y - cberg->mouse_y;
+      cberg->mouse_x = ev->xmotion.x;
+      cberg->mouse_y = ev->xmotion.y;
+      cberg->motion_state = MOTION_MANUAL;
+
+      /* Take the larger dimension, since motion_state doesn't scale */
+      if (dx > 0 && dx > dy) dy = 0;
+      if (dx < 0 && dx < dy) dy = 0;
+      if (dy > 0 && dy > dx) dx = 0;
+      if (dy < 0 && dy < dx) dx = 0;
+
+      if      (dx > 0) cberg->motion_state |= MOTION_LEFT;
+      else if (dx < 0) cberg->motion_state |= MOTION_RIGHT;
+      else if (dy > 0) cberg->motion_state |= MOTION_FORW;
+      else if (dy < 0) cberg->motion_state |= MOTION_BACK;
     } else
         return False;
     return True;
     } else
         return False;
     return True;
@@ -1320,7 +1356,8 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
 
         cberg->elapsed = cur_frame - cberg->prev_frame;
 
 
         cberg->elapsed = cur_frame - cberg->prev_frame;
 
-        if (cberg->motion_state == MOTION_AUTO) {
+        if (cberg->motion_state == MOTION_AUTO &&
+            cberg->paused.tv_sec < cur_frame_t.tv_sec) {
             cberg->x += cberg->dx * cberg->elapsed;
             cberg->y += cberg->dy * cberg->elapsed;
             /* cberg->z */
             cberg->x += cberg->dx * cberg->elapsed;
             cberg->y += cberg->dy * cberg->elapsed;
             /* cberg->z */
index d4cd8eb30deee4b120d9e41705fd488f29cf2641..5a477bce5e553dc0a646992cb2052c945eea5a9b 100644 (file)
@@ -26,7 +26,7 @@
 
 /* TODO:
  *  some simple "solve mode"
 
 /* TODO:
  *  some simple "solve mode"
- *  use rotator and trackball
+ *  use rotator
  */
 
 /*-
  */
 
 /*-
                    "*wireframe:     False         \n"
 
 # define refresh_cube21 0
                    "*wireframe:     False         \n"
 
 # define refresh_cube21 0
-# define cube21_handle_event 0
 #include "xlockmore.h"
 
 #include "xlockmore.h"
 
+#include "gltrackball.h"
+
 #ifdef USE_GL
 
 #define DEF_SPIN        "True"
 #ifdef USE_GL
 
 #define DEF_SPIN        "True"
@@ -178,6 +179,9 @@ typedef struct {
   GLfloat texp, texq, posc[6];
   GLfloat color_inner[4];
 
   GLfloat texp, texq, posc[6];
   GLfloat color_inner[4];
 
+  Bool button_down_p;
+  trackball_state *trackball;
+
 } cube21_conf;
 
 static cube21_conf *cube21 = NULL;
 } cube21_conf;
 
 static cube21_conf *cube21 = NULL;
@@ -510,6 +514,12 @@ static Bool draw_main(ModeInfo *mi, cube21_conf *cp)
   else
     glTranslatef(0, 0, zpos);
   glScalef(size, size, size);
   else
     glTranslatef(0, 0, zpos);
   glScalef(size, size, size);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   glRotatef(cp->xrot, 1.0, 0.0, 0.0);
   glRotatef(cp->yrot, 0.0, 1.0, 0.0);
   if(cp->wire) glColor3f(0.7, 0.7, 0.7);
   glRotatef(cp->xrot, 1.0, 0.0, 0.0);
   glRotatef(cp->yrot, 0.0, 1.0, 0.0);
   if(cp->wire) glColor3f(0.7, 0.7, 0.7);
@@ -833,6 +843,49 @@ ENTRYPOINT void reshape_cube21(ModeInfo *mi, int width, int height)
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
+ENTRYPOINT Bool
+cube21_handle_event (ModeInfo *mi, XEvent *event)
+{
+  cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      cp->button_down_p = True;
+      gltrackball_start (cp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      cp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (cp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           cp->button_down_p)
+    {
+      gltrackball_track (cp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
 ENTRYPOINT void release_cube21(ModeInfo *mi) 
 {
   if (cube21 != NULL) {
 ENTRYPOINT void release_cube21(ModeInfo *mi) 
 {
   if (cube21 != NULL) {
@@ -858,6 +911,8 @@ ENTRYPOINT void init_cube21(ModeInfo *mi)
   }
   cp = &cube21[MI_SCREEN(mi)];
 
   }
   cp = &cube21[MI_SCREEN(mi)];
 
+  cp->trackball = gltrackball_init ();
+
   if(!cp->texp) {
     init_posc(cp);
     make_texture(cp);
   if(!cp->texp) {
     init_posc(cp);
     make_texture(cp);
index 5e8c3a042309503b90aa649667ea448a279d98f2..8ae8143f0670b567d5db44e89e393ba53dd24a78 100644 (file)
@@ -560,7 +560,10 @@ draw_cube (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (cc->trackball);
     gltrackball_rotate (cc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index deb6774c497e4962b40730644793fbc7c7e51863..400af7437f27eb6a2641ae39fdc58b05847b4e35 100644 (file)
@@ -141,7 +141,12 @@ static Bool draw_main(cubicgrid_conf *cp)
   glTranslatef(0, 0, zpos);
 
   glScalef(size/ticks, size/ticks, size/ticks);
   glTranslatef(0, 0, zpos);
 
   glScalef(size/ticks, size/ticks, size/ticks);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (cp->trackball);
   gltrackball_rotate (cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p);
   glRotatef (x * 360, 1.0, 0.0, 0.0);
   glRotatef (y * 360, 0.0, 1.0, 0.0);
   get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p);
   glRotatef (x * 360, 1.0, 0.0, 0.0);
   glRotatef (y * 360, 0.0, 1.0, 0.0);
index 621e70cdca9929b92adae478c304a16edeb2a058..7b709092580fd76e24434a116e7c3e3c59700194 100644 (file)
@@ -336,7 +336,10 @@ draw_ball (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 6d04233e4ef2cc8f1af8d6894b28cfa087ebe4e6..1b192428deb070565135ed6ebe71cf54bb5f20b3 100644 (file)
 
 #ifdef USE_GL /* whole file */
 
 
 #ifdef USE_GL /* whole file */
 
+#ifdef HAVE_JWZGLES
+# include "dnapizza.h"
+#else
+# define HAVE_TESS
+#endif
+
 typedef enum {
   HELIX_IN, HELIX, HELIX_OUT, 
   PIZZA_IN, PIZZA, PIZZA_OUT,
 typedef enum {
   HELIX_IN, HELIX, HELIX_OUT, 
   PIZZA_IN, PIZZA, PIZZA_OUT,
@@ -1373,6 +1379,8 @@ make_frame (logo_configuration *dc, int wire)
 /* Make some pizza.
  */
 
 /* Make some pizza.
  */
 
+#ifdef HAVE_TESS
+
 typedef struct {
   GLdouble *points;
   int i;
 typedef struct {
   GLdouble *points;
   int i;
@@ -1423,12 +1431,13 @@ tess_end_cb (void)
   glEnd();
 }
 
   glEnd();
 }
 
+#endif /* HAVE_TESS */
+
 
 static int
 make_pizza (logo_configuration *dc, int facetted, int wire)
 {
   int polys = 0;
 
 static int
 make_pizza (logo_configuration *dc, int facetted, int wire)
 {
   int polys = 0;
-
   int topfaces = (facetted ? 48 : 120);
   int discfaces = (facetted ? 12 : 120);
   int npoints = topfaces * 2 + 100;
   int topfaces = (facetted ? 48 : 120);
   int discfaces = (facetted ? 12 : 120);
   int npoints = topfaces * 2 + 100;
@@ -1440,18 +1449,19 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4;
   GLfloat th, x, y, s;
   int i, j, k;
   GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4;
   GLfloat th, x, y, s;
   int i, j, k;
-  tess_out TO, *to = &TO;
-  GLUtesselator *tess = gluNewTess();
   int endpoints;
   int endedge1;
 
   int endpoints;
   int endedge1;
 
+# ifdef HAVE_TESS
+  tess_out TO, *to = &TO;
+  GLUtesselator *tess = gluNewTess();
+
   to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble));
   to->i = 0;
 
   to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble));
   to->i = 0;
 
-
-# ifndef  _GLUfuncptr
-#  define _GLUfuncptr void(*)(void)
-# endif
+#  ifndef  _GLUfuncptr
+#   define _GLUfuncptr void(*)(void)
+#  endif
 
   gluTessCallback(tess,GLU_TESS_BEGIN,      (_GLUfuncptr)tess_begin_cb);
   gluTessCallback(tess,GLU_TESS_VERTEX,     (_GLUfuncptr)glVertex3dv);
 
   gluTessCallback(tess,GLU_TESS_BEGIN,      (_GLUfuncptr)tess_begin_cb);
   gluTessCallback(tess,GLU_TESS_VERTEX,     (_GLUfuncptr)glVertex3dv);
@@ -1462,6 +1472,8 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire);
   gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
 
   gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire);
   gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
 
+# endif /* HAVE_TESS */
+
   glPushMatrix();
 
   s = 1.9;
   glPushMatrix();
 
   s = 1.9;
@@ -1546,6 +1558,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       y = p[1];
       polys++;
     }
       y = p[1];
       polys++;
     }
+
   do_normal (points[0], points[1],  -thick2,
              points[0], points[1],   thick2,
              x,         y,           thick2);
   do_normal (points[0], points[1],  -thick2,
              points[0], points[1],   thick2,
              x,         y,           thick2);
@@ -1556,6 +1569,21 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   polys++;
   glEnd();
 
   polys++;
   glEnd();
 
+# ifndef HAVE_TESS
+  if (wire)
+    {
+      /* Outline of slice */
+      glBegin (GL_LINE_LOOP);
+      for (i = 0; i < endpoints; i++)
+        glVertex3f (points[i*3], points[i*3+1], -thick2);
+      glEnd();
+      glBegin (GL_LINE_LOOP);
+      for (i = 0; i < endpoints; i++)
+        glVertex3f (points[i*3], points[i*3+1], thick2);
+      glEnd();
+    }
+# endif /* HAVE_TESS */
+
   /* Compute the holes */
   step = M_PI * 2 / discfaces;
   for (k = 0; k < nholes; k++)
   /* Compute the holes */
   step = M_PI * 2 / discfaces;
   for (k = 0; k < nholes; k++)
@@ -1583,6 +1611,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
   for (k = 0; k < nholes; k++)
     {
       GLdouble *p = holes + (discfaces * 3 * k);
   for (k = 0; k < nholes; k++)
     {
       GLdouble *p = holes + (discfaces * 3 * k);
+
       glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
       for (i = 0; i < discfaces; i++)
         {
       glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
       for (i = 0; i < discfaces; i++)
         {
@@ -1599,8 +1628,23 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       glVertex3f (p[0], p[1],  thick2);
       polys++;
       glEnd();
       glVertex3f (p[0], p[1],  thick2);
       polys++;
       glEnd();
+# ifndef HAVE_TESS
+      if (wire)
+        {
+          /* Outline of holes */
+          glBegin (GL_LINE_LOOP);
+          for (i = 0; i < discfaces; i++)
+            glVertex3f (p[i*3], p[i*3+1], -thick2);
+          glEnd();
+          glBegin (GL_LINE_LOOP);
+          for (i = 0; i < discfaces; i++)
+            glVertex3f (p[i*3], p[i*3+1], thick2);
+          glEnd();
+        }
+# endif /* !HAVE_TESS */
     }
 
     }
 
+# ifdef HAVE_TESS
   glTranslatef (0, 0, -thick2);
   for (y = 0; y <= 1; y++)
     {
   glTranslatef (0, 0, -thick2);
   for (y = 0; y <= 1; y++)
     {
@@ -1640,8 +1684,32 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
 
       gluTessEndPolygon (tess);
     }
 
       gluTessEndPolygon (tess);
     }
+
   glTranslatef (0, 0, -thick2);
 
   glTranslatef (0, 0, -thick2);
 
+# else  /* !HAVE_TESS */
+  if (! wire)
+    {
+      glDisableClientState (GL_COLOR_ARRAY);
+      glDisableClientState (GL_NORMAL_ARRAY);
+      glDisableClientState (GL_TEXTURE_COORD_ARRAY);
+      glEnableClientState (GL_VERTEX_ARRAY);
+      glVertexPointer (3, GL_FLOAT, 0, dnapizza_triangles);
+
+      glTranslatef(0, 0, thick2);
+      glNormal3f (0, 0, 1);
+      glFrontFace (GL_CW);
+      glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+
+      glTranslatef(0, 0, -thick2*2);
+      glNormal3f (0, 0, -1);
+      glFrontFace (GL_CCW);
+      glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3);
+
+      glTranslatef(0, 0, thick2);
+    }
+# endif /* !HAVE_TESS */
+
 
   /* Compute the crust */
 
 
   /* Compute the crust */
 
@@ -1748,10 +1816,13 @@ make_pizza (logo_configuration *dc, int facetted, int wire)
       glEnd();
     }
 
       glEnd();
     }
 
+# ifdef HAVE_TESS
   gluDeleteTess (tess);
   gluDeleteTess (tess);
+  free (to->points);
+# endif /* HAVE_TESS */
+
   free (points);
   free (holes);
   free (points);
   free (holes);
-  free (to->points);
 
   glPopMatrix();
 
 
   glPopMatrix();
 
@@ -2150,8 +2221,6 @@ draw_logo (ModeInfo *mi)
   mi->polygon_count = 0;
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
 
   mi->polygon_count = 0;
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
 
-  glRotatef(current_device_rotation(), 0, 0, 1);
-
   if (!wire &&
       dc->wire_overlay == 0 &&
       (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
   if (!wire &&
       dc->wire_overlay == 0 &&
       (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0)
@@ -2232,10 +2301,15 @@ draw_logo (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
   {
     GLfloat scale = 0;
     glScalef(3, 3, 3);
 
   {
     GLfloat scale = 0;
     glScalef(3, 3, 3);
 
+# ifdef USE_IPHONE
+    glScalef (0.7, 0.7, 0.7);  /* make room for the frame */
+# endif
+
     glColor3f(dc->color[0], dc->color[1], dc->color[2]);
 
     /* Draw frame before trackball rotation */
     glColor3f(dc->color[0], dc->color[1], dc->color[2]);
 
     /* Draw frame before trackball rotation */
@@ -2253,6 +2327,7 @@ draw_logo (ModeInfo *mi)
       glScalef (1, scale, scale);
       if (wire)
         {
       glScalef (1, scale, scale);
       if (wire)
         {
+          glDisable (GL_LIGHTING);
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
         }
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
         }
@@ -2260,6 +2335,7 @@ draw_logo (ModeInfo *mi)
         {
           glCallList (dc->frame_list);
           glDisable (GL_LIGHTING);
         {
           glCallList (dc->frame_list);
           glDisable (GL_LIGHTING);
+          glColor3fv (dc->color);
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
           if (!wire) glEnable (GL_LIGHTING);
           glCallList (dc->frame_list_wire);
           mi->polygon_count += dc->polys[6];
           if (!wire) glEnable (GL_LIGHTING);
@@ -2299,6 +2375,7 @@ draw_logo (ModeInfo *mi)
 
       if (wire)
         {
 
       if (wire)
         {
+          glDisable (GL_LIGHTING);
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
         }
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
         }
@@ -2306,9 +2383,11 @@ draw_logo (ModeInfo *mi)
         {
           glCallList (dc->gasket_list);
           glDisable (GL_LIGHTING);
         {
           glCallList (dc->gasket_list);
           glDisable (GL_LIGHTING);
+          glColor3fv (dc->color);
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
           if (!wire) glEnable (GL_LIGHTING);
           glCallList (dc->gasket_list_wire);
           mi->polygon_count += dc->polys[4];
           if (!wire) glEnable (GL_LIGHTING);
+          glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor);
         }
       else
         {
         }
       else
         {
@@ -2338,6 +2417,7 @@ draw_logo (ModeInfo *mi)
 
     if (wire)
       {
 
     if (wire)
       {
+        glDisable (GL_LIGHTING);
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
         else
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
         else
@@ -2352,6 +2432,7 @@ draw_logo (ModeInfo *mi)
           glCallList (dc->helix_list_facetted);
 
         glDisable (GL_LIGHTING);
           glCallList (dc->helix_list_facetted);
 
         glDisable (GL_LIGHTING);
+        glColor3fv (dc->color);
 
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
 
         if (pizza_p)
           glCallList (dc->pizza_list_wire);
@@ -2381,6 +2462,6 @@ draw_logo (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
   glXSwapBuffers(dpy, window);
 }
 
-XSCREENSAVER_MODULE_2 ("DNAlogo", dnalogo, logo)
+XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo)
 
 #endif /* USE_GL */
 
 #endif /* USE_GL */
diff --git a/hacks/glx/dnapizza.h b/hacks/glx/dnapizza.h
new file mode 100644 (file)
index 0000000..6dd48b9
--- /dev/null
@@ -0,0 +1,122 @@
+/* DNA Pizza Logo, Copyright (c) 2011-2012 Jamie Zawinski <jwz@dnalounge.com>
+
+   Since GLUtesselator doesn't exist in the iOS build, the slice shape
+   of the DNA Pizza logo is hardcoded there, instead of being generated.
+   (These vertexes were generated by GLUtesselator and saved.)
+ */
+
+static const GLfloat dnapizza_triangles[]={
+       0.315,0.213301,0,       0.296699,0.195,0,       0.309,0.455,0,
+       0.296699,0.195,0,       0.29,0.17,0,    0.309,0.455,0,
+       0.309,0.455,0,  0.29,0.17,0,    0.26,0.452,0,
+       0.29,0.17,0,    0.23,0.042,0,   0.26,0.452,0,
+       0.26,0.452,0,   0.23,0.042,0,   0.216,0.293,0,
+       0.23,0.042,0,   0.21,0,0,       0.216,0.293,0,
+       0.216,0.293,0,  0.21,0,0,       0.149,0.178,0,
+       0.21,0,0,       0.102,0.178,0,  0.149,0.178,0,
+       0.376,0.572,0,  0.353,0.613,0,  0.411,0.68402,0,
+       0.376,0.572,0,  0.411,0.68402,0,        0.383301,0.195,0,
+       0.376,0.572,0,  0.383301,0.195,0,       0.365,0.213301,0,
+       0.376,0.572,0,  0.365,0.213301,0,       0.34,0.22,0,
+       0.376,0.572,0,  0.34,0.22,0,    0.315,0.213301,0,
+       0.376,0.572,0,  0.315,0.213301,0,       0.309,0.455,0,
+       0.39,0.17,0,    0.383301,0.195,0,       0.411,0.68402,0,
+       0.39,0.17,0,    0.411,0.68402,0,        0.48,0.17,0,
+       0.39,0.17,0,    0.48,0.17,0,    0.488039,0.14,0,
+       0.39,0.17,0,    0.488039,0.14,0,        0.51,0.118038,0,
+       0.39,0.17,0,    0.51,0.118038,0,        0.616,0.042,0,
+       0.39,0.17,0,    0.616,0.042,0,  0.383301,0.145,0,
+       0.798,0,0,      0.641,0,0,      0.645595,0.469053,0,
+       0.798,0,0,      0.645595,0.469053,0,    0.653683,0.457714,0,
+       0.798,0,0,      0.653683,0.457714,0,    0.661572,0.446236,0,
+       0.798,0,0,      0.661572,0.446236,0,    0.669259,0.434622,0,
+       0.798,0,0,      0.669259,0.434622,0,    0.676742,0.422876,0,
+       0.798,0,0,      0.676742,0.422876,0,    0.68402,0.411,0,
+       0.798,0,0,      0.68402,0.411,0,        0.691088,0.399,0,
+       0.798,0,0,      0.691088,0.399,0,       0.697947,0.386878,0,
+       0.798,0,0,      0.697947,0.386878,0,    0.704592,0.374638,0,
+       0.798,0,0,      0.704592,0.374638,0,    0.711023,0.362284,0,
+       0.798,0,0,      0.711023,0.362284,0,    0.717238,0.34982,0,
+       0.798,0,0,      0.717238,0.34982,0,     0.723234,0.337249,0,
+       0.798,0,0,      0.723234,0.337249,0,    0.729009,0.324576,0,
+       0.798,0,0,      0.729009,0.324576,0,    0.734563,0.311803,0,
+       0.798,0,0,      0.734563,0.311803,0,    0.739893,0.298936,0,
+       0.798,0,0,      0.739893,0.298936,0,    0.744997,0.285978,0,
+       0.798,0,0,      0.744997,0.285978,0,    0.749875,0.272932,0,
+       0.798,0,0,      0.749875,0.272932,0,    0.754524,0.259803,0,
+       0.798,0,0,      0.754524,0.259803,0,    0.758943,0.246596,0,
+       0.798,0,0,      0.758943,0.246596,0,    0.763131,0.233313,0,
+       0.798,0,0,      0.763131,0.233313,0,    0.767087,0.219959,0,
+       0.798,0,0,      0.767087,0.219959,0,    0.770809,0.206538,0,
+       0.798,0,0,      0.770809,0.206538,0,    0.774296,0.193054,0,
+       0.798,0,0,      0.774296,0.193054,0,    0.777547,0.179511,0,
+       0.798,0,0,      0.777547,0.179511,0,    0.780562,0.165914,0,
+       0.798,0,0,      0.780562,0.165914,0,    0.783338,0.152266,0,
+       0.798,0,0,      0.783338,0.152266,0,    0.785877,0.138571,0,
+       0.798,0,0,      0.785877,0.138571,0,    0.788175,0.124835,0,
+       0.798,0,0,      0.788175,0.124835,0,    0.790234,0.11106,0,
+       0.798,0,0,      0.790234,0.11106,0,     0.792052,0.097252,0,
+       0.798,0,0,      0.792052,0.097252,0,    0.793628,0.083414,0,
+       0.798,0,0,      0.793628,0.083414,0,    0.794963,0.06955,0,
+       0.798,0,0,      0.794963,0.06955,0,     0.796056,0.055666,0,
+       0.798,0,0,      0.796056,0.055666,0,    0.796906,0.041764,0,
+       0.798,0,0,      0.796906,0.041764,0,    0.797514,0.02785,0,
+       0.798,0,0,      0.797514,0.02785,0,     0.797878,0.013927,0,
+       0.641,0,0,      0.616,0.042,0,  0.620162,0.502198,0,
+       0.641,0,0,      0.620162,0.502198,0,    0.628833,0.491298,0,
+       0.641,0,0,      0.628833,0.491298,0,    0.637311,0.480248,0,
+       0.641,0,0,      0.637311,0.480248,0,    0.645595,0.469053,0,
+       0.616,0.042,0,  0.51,0.118038,0,        0.54,0.11,0,
+       0.616,0.042,0,  0.54,0.11,0,    0.57,0.118038,0,
+       0.616,0.042,0,  0.57,0.118038,0,        0.591962,0.14,0,
+       0.616,0.042,0,  0.591962,0.14,0,        0.6,0.17,0,
+       0.616,0.042,0,  0.6,0.17,0,     0.601962,0.33,0,
+       0.616,0.042,0,  0.601962,0.33,0,        0.61,0.36,0,
+       0.616,0.042,0,  0.61,0.36,0,    0.611303,0.512945,0,
+       0.616,0.042,0,  0.611303,0.512945,0,    0.620162,0.502198,0,
+       0.48,0.17,0,    0.411,0.68402,0,        0.422875,0.676743,0,
+       0.48,0.17,0,    0.422875,0.676743,0,    0.434622,0.669259,0,
+       0.48,0.17,0,    0.434622,0.669259,0,    0.446236,0.661572,0,
+       0.48,0.17,0,    0.446236,0.661572,0,    0.457714,0.653684,0,
+       0.48,0.17,0,    0.457714,0.653684,0,    0.469052,0.645596,0,
+       0.48,0.17,0,    0.469052,0.645596,0,    0.480248,0.637311,0,
+       0.48,0.17,0,    0.480248,0.637311,0,    0.488038,0.2,0,
+       0.616,0.042,0,  0.23,0.042,0,   0.315,0.126699,0,
+       0.616,0.042,0,  0.315,0.126699,0,       0.34,0.12,0,
+       0.616,0.042,0,  0.34,0.12,0,    0.365,0.126699,0,
+       0.616,0.042,0,  0.365,0.126699,0,       0.383301,0.145,0,
+       0.23,0.042,0,   0.29,0.17,0,    0.296699,0.145,0,
+       0.23,0.042,0,   0.296699,0.145,0,       0.315,0.126699,0,
+       0.58362,0.544235,0,     0.593029,0.533966,0,    0.601961,0.39,0,
+       0.593029,0.533966,0,    0.602258,0.523535,0,    0.601961,0.39,0,
+       0.601961,0.39,0,        0.602258,0.523535,0,    0.61,0.36,0,
+       0.602258,0.523535,0,    0.611303,0.512945,0,    0.61,0.36,0,
+       0.58,0.411962,0,        0.55,0.42,0,    0.554337,0.574033,0,
+       0.58,0.411962,0,        0.554337,0.574033,0,    0.564271,0.564271,0,
+       0.58,0.411962,0,        0.564271,0.564271,0,    0.574033,0.554338,0,
+       0.58,0.411962,0,        0.574033,0.554338,0,    0.58362,0.544235,0,
+       0.58,0.411962,0,        0.58362,0.544235,0,     0.601961,0.39,0,
+       0.55,0.42,0,    0.52,0.411962,0,        0.523535,0.602258,0,
+       0.55,0.42,0,    0.523535,0.602258,0,    0.533966,0.59303,0,
+       0.55,0.42,0,    0.533966,0.59303,0,     0.544235,0.58362,0,
+       0.55,0.42,0,    0.544235,0.58362,0,     0.554337,0.574033,0,
+       0.51,0.221962,0,        0.488038,0.2,0, 0.49,0.36,0,
+       0.488038,0.2,0, 0.491298,0.628833,0,    0.49,0.36,0,
+       0.49,0.36,0,    0.491298,0.628833,0,    0.498038,0.39,0,
+       0.491298,0.628833,0,    0.502197,0.620163,0,    0.498038,0.39,0,
+       0.498038,0.39,0,        0.502197,0.620163,0,    0.52,0.411962,0,
+       0.502197,0.620163,0,    0.512944,0.611304,0,    0.52,0.411962,0,
+       0.52,0.411962,0,        0.512944,0.611304,0,    0.523535,0.602258,0,
+       0.49,0.36,0,    0.498039,0.33,0,        0.51,0.221962,0,
+       0.498039,0.33,0,        0.52,0.308039,0,        0.51,0.221962,0,
+       0.51,0.221962,0,        0.52,0.308039,0,        0.54,0.23,0,
+       0.52,0.308039,0,        0.55,0.3,0,     0.54,0.23,0,
+       0.54,0.23,0,    0.55,0.3,0,     0.57,0.221962,0,
+       0.55,0.3,0,     0.58,0.308039,0,        0.57,0.221962,0,
+       0.57,0.221962,0,        0.58,0.308039,0,        0.591962,0.2,0,
+       0.58,0.308039,0,        0.601962,0.33,0,        0.591962,0.2,0,
+       0.591962,0.2,0, 0.601962,0.33,0,        0.6,0.17,0,
+       0.488038,0.2,0, 0.480248,0.637311,0,    0.491298,0.628833,0,
+       0.26,0.452,0,   0.216,0.293,0,  0.192,0.332,0,
+       0.102,0.178,0,  0.21,0,0,       0,0,0,
+};
index eabc91c81d0f3ad2a5e382014be667d69997bec2..e1c83eabbe157bf9215a912387dd72c3acb2e2b9 100644 (file)
@@ -333,33 +333,42 @@ static void drawMovingPiece(ModeInfo *mi, Chesscreen *cs, int shadow)
       cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN;
   }
   else if(cs->mpiece % PIECES == KNIGHT) {
       cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN;
   }
   else if(cs->mpiece % PIECES == KNIGHT) {
-    GLfloat shine[1];
-    GLfloat spec[4];
-    GLfloat mult;
-    glTranslatef(cs->steps < 50 ? cs->from[1] : cs->to[1], 0.0, 
-                cs->steps < 50 ? cs->from[0] : cs->to[0]);
-
-    mult = cs->steps < 10 
-      ? (1.0 - cs->steps / 10.0) : 100 - cs->steps < 10 
-      ? (1.0 - (100 - cs->steps) / 10.0) : 0.0;
-
-    shine[0] = mult*shininess[0];
-    spec[0] = mult*specular[0];
-    spec[1] = mult*specular[1];
-    spec[2] = mult*specular[2];
-    spec[3] = 1.0;
-    glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shine);
-    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec);
+    /* If there is nothing in the path of a knight, move it by sliding,
+       just like the other pieces.  But if there are any pieces on the
+       middle two squares in its path, the knight would intersect them,
+       so in that case, move it in an airborne arc. */
+    GLfloat y;
+    int i, j;
+    Bool blocked_p = False;
+    int fromx = MIN(cs->from[1], cs->to[1]);
+    int fromy = MIN(cs->from[0], cs->to[0]);
+    int tox   = MAX(cs->from[1], cs->to[1]);
+    int toy   = MAX(cs->from[0], cs->to[0]);
+    if (fromx == tox-2) fromx = tox = fromx+1;
+    if (fromy == toy-2) fromy = toy = fromy+1;
+    for (i = fromy; i <= toy; i++) {
+      for (j = fromx; j <= tox; j++) {
+        if (cs->game.board[i][j]) {
+          blocked_p = True;
+          break;
+        }
+      }
+    }
 
 
-    glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->mpiece/7][0], 
-             shadow ? MaterialShadow[1] : cs->colors[cs->mpiece/7][1], 
-             shadow ? MaterialShadow[2] : cs->colors[cs->mpiece/7][2],
-             fabs(49-cs->steps)/49.0);
+    if (!blocked_p)
+      goto SLIDE;
 
 
-    glScalef(fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0);
-  }
-  else
+    /* Move by hopping. */
+    y = 1.5 * sin (M_PI * cs->steps / 100.0);
+    glTranslatef(cs->from[1]+cs->steps*cs->dx, y,
+                 cs->from[0]+cs->steps*cs->dz);
+
+  } else {
+  SLIDE:
+    /* Move by sliding. */
     glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz);
     glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz);
+  }
+
 
   if(!cs->wire)
     glEnable(GL_BLEND);
 
   if(!cs->wire)
     glEnable(GL_BLEND);
@@ -434,15 +443,87 @@ static void drawBoard(ModeInfo *mi, Chesscreen *cs)
 
       mi->polygon_count++;
     }
 
       mi->polygon_count++;
     }
-
-  /* chop underneath board */
-/*   glColor3f(0, 0, 0); */
-/*   glNormal3f(0, -1, 0); */
-/*   glVertex3f(0,         0,  BOARDSIZE); */
-/*   glVertex3f(0,         0,  0); */
-/*   glVertex3f(BOARDSIZE, 0,  0); */
-/*   glVertex3f(BOARDSIZE, 0,  BOARDSIZE); */
   glEnd();
   glEnd();
+
+  {
+    GLfloat off = 0.01;
+    GLfloat w = BOARDSIZE;
+    GLfloat h = 0.1;
+
+    /* Give the board a slight lip. */
+    /* #### oops, normals are wrong here, but you can't tell */
+
+    glColor3f(0.3, 0.3, 0.3);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    mi->polygon_count += 4;
+
+    /* Fill in the underside of the board with an invisible black box
+       to hide the reflections that are not on tiles.  Probably there's
+       a way to do this with stencils instead.
+     */
+    w -= off*2;
+    h = 5;
+
+    glPushMatrix();
+    glTranslatef (off, 0, off);
+    glDisable(GL_LIGHTING);
+    glColor3f(0,0,0);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    mi->polygon_count += 4;
+    glPopMatrix();
+    if (!cs->wire)
+      glEnable(GL_LIGHTING);
+  }
 }
 
 static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) 
 }
 
 static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) 
@@ -639,11 +720,10 @@ static void display(ModeInfo *mi, Chesscreen *cs)
   /** setup perspectiv */
   glTranslatef(0.0, 0.0, -1.5*BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
   /** setup perspectiv */
   glTranslatef(0.0, 0.0, -1.5*BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (cs->trackball);
   gltrackball_rotate (cs->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
 
-  glRotatef(cs->theta*100, 0.0, 1.0, 0.0);
+  if (rotate)
+    glRotatef(cs->theta*100, 0.0, 1.0, 0.0);
   glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE);
 
 /*   cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */
   glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE);
 
 /*   cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */
@@ -799,7 +879,7 @@ ENTRYPOINT void init_chess(ModeInfo *mi)
     make_piece_texture(cs);
     make_board_texture(cs);
   }
     make_piece_texture(cs);
     make_board_texture(cs);
   }
-  gen_model_lists( classic, cs->poly_counts);
+  chessmodels_gen_lists( classic, cs->poly_counts);
 
   if(!cs->wire) {
     setup_lights(cs);
 
   if(!cs->wire) {
     setup_lights(cs);
index d83c0e45a6a55437c257461330c4d073e73e6425..bd0803130d70269f8ead02df2b6b7af5227abaac 100644 (file)
@@ -618,6 +618,7 @@ static int display(Engine *e)
             e->lookat[0], e->lookat[1], e->lookat[2], 
             0.0, 1.0, 0.0);
   glPushMatrix();
             e->lookat[0], e->lookat[1], e->lookat[2], 
             0.0, 1.0, 0.0);
   glPushMatrix();
+
   glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
   glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp);
   glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
   glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp);
@@ -627,9 +628,15 @@ static int display(Engine *e)
     get_position (e->rot, &x, &y, &z, !e->button_down_p);
     glTranslatef(x*16-9, y*14-7, z*16-10);
   }
     get_position (e->rot, &x, &y, &z, !e->button_down_p);
     glTranslatef(x*16-9, y*14-7, z*16-10);
   }
+
   if (spin) {
     double x, y, z;
   if (spin) {
     double x, y, z;
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (e->trackball);
     gltrackball_rotate (e->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
     get_rotation(e->rot, &x, &y, &z, !e->button_down_p);
     glRotatef(x*ONEREV, 1.0, 0.0, 0.0);
     glRotatef(y*ONEREV, 0.0, 1.0, 0.0);
     get_rotation(e->rot, &x, &y, &z, !e->button_down_p);
     glRotatef(x*ONEREV, 1.0, 0.0, 0.0);
     glRotatef(y*ONEREV, 0.0, 1.0, 0.0);
@@ -983,6 +990,7 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
 
   mi->polygon_count = display(e);
 
 
   mi->polygon_count = display(e);
 
+  glColor3f (1, 1, 0);
   if (do_titles)
       print_gl_string (mi->dpy, 
 # ifdef HAVE_GLBITMAP
   if (do_titles)
       print_gl_string (mi->dpy, 
 # ifdef HAVE_GLBITMAP
index 0d534e53785b81fc5bb92cf48fb35acdcc3fbaa9..640f21f704f996220c2e396656b48d8d4d43c887 100644 (file)
@@ -270,9 +270,7 @@ display(Flipflopcreen *c)
     /** setup perspectif */
     glTranslatef(0.0, 0.0, -c->reldist*board_avg_size);
     glRotatef(22.5, 1.0, 0.0, 0.0);  
     /** setup perspectif */
     glTranslatef(0.0, 0.0, -c->reldist*board_avg_size);
     glRotatef(22.5, 1.0, 0.0, 0.0);  
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (c->trackball);
     gltrackball_rotate (c->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
     glRotatef(c->theta*100, 0.0, 1.0, 0.0);
     glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */
 
     glRotatef(c->theta*100, 0.0, 1.0, 0.0);
     glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */
 
index b9915f5a7fc7c5e3e9c100cee8290bdff4e86e8e..23217f03a178617ae0892bbbd6b58833c9cb803b 100644 (file)
@@ -810,10 +810,11 @@ draw_toasters (ModeInfo *mi)
   glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(bp->view_x, 1, 0, 0);
   glRotatef(bp->view_y, 0, 1, 0);
   glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(bp->view_x, 1, 0, 0);
   glRotatef(bp->view_y, 0, 1, 0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
-  gltrackball_rotate (bp->user_trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
 
+  /* Rotate the scene around a point that's a little deeper in. */
+  glTranslatef (0, 0, -50);
+  gltrackball_rotate (bp->user_trackball);
+  glTranslatef (0, 0,  50);
 
 #if 0
   {
 
 #if 0
   {
index 42a9e70b02fe5ae2a4a6ca04e34ba138cd8f7741..bc925dd542b37629058448af639211711e2b7624 100644 (file)
@@ -869,7 +869,10 @@ draw_gears (ModeInfo *mi)
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 80310cc285efe7b7e950b5721daaf002be94798d..f3829b59c707efa6960344dd2da98bf92fbf92d5 100644 (file)
@@ -281,7 +281,10 @@ gflux_handle_event (ModeInfo *mi, XEvent *event)
 static void
 userRot(gfluxstruct *gp)
 {
 static void
 userRot(gfluxstruct *gp)
 {
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (gp->trackball);
   gltrackball_rotate (gp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 }
 
 /* draw the gflux once */
 }
 
 /* draw the gflux once */
index 0ec1af3f48e4ea8e91cb15f5efc766b2a0706088..e652048ae8901f08956a76778991868c83663eb0 100644 (file)
@@ -1197,8 +1197,7 @@ reshape_glcells( ModeInfo *mi, int width, int height )
   
   if (st->food) free( st->food );
   st->food = (int *)malloc( ((width*height)/16)*sizeof(int) );
   
   if (st->food) free( st->food );
   st->food = (int *)malloc( ((width*height)/16)*sizeof(int) );
-  
-  create_cells( st );
+  /* create_cells( st );*/
 }
 
 ENTRYPOINT void 
 }
 
 ENTRYPOINT void 
index 4738b71d999546596e50dbc6934565db1c6cb45f..6bf5ccd95df246d56f6eb9dca29dcfdbf1db0f10 100644 (file)
@@ -416,7 +416,10 @@ draw_knot (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 21cf1f4db00680bc01fd55015817191df7a29bb7..98e13e8d38334fe36cc3846f41bbe4cf710e68d1 100644 (file)
@@ -589,7 +589,10 @@ draw_planet (ModeInfo * mi)
                (y - 0.5) * 15,
                (z - 0.5) * 8);
 
                (y - 0.5) * 15,
                (z - 0.5) * 8);
 
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (gp->trackball);
   gltrackball_rotate (gp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 
   glRotatef (90,1,0,0);
 
 
   glRotatef (90,1,0,0);
 
index 1ef4c130db171c0969c93526a194406e376de92f..eb522a031b2b0b7e9f256c2b1a1e5001d25974f6 100644 (file)
@@ -126,11 +126,12 @@ reshape_glschool(ModeInfo *mi, int width, int height)
 
        glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
        if (sc->school != (School *)0) {
 
        glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
        if (sc->school != (School *)0) {
-               setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
+               glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
                glDeleteLists(sc->bboxList, 1);
                glDeleteLists(sc->bboxList, 1);
-                createBBoxList(&SCHOOL_BBOX(sc->school), &sc->bboxList, wire);
+                glschool_createBBoxList(&SCHOOL_BBOX(sc->school),
+                                        &sc->bboxList, wire);
        }
        }
-       reshape(width, height);
+       glschool_reshape(width, height);
 }
 
 ENTRYPOINT void
 }
 
 ENTRYPOINT void
@@ -162,7 +163,7 @@ init_glschool(ModeInfo *mi)
                                        sc->colors, &sc->nColors,
                                        False, 0, False);
 
                                        sc->colors, &sc->nColors,
                                        False, 0, False);
 
-       sc->school = initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum,
+       sc->school = glschool_initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum,
                                                        MinRadius, AvoidFact, MatchFact, CenterFact, TargetFact,
                                                        DistComp);
        if (sc->school == (School *)0) {
                                                        MinRadius, AvoidFact, MatchFact, CenterFact, TargetFact,
                                                        DistComp);
        if (sc->school == (School *)0) {
@@ -172,11 +173,12 @@ init_glschool(ModeInfo *mi)
 
        reshape_glschool(mi, width, height);
 
 
        reshape_glschool(mi, width, height);
 
-       initGLEnv(DoFog);
-       initFishes(sc->school);
-       createDrawLists(&SCHOOL_BBOX(sc->school), &sc->bboxList, &sc->goalList, &sc->fishList,
-                        &sc->fish_polys, &sc->box_polys, wire);
-       computeAccelerations(sc->school);
+       glschool_initGLEnv(DoFog);
+       glschool_initFishes(sc->school);
+       glschool_createDrawLists(&SCHOOL_BBOX(sc->school), 
+                                 &sc->bboxList, &sc->goalList, &sc->fishList,
+                                 &sc->fish_polys, &sc->box_polys, wire);
+       glschool_computeAccelerations(sc->school);
 }
 
 ENTRYPOINT void
 }
 
 ENTRYPOINT void
@@ -196,17 +198,19 @@ draw_glschool(ModeInfo *mi)
         mi->polygon_count = 0;
 
        if ((sc->goalCounter % GoalChgFreq) == 0)
         mi->polygon_count = 0;
 
        if ((sc->goalCounter % GoalChgFreq) == 0)
-               newGoal(sc->school);
+               glschool_newGoal(sc->school);
        sc->goalCounter++;
 
        sc->rotCounter++;
        sc->rotCounter = (sc->rotCounter%360);
 
        sc->goalCounter++;
 
        sc->rotCounter++;
        sc->rotCounter = (sc->rotCounter%360);
 
-       applyMovements(sc->school);
-       drawSchool(sc->colors, sc->school, sc->bboxList, sc->goalList, sc->fishList, sc->rotCounter, sc->drawGoal, sc->drawBBox, 
-                   sc->fish_polys, sc->box_polys,
-                   &mi->polygon_count);
-       computeAccelerations(sc->school);
+       glschool_applyMovements(sc->school);
+       glschool_drawSchool(sc->colors, sc->school, sc->bboxList, 
+                            sc->goalList, sc->fishList, sc->rotCounter, 
+                              sc->drawGoal, sc->drawBBox, 
+                            sc->fish_polys, sc->box_polys,
+                            &mi->polygon_count);
+       glschool_computeAccelerations(sc->school);
 
        if (mi->fps_p)
                do_fps(mi);
 
        if (mi->fps_p)
                do_fps(mi);
index 5eef4e67482635ffbfef75a6b39087c37baaba27..32b4a5f4c403ef5afc628dbf4d48f0f195fe61a6 100644 (file)
@@ -77,7 +77,7 @@ getDifferenceVector(double *v0, double *v1, double *diff)
 
 
 void
 
 
 void
-initFish(Fish *f, double *mins, double *ranges)
+glschool_initFish(Fish *f, double *mins, double *ranges)
 {
        int i;
 
 {
        int i;
 
@@ -92,7 +92,7 @@ initFish(Fish *f, double *mins, double *ranges)
 
 
 void
 
 
 void
-initFishes(School *s)
+glschool_initFishes(School *s)
 {
        int             i;
        Fish    *f = (Fish *)0;
 {
        int             i;
        Fish    *f = (Fish *)0;
@@ -103,11 +103,11 @@ initFishes(School *s)
        Fish    *theFishes = SCHOOL_FISHES(s);
 
        for(i = 0, f = theFishes; i < nFish; i++, f++)
        Fish    *theFishes = SCHOOL_FISHES(s);
 
        for(i = 0, f = theFishes; i < nFish; i++, f++)
-               initFish(f, mins, ranges);
+               glschool_initFish(f, mins, ranges);
 }
 
 
 }
 
 
-void
+static void
 applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double momentum)
 {
        int                     i;
 applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double momentum)
 {
        int                     i;
@@ -141,7 +141,7 @@ applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double mom
 
 
 void
 
 
 void
-applyMovements(School *s)
+glschool_applyMovements(School *s)
 {
        int             i = 0;
        Fish    *f = (Fish *)0;
 {
        int             i = 0;
        Fish    *f = (Fish *)0;
@@ -158,7 +158,7 @@ applyMovements(School *s)
 
 
 School *
 
 
 School *
-initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum,
+glschool_initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum,
                   double minRadius, double avoidFact, double matchFact, double centerFact, double targetFact,
                   double distComp)
 {
                   double minRadius, double avoidFact, double matchFact, double centerFact, double targetFact,
                   double distComp)
 {
@@ -193,14 +193,14 @@ initSchool(int nFish, double accLimit, double maxV, double minV, double distExp,
 }
 
 void
 }
 
 void
-freeSchool(School *s)
+glschool_freeSchool(School *s)
 {
        free(SCHOOL_FISHES(s));
        free(s);
 }
 
 void
 {
        free(SCHOOL_FISHES(s));
        free(s);
 }
 
 void
-setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
+glschool_setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
 {
        int             i;
        BBox    *bbox = &SCHOOL_BBOX(s);
 {
        int             i;
        BBox    *bbox = &SCHOOL_BBOX(s);
@@ -217,7 +217,7 @@ setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zM
 
 
 void
 
 
 void
-newGoal(School *s)
+glschool_newGoal(School *s)
 {
        SCHOOL_IGOAL(s,0) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,0) + SCHOOL_IMID(s,0);
        SCHOOL_IGOAL(s,1) = 0.40*(drand48()-0.5)*SCHOOL_IRANGE(s,1) + SCHOOL_IMID(s,1);
 {
        SCHOOL_IGOAL(s,0) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,0) + SCHOOL_IMID(s,0);
        SCHOOL_IGOAL(s,1) = 0.40*(drand48()-0.5)*SCHOOL_IRANGE(s,1) + SCHOOL_IMID(s,1);
@@ -226,7 +226,7 @@ newGoal(School *s)
 
 
 double
 
 
 double
-computeNormalAndThetaToPlusZ(double *v, double *xV)
+glschool_computeNormalAndThetaToPlusZ(double *v, double *xV)
 {
        double  x1 = 0.0;
        double  y1 = 0.0;
 {
        double  x1 = 0.0;
        double  y1 = 0.0;
@@ -255,7 +255,7 @@ computeNormalAndThetaToPlusZ(double *v, double *xV)
 
 
 int
 
 
 int
-computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel)
+glschool_computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel)
 {
        int             i;
        double  dist;
 {
        int             i;
        double  dist;
@@ -296,7 +296,7 @@ computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, d
 
 
 void
 
 
 void
-computeAccelerations(School *s)
+glschool_computeAccelerations(School *s)
 {
        int             i;
        int             j;
 {
        int             i;
        int             j;
@@ -326,7 +326,7 @@ computeAccelerations(School *s)
                clearVector(centroid);
                clearVector(avoidance);
                clearVector(FISH_ACC(ref));
                clearVector(centroid);
                clearVector(avoidance);
                clearVector(FISH_ACC(ref));
-               neighborCount = computeGroupVectors(s, ref, avoidance, centroid, avgVel);
+               neighborCount = glschool_computeGroupVectors(s, ref, avoidance, centroid, avgVel);
 
                /* avoidanceAccel[] = avoidance[] * AvoidFact */
                scaleVector(avoidance, avoidFact);
 
                /* avoidanceAccel[] = avoidance[] * AvoidFact */
                scaleVector(avoidance, avoidFact);
index 88f8800eb5df703f356d5805b015268bfc5f4e73..339e778fe51f69463f9b1033d94cb621e81728b4 100644 (file)
@@ -107,20 +107,20 @@ typedef struct {
 #define SCHOOL_FISHES(s)               ((s)->theFish)
 #define SCHOOL_IFISH(s,i)              ((s)->theFish[i])
 
 #define SCHOOL_FISHES(s)               ((s)->theFish)
 #define SCHOOL_IFISH(s,i)              ((s)->theFish[i])
 
-extern void            initFishes(School *);
-extern void            initFish(Fish *, double *, double *);
+extern void            glschool_initFishes(School *);
+extern void            glschool_initFish(Fish *, double *, double *);
 
 
-extern void            applyMovements(School *);
-extern void            applyFishMovements(Fish *, BBox *, double, double, double);
+extern void            glschool_applyMovements(School *);
+/* extern void         applyFishMovements(Fish *, BBox *, double, double, double); */
 
 
-extern void            freeSchool(School *);
-extern School          *initSchool(int, double, double, double, double, double, double, double, double, double, double, double);
+extern void            glschool_freeSchool(School *);
+extern School          *glschool_initSchool(int, double, double, double, double, double, double, double, double, double, double, double);
 
 
-extern void            newGoal(School *);
-extern void            setBBox(School *, double, double, double, double, double, double);
+extern void            glschool_newGoal(School *);
+extern void            glschool_setBBox(School *, double, double, double, double, double, double);
 
 
-extern void            computeAccelerations(School *);
-extern double          computeNormalAndThetaToPlusZ(double *, double *);
-int                    computeGroupVectors(School *, Fish *, double *, double *, double *);
+extern void            glschool_computeAccelerations(School *);
+extern double          glschool_computeNormalAndThetaToPlusZ(double *, double *);
+int                    glschool_computeGroupVectors(School *, Fish *, double *, double *, double *);
 
 #endif /* __GLSCHOOL_ALG_H__ */
 
 #endif /* __GLSCHOOL_ALG_H__ */
index 3775b109c5d705d6007f3fc5f6fac4f4d9037e97..660580b98538b016ee560f02154dd7709c267058 100644 (file)
@@ -15,7 +15,7 @@
 #include "tube.h"
 
 void
 #include "tube.h"
 
 void
-drawGoal(double *goal, GLuint goalList)
+glschool_drawGoal(double *goal, GLuint goalList)
 {
        glColor3f(1.0, 0.0, 0.0);
        glPushMatrix();
 {
        glColor3f(1.0, 0.0, 0.0);
        glPushMatrix();
@@ -28,7 +28,7 @@ drawGoal(double *goal, GLuint goalList)
 }
 
 int
 }
 
 int
-drawBoundingBox(BBox *bbox, Bool wire)
+glschool_drawBoundingBox(BBox *bbox, Bool wire)
 {
   int polys = 0;
        double          xMin = BBOX_XMIN(bbox);
 {
   int polys = 0;
        double          xMin = BBOX_XMIN(bbox);
@@ -98,18 +98,18 @@ drawBoundingBox(BBox *bbox, Bool wire)
 }
 
 int
 }
 
 int
-createBBoxList(BBox *bbox, GLuint *bboxList, int wire)
+glschool_createBBoxList(BBox *bbox, GLuint *bboxList, int wire)
 {
   int polys = 0;
        *bboxList = glGenLists(1);
        glNewList(*bboxList, GL_COMPILE);
 {
   int polys = 0;
        *bboxList = glGenLists(1);
        glNewList(*bboxList, GL_COMPILE);
-       polys = drawBoundingBox(bbox, wire);
+       polys = glschool_drawBoundingBox(bbox, wire);
        glEndList();
         return polys;
 }
 
 void
        glEndList();
         return polys;
 }
 
 void
-createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire)
+glschool_createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire)
 {
 
         int faces = 16;
 {
 
         int faces = 16;
@@ -117,7 +117,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList
         *box_polys = 0;
         *fish_polys = 0;
 
         *box_polys = 0;
         *fish_polys = 0;
 
-        *box_polys +=  createBBoxList(bbox, bboxList, wire);
+        *box_polys += glschool_createBBoxList(bbox, bboxList, wire);
 
         *box_polys = 0;
         *fish_polys = 0;
 
         *box_polys = 0;
         *fish_polys = 0;
@@ -145,7 +145,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList
 
 
 void
 
 
 void
-initLights(void)
+glschool_initLights(void)
 {
        GLfloat         amb[4] = {0.1, 0.1, 0.1, 1.0};
        GLfloat         dif[4] = {1.0, 1.0, 1.0, 1.0};
 {
        GLfloat         amb[4] = {0.1, 0.1, 0.1, 1.0};
        GLfloat         dif[4] = {1.0, 1.0, 1.0, 1.0};
@@ -165,7 +165,7 @@ initLights(void)
 }
 
 void
 }
 
 void
-initFog()
+glschool_initFog(void)
 {
        GLfloat         fog[4] = {0.0, 0.0, 0.15, 1.0};
 
 {
        GLfloat         fog[4] = {0.0, 0.0, 0.15, 1.0};
 
@@ -177,7 +177,7 @@ initFog()
 }
 
 void
 }
 
 void
-initGLEnv(Bool doFog)
+glschool_initGLEnv(Bool doFog)
 {
        GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
 
 {
        GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
 
@@ -194,12 +194,12 @@ initGLEnv(Bool doFog)
        glShadeModel(GL_SMOOTH);
        glEnable(GL_CULL_FACE);
 
        glShadeModel(GL_SMOOTH);
        glEnable(GL_CULL_FACE);
 
-       initLights();
-       if (doFog) initFog();
+       glschool_initLights();
+       if (doFog) glschool_initFog();
 }
 
 void
 }
 
 void
-reshape(int width, int height)
+glschool_reshape(int width, int height)
 {
        GLfloat h = (GLfloat) width / (GLfloat) height;
 
 {
        GLfloat h = (GLfloat) width / (GLfloat) height;
 
@@ -214,7 +214,7 @@ reshape(int width, int height)
 }
 
 void
 }
 
 void
-getColorVect(XColor *colors, int index, double *colorVect)
+glschool_getColorVect(XColor *colors, int index, double *colorVect)
 {
        colorVect[0] = colors[index].red / 65535.0;
        colorVect[1] = colors[index].green / 65535.0;
 {
        colorVect[0] = colors[index].red / 65535.0;
        colorVect[1] = colors[index].green / 65535.0;
@@ -222,7 +222,7 @@ getColorVect(XColor *colors, int index, double *colorVect)
 }
 
 void
 }
 
 void
-drawSchool(XColor *colors, School *s,
+glschool_drawSchool(XColor *colors, School *s,
                   GLuint bboxList, GLuint goalList, GLuint fishList,
                   int rotCounter, Bool drawGoal_p, Bool drawBBox_p,
            int fish_polys, int box_polys, unsigned long *polys)
                   GLuint bboxList, GLuint goalList, GLuint fishList,
                   int rotCounter, Bool drawGoal_p, Bool drawBBox_p,
            int fish_polys, int box_polys, unsigned long *polys)
@@ -248,16 +248,16 @@ drawSchool(XColor *colors, School *s,
                 *polys += box_polys;
        }
 
                 *polys += box_polys;
        }
 
-       if (drawGoal_p) drawGoal(SCHOOL_GOAL(s), goalList);
+       if (drawGoal_p) glschool_drawGoal(SCHOOL_GOAL(s), goalList);
 
        for(i = 0, f = theFishes; i < nFish; i++, f++) {
 
        for(i = 0, f = theFishes; i < nFish; i++, f++) {
-               colTheta = computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect);
-               rotTheta = computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect);
+               colTheta = glschool_computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect);
+               rotTheta = glschool_computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect);
 
                if (FISH_IAVGVEL(f,2) < 0.0) colTheta = 180.0 - colTheta;
                if (FISH_VZ(f) < 0.0) rotTheta = 180.0 - rotTheta;
 
 
                if (FISH_IAVGVEL(f,2) < 0.0) colTheta = 180.0 - colTheta;
                if (FISH_VZ(f) < 0.0) rotTheta = 180.0 - rotTheta;
 
-               getColorVect(colors, (int)(colTheta+240)%360, colorVect);
+               glschool_getColorVect(colors, (int)(colTheta+240)%360, colorVect);
                glColor3f(colorVect[0], colorVect[1], colorVect[2]);
 
                glPushMatrix();
                glColor3f(colorVect[0], colorVect[1], colorVect[2]);
 
                glPushMatrix();
index 7676a0fd3febc782011181d4e86b9c23ea44de3f..ac311f7db7e80d20b50419f61e4ba522403d04e5 100644 (file)
 
 #include "glschool_alg.h"
 
 
 #include "glschool_alg.h"
 
-extern void initFog(void);
-extern void initGLEnv(Bool);
-extern void initLights(void);
-extern void reshape(int, int);
-extern void drawGoal(double *, GLuint);
-extern void getColorVect(XColor *, int, double *);
-extern int drawBoundingBox(BBox *, Bool);
-extern int createBBoxList(BBox *, GLuint *, int);
-extern void createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool);
-extern void drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, 
+extern void glschool_initFog(void);
+extern void glschool_initGLEnv(Bool);
+extern void glschool_initLights(void);
+extern void glschool_reshape(int, int);
+extern void glschool_drawGoal(double *, GLuint);
+extern void glschool_getColorVect(XColor *, int, double *);
+extern int glschool_drawBoundingBox(BBox *, Bool);
+extern int glschool_createBBoxList(BBox *, GLuint *, int);
+extern void glschool_createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool);
+extern void glschool_drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, 
                        int, int, unsigned long *);
 
 #endif /* __GLSCHOOL_GL_H__ */
                        int, int, unsigned long *);
 
 #endif /* __GLSCHOOL_GL_H__ */
index 070a4e33d49d10c67561fb3d9f18d20bdcf6c11a..43d50fb9649b45d2bfe2e31c1eee42d5bef3dcc9 100644 (file)
@@ -1,4 +1,4 @@
-/* gltext, Copyright (c) 2001-2008 Jamie Zawinski <jwz@jwz.org>
+/* gltext, Copyright (c) 2001-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -30,6 +30,7 @@
 #include "xlockmore.h"
 #include "colors.h"
 #include "tube.h"
 #include "xlockmore.h"
 #include "colors.h"
 #include "tube.h"
+#include "sphere.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "textclient.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "textclient.h"
@@ -233,6 +234,10 @@ parse_text (ModeInfo *mi)
 #  if defined(_AIX)
           sprintf(tp->text, "%s\n%s %s.%s",
                   uts.nodename, uts.sysname, uts.version, uts.release);
 #  if defined(_AIX)
           sprintf(tp->text, "%s\n%s %s.%s",
                   uts.nodename, uts.sysname, uts.version, uts.release);
+#  elif defined(USE_IPHONE)
+          /* "My iPhone\n iPhone4,1\n Darwin 11.0.0" */
+          sprintf(tp->text, "%s\n%s\n%s %s",
+                  uts.nodename, uts.machine, uts.sysname, uts.release);
 #  elif defined(__APPLE__)  /* MacOS X + XDarwin */
           {
             const char *file = 
 #  elif defined(__APPLE__)  /* MacOS X + XDarwin */
           {
             const char *file = 
@@ -444,14 +449,26 @@ fill_character (GLUTstrokeFont font, int c, Bool wire, int *polysP)
 # else
             int smooth = False;
 # endif
 # else
             int smooth = False;
 # endif
+
             if (j != stroke->num_coords)
               *polysP += tube (lx,       ly,       0,
                                coord->x, coord->y, 0,
                                tube_width,
                                tube_width * 0.15,
             if (j != stroke->num_coords)
               *polysP += tube (lx,       ly,       0,
                                coord->x, coord->y, 0,
                                tube_width,
                                tube_width * 0.15,
-                               TUBE_FACES, smooth, True, wire);
+                               TUBE_FACES, smooth, False, wire);
             lx = coord->x;
             ly = coord->y;
             lx = coord->x;
             ly = coord->y;
+
+            /* Put a sphere at the endpoint of every line segment.  Wasteful
+               on curves like "0" but necessary on corners like "4". */
+            if (! wire)
+              {
+                glPushMatrix();
+                glTranslatef (lx, ly, 0);
+                glScalef (tube_width, tube_width, tube_width);
+                *polysP += unit_sphere (TUBE_FACES, TUBE_FACES, wire);
+                glPopMatrix();
+              }
           }
       }
       return (int) (ch->right + tube_width);
           }
       }
       return (int) (ch->right + tube_width);
@@ -586,6 +603,7 @@ draw_text (ModeInfo *mi)
 
   glPushMatrix ();
   glScalef(1.1, 1.1, 1.1);
 
   glPushMatrix ();
   glScalef(1.1, 1.1, 1.1);
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   {
     double x, y, z;
 
   {
     double x, y, z;
@@ -595,7 +613,6 @@ draw_text (ModeInfo *mi)
                  (z - 0.5) * 8);
 
     gltrackball_rotate (tp->trackball);
                  (z - 0.5) * 8);
 
     gltrackball_rotate (tp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     if (face_front_p)
       {
 
     if (face_front_p)
       {
index c0ccaa133d54f246f8e53a170b63733a8c40333b..93d4c54263ef97e2610616d794013e10f0acbc5d 100644 (file)
@@ -29,6 +29,8 @@
 #include "trackball.h"
 #include "gltrackball.h"
 
 #include "trackball.h"
 #include "gltrackball.h"
 
+extern double current_device_rotation (void);  /* Bah, it's in fps.h */
+
 struct trackball_state {
   int x, y;
   GLfloat q[4];
 struct trackball_state {
   int x, y;
   GLfloat q[4];
@@ -55,6 +57,7 @@ gltrackball_reset (trackball_state *ts)
   trackball (ts->q, 0, 0, 0, 0);
 }
 
   trackball (ts->q, 0, 0, 0, 0);
 }
 
+
 /* Begin tracking the mouse: Call this when the mouse button goes down.
    x and y are the mouse position relative to the window.
    w and h are the size of the window.
 /* Begin tracking the mouse: Call this when the mouse button goes down.
    x and y are the mouse position relative to the window.
    w and h are the size of the window.
index 669a842299551923416cfcbb1e46a47009f2fe5f..db068d77bec8080c39be8d9f608cca6a975ab06e 100644 (file)
@@ -59,6 +59,10 @@ extern char *progname;
                */
 
 
                */
 
 
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+
 /* Width (and optionally height) of the string in pixels.
  */
 int
 /* Width (and optionally height) of the string in pixels.
  */
 int
@@ -413,6 +417,7 @@ print_gl_string (Display *dpy,
   int tabs = cw * 7;
   int lines = 0;
   const char *c;
   int tabs = cw * 7;
   int lines = 0;
   const char *c;
+  GLfloat color[4];
 
 # ifdef HAVE_GLBITMAP
   /* Sadly, this causes a stall of the graphics pipeline (as would the
 
 # ifdef HAVE_GLBITMAP
   /* Sadly, this causes a stall of the graphics pipeline (as would the
@@ -445,6 +450,8 @@ print_gl_string (Display *dpy,
     glGetIntegerv (GL_BLEND_DST, &oblend);
 # endif /* !HAVE_GLBITMAP */
 
     glGetIntegerv (GL_BLEND_DST, &oblend);
 # endif /* !HAVE_GLBITMAP */
 
+    glGetFloatv (GL_CURRENT_COLOR, color);
+
   for (c = string; *c; c++)
     if (*c == '\n') lines++;
 
   for (c = string; *c; c++)
     if (*c == '\n') lines++;
 
@@ -468,6 +475,7 @@ print_gl_string (Display *dpy,
 
     glDisable (GL_LIGHTING);
 
 
     glDisable (GL_LIGHTING);
 
+
       if (!in_scene_p)
         glDisable (GL_DEPTH_TEST);
     glDisable (GL_CULL_FACE);
       if (!in_scene_p)
         glDisable (GL_DEPTH_TEST);
     glDisable (GL_CULL_FACE);
@@ -531,6 +539,11 @@ print_gl_string (Display *dpy,
         check_gl_error ("glOrtho");
 # endif
 
         check_gl_error ("glOrtho");
 # endif
 
+        /* Let's always dropshadow the FPS and Title text. */
+        if (! in_scene_p)
+          clear_background_p = True;
+
+#if 0
         if (clear_background_p)
           {
             int w, h;
         if (clear_background_p)
           {
             int w, h;
@@ -554,6 +567,8 @@ print_gl_string (Display *dpy,
 # endif /* !HAVE_GLBITMAP */
             glColor3f (1, 1, 1);
           }
 # endif /* !HAVE_GLBITMAP */
             glColor3f (1, 1, 1);
           }
+#endif /* 0 */
+
 
         /* draw the text */
 
 
         /* draw the text */
 
@@ -583,23 +598,43 @@ print_gl_string (Display *dpy,
               }
             else
               {
               }
             else
               {
+                /* outline font in black */
+                const XPoint offsets[] = {{ -1, -1 },
+                                          { -1,  1 },
+                                          {  1,  1 },
+                                          {  1, -1 },
+                                          {  0,  0 }};
+                int j;
+# ifndef HAVE_GLBITMAP
+                char s[2];
+                s[0] = c;
+                s[1] = 0;
+# endif /* !HAVE_GLBITMAP */
+
+                glColor3f (0, 0, 0);
+                for (j = 0; j < countof(offsets); j++)
+                  {
+                    if (! clear_background_p)
+                      j = countof(offsets)-1;
+                    if (offsets[j].x == 0)
+                      glColor4fv (color);
+
+# ifdef HAVE_GLBITMAP
+                    glRasterPos2f (x2 + offsets[j].x, y + offsets[j].y);
+                    glCallList (font_dlist + (int)(c));
+# else /* !HAVE_GLBITMAP */
+                    glPushMatrix();
+                    glTranslatef (x2 + offsets[j].x, y + offsets[j].y, 0);
+                    print_texture_string (font_data, s);
+                    glPopMatrix();
+# endif /* !HAVE_GLBITMAP */
+                  }
 # ifdef HAVE_GLBITMAP
 # ifdef HAVE_GLBITMAP
-                glRasterPos2f (x2, y);
-                glCallList (font_dlist + (int)(c));
                 x2 += (font->per_char
                        ? font->per_char[c - font->min_char_or_byte2].width
                        : font->min_bounds.width);
 # else /* !HAVE_GLBITMAP */
                 x2 += (font->per_char
                        ? font->per_char[c - font->min_char_or_byte2].width
                        : font->min_bounds.width);
 # else /* !HAVE_GLBITMAP */
-                glPushMatrix();
-                glTranslatef (x2, y, 0);
-                {
-                  char s[2];
-                  s[0] = c;
-                  s[1] = 0;
-                  print_texture_string (font_data, s);
-                  x2 += texture_string_width (font_data, s, 0);
-                }
-                glPopMatrix();
+                x2 += texture_string_width (font_data, s, 0);
 # endif /* !HAVE_GLBITMAP */
               }
           }
 # endif /* !HAVE_GLBITMAP */
               }
           }
index c9ee163f648c4e73d6f89675330dd24a5e9e9620..d8966f45c339eed72cc0e5f09c2079ffb531c598 100644 (file)
@@ -1017,7 +1017,10 @@ draw_hilbert (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index 67c2c4b19e42c41274512260d8ddda9701ae3b81..63b832947e63328a2143ff1ddf4857de0f2602f7 100644 (file)
@@ -990,7 +990,11 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi)
            js->axis -= 2*M_PI;
        }
     }
            js->axis -= 2*M_PI;
        }
     }
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate(js->trackball);
     gltrackball_rotate(js->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     if(js->color_style == COLOR_STYLE_CYCLE) {
        int i;
 
     if(js->color_style == COLOR_STYLE_CYCLE) {
        int i;
index 9d1371a16bb1b1263fb050101326f0be80b0cb0a..3ffd08d66effe7ab1b2b6c4695a0b70f12424891 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 #define DEF_WOBBLE       "True"
 #define DEF_DEBUG        "False"
 
 #define DEF_WOBBLE       "True"
 #define DEF_DEBUG        "False"
 
+#define DEF_FONT "-*-helvetica-bold-r-normal-*-240-*"
 #define DEFAULTS  "*delay:             20000   \n" \
                  "*showFPS:            False   \n" \
 #define DEFAULTS  "*delay:             20000   \n" \
                  "*showFPS:            False   \n" \
+                 "*font:            " DEF_FONT"\n" \
                  "*wireframe:          False   \n" \
                  "*desktopGrabber:   xscreensaver-getimage -no-desktop %s\n" \
                  "*grabDesktopImages:  False   \n" \
                  "*wireframe:          False   \n" \
                  "*desktopGrabber:   xscreensaver-getimage -no-desktop %s\n" \
                  "*grabDesktopImages:  False   \n" \
 # include <GL/glu.h>
 #endif
 
 # include <GL/glu.h>
 #endif
 
-#ifdef HAVE_JWZGLES
-# include "jwzgles.h"
-#endif /* HAVE_JWZGLES */
-
 #include "xlockmore.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "spline.h"
 #include "normals.h"
 #include "grab-ximage.h"
 #include "xlockmore.h"
 #include "rotator.h"
 #include "gltrackball.h"
 #include "spline.h"
 #include "normals.h"
 #include "grab-ximage.h"
+#include "texfont.h"
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#else /* !HAVE_JWZGLES */
+# define HAVE_TESS
+#endif /* !HAVE_JWZGLES */
 
 #undef BELLRAND
 #define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
 
 #undef BELLRAND
 #define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3)
@@ -122,12 +127,15 @@ struct jigsaw_configuration {
   trackball_state *trackball;
   rotator *rot;
   Bool button_down_p;
   trackball_state *trackball;
   rotator *rot;
   Bool button_down_p;
+  texture_font_data *texfont;
+  GLuint loading_dlist;
 
   int puzzle_width;
   int puzzle_height;
   puzzle_piece *puzzle;
 
 
   int puzzle_width;
   int puzzle_height;
   puzzle_piece *puzzle;
 
-  enum { PUZZLE_LOADING,
+  enum { PUZZLE_LOADING_MSG,
+         PUZZLE_LOADING,
          PUZZLE_UNSCATTER,
          PUZZLE_SOLVE, 
          PUZZLE_SCATTER } state;
          PUZZLE_UNSCATTER,
          PUZZLE_SOLVE, 
          PUZZLE_SCATTER } state;
@@ -211,6 +219,8 @@ make_puzzle_curve (int pixels)
 }
 
 
 }
 
 
+#ifdef HAVE_TESS
+
 static void
 tess_error_cb (GLenum errorCode)
 {
 static void
 tess_error_cb (GLenum errorCode)
 {
@@ -260,6 +270,149 @@ tess_vertex_cb (void *vertex_data, void *closure)
   glVertex3d (x, y, z);
 }
 
   glVertex3d (x, y, z);
 }
 
+#else  /* HAVE_TESS */
+
+/* Writes triangles into the array of floats.
+   Returns the number of floats written (triangles * 9).
+ */
+static int
+make_piece_eighth (jigsaw_configuration *jc, const spline *s,
+                   int resolution, int type, GLfloat *out,
+                   Bool flip_x, Bool flip_y, Bool rotate_p)
+{
+  GLfloat *oout = out;
+  int cx = resolution/2;
+  int cy = resolution/2;
+  int np = (s->n_points / 2) + 1;
+  int last_x = -999999, last_y = -999999;
+  Bool inflected = False;
+  int i;
+
+  if (type == FLAT)
+    {
+      *out++ = cx;
+      *out++ = 0;
+      *out++ = 0;
+
+      *out++ = cx;
+      *out++ = cy;
+      *out++ = 0;
+
+      *out++ = 0;
+      *out++ = 0;
+      *out++ = 0;
+
+      goto END;
+    }
+
+  for (i = (type == IN ? np-1 : 0); 
+       (type == IN ? i >= 0 : i < np);
+       i += (type == IN ? -1 : 1))
+    {
+      int x = s->points[i].x;
+      int y = s->points[i].y;
+
+      if (type == IN)
+        y = -y;
+
+      if (last_x != -999999)
+        {
+          if (!inflected &&
+              (type == IN
+               ? x >= last_x 
+               : x < last_x))
+            {
+              inflected = True;
+
+              *out++ = cx;
+              *out++ = cy;
+              *out++ = 0;
+
+              *out++ = last_x;
+              *out++ = last_y;
+              *out++ = 0;
+
+              if (type == IN)
+                {
+                  cx = 0;
+                  cy = 0;
+                }
+              else
+                {
+                  cy = y;
+                }
+
+              *out++ = cx;
+              *out++ = cy;
+              *out++ = 0;
+            }
+
+          *out++ = cx;
+          *out++ = cy;
+          *out++ = 0;
+
+          *out++ = last_x;
+          *out++ = last_y;
+          *out++ = 0;
+
+          *out++ = x;
+          *out++ = y;
+          *out++ = 0;
+        }
+
+      last_x = x;
+      last_y = y;
+    }
+ END:
+
+  {
+    int count = out - oout;
+    Bool cw_p;
+
+    if (flip_x)
+      for (i = 0; i < count; i += 3)
+        oout[i] = resolution - oout[i];
+
+    if (flip_y)
+      for (i = 0; i < count; i += 3)
+        oout[i+1] = resolution - oout[i+1];
+
+    cw_p = (type == IN);
+    if (flip_x) cw_p = !cw_p;
+    if (flip_y) cw_p = !cw_p;
+
+    if (cw_p)
+      for (i = 0; i < count; i += 9)
+        {
+          GLfloat x1 = oout[i+0];
+          GLfloat y1 = oout[i+1];
+          GLfloat x2 = oout[i+3];
+          GLfloat y2 = oout[i+4];
+          GLfloat x3 = oout[i+6];
+          GLfloat y3 = oout[i+7];
+          oout[i+0] = x2;
+          oout[i+1] = y2;
+          oout[i+3] = x1;
+          oout[i+4] = y1;
+          oout[i+6] = x3;
+          oout[i+7] = y3;
+        }
+
+    if (rotate_p)
+      for (i = 0; i < count; i += 3)
+        {
+          GLfloat x = oout[i];
+          GLfloat y = oout[i+1];
+          oout[i]   = resolution - y;
+          oout[i+1] = x;
+        }
+
+    return count;
+  }
+}
+
+#endif /* !HAVE_TESS */
+
 
 
 /* Draws a puzzle piece.  The top/right/bottom/left_type args
 
 
 /* Draws a puzzle piece.  The top/right/bottom/left_type args
@@ -331,11 +484,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
     }
   }
 
     }
   }
 
-  free_spline (s);
-
-  { GLfloat s = 1.0 / resolution; glScalef (s, s, s); }
+  { GLfloat ss = 1.0 / resolution; glScalef (ss, ss, ss); }
 
 
+# ifndef HAVE_JWZGLES
   glPolygonMode (GL_FRONT_AND_BACK, wire ? GL_LINE : GL_FILL);
   glPolygonMode (GL_FRONT_AND_BACK, wire ? GL_LINE : GL_FILL);
+# endif
 
   if (wire)
     {
 
   if (wire)
     {
@@ -345,9 +498,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
     }
   else
     {
     }
   else
     {
-# ifndef  _GLUfuncptr
-#  define _GLUfuncptr void(*)(void)
-# endif
+# ifdef HAVE_TESS
+
+#  ifndef  _GLUfuncptr
+#   define _GLUfuncptr void(*)(void)
+#  endif
       GLUtesselator *tess = gluNewTess();
       gluTessCallback(tess, GLU_TESS_BEGIN,      (_GLUfuncptr)glBegin);
       gluTessCallback(tess, GLU_TESS_VERTEX_DATA,(_GLUfuncptr)tess_vertex_cb);
       GLUtesselator *tess = gluNewTess();
       gluTessCallback(tess, GLU_TESS_BEGIN,      (_GLUfuncptr)glBegin);
       gluTessCallback(tess, GLU_TESS_VERTEX_DATA,(_GLUfuncptr)tess_vertex_cb);
@@ -389,9 +544,104 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
       gluTessEndContour(tess);
       gluTessEndPolygon(tess);
       gluDeleteTess(tess);
       gluTessEndContour(tess);
       gluTessEndPolygon(tess);
       gluDeleteTess(tess);
+
+      /* Put it back */
+      for (i = 0; i < o; i += 3)
+        {
+          GLdouble *p = pts + i;
+          p[2] = -p[2];
+        }
+
+# else  /* !HAVE_TESS */
+
+      GLfloat *tri = (GLfloat *)
+        (GLfloat *) malloc (s->n_points * 4 * 3 * 3 * sizeof(*pts));
+      GLfloat *otri = tri;
+      int count;
+      GLdouble zz;
+
+      tri += make_piece_eighth (jc, s, resolution, top_type,    tri, 0, 0, 0);
+      tri += make_piece_eighth (jc, s, resolution, top_type,    tri, 1, 0, 0);
+      tri += make_piece_eighth (jc, s, resolution, left_type,   tri, 0, 1, 1);
+      tri += make_piece_eighth (jc, s, resolution, left_type,   tri, 1, 1, 1);
+      tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 0, 1, 0);
+      tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 1, 1, 0);
+      tri += make_piece_eighth (jc, s, resolution, right_type,  tri, 0, 0, 1);
+      tri += make_piece_eighth (jc, s, resolution, right_type,  tri, 1, 0, 1);
+      count = (tri - otri) / 9;
+
+      if (! wire)
+        {
+          glEnable (GL_TEXTURE_2D);
+          glEnable (GL_BLEND);
+          glEnable (GL_LIGHTING);
+          glBindTexture(GL_TEXTURE_2D, jc->texid);
+        }
+
+      for (zz = z; zz >= -z; zz -= 2*z)
+        {
+          int i;
+          glFrontFace (zz > 0 ? GL_CCW : GL_CW);
+          glNormal3f (0, 0, (zz > 0 ? 1 : -1));
+
+          if (zz < 0)
+            glDisable (GL_TEXTURE_2D); /* back face */
+
+          glPushMatrix();
+          glTranslatef (0, 0, zz);
+
+          tri = otri;
+          if (wire)
+            {
+              for (i = 0; i < count; i++)
+                {
+                  glBegin (GL_LINE_LOOP);
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glVertex3f (tri[0], tri[1], tri[2]); tri += 3;
+                  glEnd();
+                }
+            }
+          else
+            {
+              GLfloat pw = p->jc->puzzle_width;
+              GLfloat ph = p->jc->puzzle_height;
+              GLfloat r = resolution;
+
+              glBegin (GL_TRIANGLES);
+              for (i = 0; i < count * 3; i++)
+                {
+                  GLfloat x = *tri++;
+                  GLfloat y = *tri++;
+                  GLfloat z = *tri++;
+
+                  /* 0-1 from piece origin */
+                  GLfloat xx = x / r;
+                  GLfloat yy = y / r;
+
+                  /* 0-1 from puzzle origin */
+                  GLfloat tx = (p->home.x + xx)      / pw;
+                  GLfloat ty = (ph - p->home.y - yy) / ph;
+
+                  tx = p->jc->tex_x + (tx * p->jc->tex_width);
+                  ty = p->jc->tex_y + (ty * p->jc->tex_height);
+
+                  glTexCoord2f (tx, ty);
+                  glVertex3f (x, y, z);
+                }
+              glEnd();
+            }
+
+          polys += count;
+          glPopMatrix();
+        }
+
+      free (otri);
+# endif /* !HAVE_TESS */
     }
 
   /* side faces */
     }
 
   /* side faces */
+
   glFrontFace (GL_CCW);
   glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
   for (i = 0; i < o; i += 3)
   glFrontFace (GL_CCW);
   glBegin (wire ? GL_LINES : GL_QUAD_STRIP);
   for (i = 0; i < o; i += 3)
@@ -402,12 +652,12 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
       GLdouble *pj = pts + j;
       GLdouble *pk = pts + k;
 
       GLdouble *pj = pts + j;
       GLdouble *pk = pts + k;
 
-      do_normal  (pj[0], pj[1], -pj[2],
-                  pj[0], pj[1],  pj[2],
+      do_normal  (pj[0], pj[1],  pj[2],
+                  pj[0], pj[1], -pj[2],
                   pk[0], pk[1],  pk[2]);
 
                   pk[0], pk[1],  pk[2]);
 
-      glVertex3f (p[0], p[1], -p[2]);
       glVertex3f (p[0], p[1],  p[2]);
       glVertex3f (p[0], p[1],  p[2]);
+      glVertex3f (p[0], p[1], -p[2]);
       polys++;
     }
   glEnd();
       polys++;
     }
   glEnd();
@@ -415,6 +665,8 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
   if (! wire)
     glColor3f (0.3, 0.3, 0.3);
 
   if (! wire)
     glColor3f (0.3, 0.3, 0.3);
 
+  /* outline the edges in gray */
+
   glDisable (GL_TEXTURE_2D);
   glDisable (GL_LIGHTING);
   glLineWidth (jc->line_thickness);
   glDisable (GL_TEXTURE_2D);
   glDisable (GL_LIGHTING);
   glLineWidth (jc->line_thickness);
@@ -431,6 +683,7 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p,
   glEnd();
   polys += o/3;
 
   glEnd();
   polys += o/3;
 
+  free_spline (s);
   free (pts);
 
   return polys;
   free (pts);
 
   return polys;
@@ -823,8 +1076,14 @@ move_one_piece (ModeInfo *mi)
       p1->to   = p0->current;
       p1->to.r = proper_rotation (jc, p1, p1->to.x, p1->to.y);
 
       p1->to   = p0->current;
       p1->to.r = proper_rotation (jc, p1, p1->to.x, p1->to.y);
 
-      p0->arc_height = 0.5 + frand(3.0);
-      p1->arc_height = 1.0 + frand(3.0);
+      /* Try to avoid having them intersect each other in the air. */
+      p0->arc_height = 0;
+      p1->arc_height = 0;
+      while (fabs (p0->arc_height - p1->arc_height) < 1.5)
+        {
+          p0->arc_height = 0.5 + frand(3.0);
+          p1->arc_height = 1.0 + frand(3.0);
+        }
 
 # define RTILT(V) \
          V = 90 - BELLRAND(180);       \
 
 # define RTILT(V) \
          V = 90 - BELLRAND(180);       \
@@ -892,6 +1151,91 @@ anim_tick (ModeInfo *mi)
 }
 
 
 }
 
 
+static void
+loading_msg (ModeInfo *mi)
+{
+  jigsaw_configuration *jc = &sps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
+  const char *text = "Loading...";
+  int h;
+  int w = texture_string_width (jc->texfont, text, &h);
+
+  if (wire) return;
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  if (! jc->loading_dlist)
+    {
+      GLfloat othick = jc->line_thickness;
+      puzzle_piece P = { 0, };
+      P.jc = jc;
+      jc->loading_dlist = glGenLists (1);
+      glNewList (jc->loading_dlist, GL_COMPILE);
+      jc->line_thickness = 1;
+      draw_piece (jc, &P,
+                  resolution_arg, thickness_arg,
+                  OUT, OUT, IN, OUT, True);
+      jc->line_thickness = othick;
+      glEndList();
+    }
+
+  glColor3f (0.2, 0.2, 0.4);
+
+  glPushMatrix();
+  {
+    double x, y, z;
+    get_position (jc->rot, &x, &y, &z, True);
+    glRotatef (x * 360, 1, 0, 0);
+    glRotatef (y * 360, 0, 1, 0);
+    glRotatef (z * 360, 0, 0, 1);
+    glScalef (5, 5, 5);
+    glTranslatef (-0.5, -0.5, 0);
+    glCallList (jc->loading_dlist);
+  }
+  glPopMatrix();
+
+  glColor3f (0.7, 0.7, 1);
+
+
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glLoadIdentity();
+
+  {
+    double rot = current_device_rotation();
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+  }
+
+  glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1);
+  glTranslatef ((MI_WIDTH(mi)  - w) / 2,
+                (MI_HEIGHT(mi) - h) / 2,
+                0);
+  glEnable (GL_TEXTURE_2D);
+  glPolygonMode (GL_FRONT, GL_FILL);
+  glDisable (GL_LIGHTING);
+  glEnable (GL_BLEND);
+  glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+  print_texture_string (jc->texfont, text);
+  glEnable (GL_DEPTH_TEST);
+  glPopMatrix();
+
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+
+  glMatrixMode(GL_MODELVIEW);
+}
+
+
 static void
 animate (ModeInfo *mi)
 {
 static void
 animate (ModeInfo *mi)
 {
@@ -899,10 +1243,16 @@ animate (ModeInfo *mi)
   double slow = 0.01;
   double fast = 0.04;
 
   double slow = 0.01;
   double fast = 0.04;
 
-  if (jc->button_down_p) return;
+  if (jc->button_down_p && jc->state != PUZZLE_LOADING_MSG)
+    return;
 
   switch (jc->state)
     {
 
   switch (jc->state)
     {
+    case PUZZLE_LOADING_MSG:
+      if (! jc->puzzle)
+        loading_msg (mi);
+      /* fall through */
+
     case PUZZLE_LOADING:
       if (!jc->puzzle) break;  /* still loading */
       jc->tick_speed = slow;
     case PUZZLE_LOADING:
       if (!jc->puzzle) break;  /* still loading */
       jc->tick_speed = slow;
@@ -1081,11 +1431,18 @@ init_jigsaw (ModeInfo *mi)
 
   jc->trackball = gltrackball_init ();
   jc->rot = make_rotator (0, 0, 0, 0, speed * 0.002, True);
 
   jc->trackball = gltrackball_init ();
   jc->rot = make_rotator (0, 0, 0, 0, speed * 0.002, True);
+  jc->texfont = load_texture_font (MI_DISPLAY(mi), "font");
 
 
-  jc->state = PUZZLE_LOADING;
+  jc->state = PUZZLE_LOADING_MSG;
 
   resolution_arg /= complexity_arg;
 
 
   resolution_arg /= complexity_arg;
 
+# ifndef HAVE_TESS
+  /* If it's not even, we get crosses. */
+  if (resolution_arg & 1)
+    resolution_arg++;
+# endif /* !HAVE_TESS */
+
   if (wire)
     make_puzzle_grid (mi);
   else
   if (wire)
     make_puzzle_grid (mi);
   else
@@ -1104,16 +1461,17 @@ draw_jigsaw (ModeInfo *mi)
   if (!jc->glx_context)
     return;
 
   if (!jc->glx_context)
     return;
 
-  animate (mi);
-
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context));
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context));
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  glPushMatrix ();
+  mi->polygon_count = 0;
 
 
-  gltrackball_rotate (jc->trackball);
+  glPushMatrix ();
   glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(current_device_rotation(), 0, 0, 1);
+  gltrackball_rotate (jc->trackball);
+
+  animate (mi);
 
   if (wobble_p && jc->puzzle)
     {
 
   if (wobble_p && jc->puzzle)
     {
@@ -1125,18 +1483,16 @@ draw_jigsaw (ModeInfo *mi)
       glRotatef (max/2 - z*max, 0, 1, 0);
     }
 
       glRotatef (max/2 - z*max, 0, 1, 0);
     }
 
-  mi->polygon_count = 0;
-
-  glEnable(GL_CULL_FACE);
-  glEnable(GL_DEPTH_TEST);
-  glEnable(GL_NORMALIZE);
-  glEnable(GL_LINE_SMOOTH);
-
   if (jc->puzzle)
     {
       GLfloat s = 14.0 / jc->puzzle_height;
       int x, y;
 
   if (jc->puzzle)
     {
       GLfloat s = 14.0 / jc->puzzle_height;
       int x, y;
 
+      glEnable(GL_CULL_FACE);
+      glEnable(GL_DEPTH_TEST);
+      glEnable(GL_NORMALIZE);
+      glEnable(GL_LINE_SMOOTH);
+
       glScalef (s, s, s);
       glTranslatef (-jc->puzzle_width / 2.0, -jc->puzzle_height / 2.0, 0);
 
       glScalef (s, s, s);
       glTranslatef (-jc->puzzle_width / 2.0, -jc->puzzle_height / 2.0, 0);
 
index 02c1f179dddea37f648e4c69e1abd2e30f1b19d9..1a7fe36b0a1a47ca939d3b3208a54a2adce03cf4 100644 (file)
@@ -2908,6 +2908,7 @@ draw_juggle (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   glTranslatef(0,-3,0);
 
 
   glTranslatef(0,-3,0);
 
@@ -2919,7 +2920,6 @@ draw_juggle (ModeInfo *mi)
                  (z - 0.5) * 15);
 
     gltrackball_rotate (sp->trackball);
                  (z - 0.5) * 15);
 
     gltrackball_rotate (sp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
 
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
 
index 15284ca801a384ed2b019cff54b00309f9827031..f70b120ba1e1c2436cbdacfe3e7d6d4d2e7d774d 100644 (file)
       lockward        Puts verts in lists without glBegin!
       pinion         Uses glSelectBuffer and gluPickMatrix for mouse-clicks.
       pipes           Uses glMap2f for the Utah Teapot.
       lockward        Puts verts in lists without glBegin!
       pinion         Uses glSelectBuffer and gluPickMatrix for mouse-clicks.
       pipes           Uses glMap2f for the Utah Teapot.
-      polyhedra       Uses GLUtesselator; also Utah Teapot.
+      polyhedra       Uses GLUtesselator (concave objects); also Utah Teapot.
       skytentacles    Uses GL_LINE in -cel mode.
       timetunnel      Uses GL_CONSTANT_ALPHA and all kinds of other stuff.
 
       skytentacles    Uses GL_LINE in -cel mode.
       timetunnel      Uses GL_CONSTANT_ALPHA and all kinds of other stuff.
 
 #elif defined(HAVE_COCOA)
 # include <OpenGL/gl.h>
 # include <OpenGL/glu.h>
 #elif defined(HAVE_COCOA)
 # include <OpenGL/gl.h>
 # include <OpenGL/glu.h>
-#else
+#else /* X11 */
+# ifndef  GL_GLEXT_PROTOTYPES
+#  define GL_GLEXT_PROTOTYPES /* for glBindBuffer */
+# endif
 # include <GL/glx.h>
 # include <GL/glu.h>
 #endif
 # include <GL/glx.h>
 # include <GL/glu.h>
 #endif
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #undef  Assert
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #undef  Assert
-#define Assert(C,S) do { \
-  if (!(C)) { \
-    fprintf (stderr, "jwzgles: %s\n", S); \
-    abort(); \
-  }} while(0)
+
+#ifdef HAVE_COCOA
+  extern void jwxyz_abort (const char *fmt, ...) __dead2;
+# define Assert(C,S) do { if (!(C)) { jwxyz_abort ("%s",S); }} while(0)
+#else
+# define Assert(C,S) do { \
+    if (!(C)) { \
+      fprintf (stderr, "jwzgles: %s\n", S); \
+      abort(); \
+    }} while(0)
+#endif
 
 
 typedef struct { GLfloat x, y, z; }    XYZ;
 
 
 typedef struct { GLfloat x, y, z; }    XYZ;
@@ -228,7 +237,7 @@ typedef void (*list_fn_cb) (void);
 typedef union { const void *v; GLfloat f; GLuint i; } void_int;
 
 typedef struct {               /* saved args for glDrawArrays */
 typedef union { const void *v; GLfloat f; GLuint i; } void_int;
 
 typedef struct {               /* saved args for glDrawArrays */
-  int size, type, stride, bytes;
+  int binding, size, type, stride, bytes;
   void *data;
 } draw_array;
 
   void *data;
 } draw_array;
 
@@ -261,14 +270,18 @@ typedef struct {          /* A single element of a display list */
 } list_fn;
 
 
 } list_fn;
 
 
-typedef struct {       /* saved activity within glNewList */
+typedef struct {       /* a display list: saved activity within glNewList */
   int id;
   int size, count;
   list_fn *fns;
   int id;
   int size, count;
   list_fn *fns;
+
+  /* Named buffer that should be freed when this display list is deleted. */
+  GLuint buffer;
+
 } list;
 
 
 } list;
 
 
-typedef struct {       /* A display list */
+typedef struct {       /* All display lists */
   list *lists;
   int count, size;
 } list_set;
   list *lists;
   int count, size;
 } list_set;
@@ -349,19 +362,16 @@ mode_desc (int mode)      /* for debugging messages */
   switch (mode) {
 # define SS(X) case GL_##X: return STRINGIFY(X);
   SS(ALPHA)
   switch (mode) {
 # define SS(X) case GL_##X: return STRINGIFY(X);
   SS(ALPHA)
+  SS(ALPHA_TEST)
   SS(AMBIENT)
   SS(AMBIENT_AND_DIFFUSE)
   SS(AMBIENT)
   SS(AMBIENT_AND_DIFFUSE)
+  SS(ARRAY_BUFFER)
   SS(AUTO_NORMAL)
   SS(BACK)
   SS(BLEND)
   SS(BLEND_DST)
   SS(BLEND_SRC)
   SS(BLEND_SRC_ALPHA)
   SS(AUTO_NORMAL)
   SS(BACK)
   SS(BLEND)
   SS(BLEND_DST)
   SS(BLEND_SRC)
   SS(BLEND_SRC_ALPHA)
-  SS(RGBA_MODE)
-  SS(DOUBLEBUFFER)
-  SS(GREATER)
-  SS(ALPHA_TEST)
-  SS(LESS)
   SS(BYTE)
   SS(C3F_V3F)
   SS(C4F_N3F_V3F)
   SS(BYTE)
   SS(C3F_V3F)
   SS(C4F_N3F_V3F)
@@ -370,6 +380,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(CCW)
   SS(CLAMP)
   SS(COLOR_ARRAY)
   SS(CCW)
   SS(CLAMP)
   SS(COLOR_ARRAY)
+  SS(COLOR_ARRAY_BUFFER_BINDING);
   SS(COLOR_MATERIAL)
   SS(COLOR_MATERIAL_FACE)
   SS(COLOR_MATERIAL_PARAMETER)
   SS(COLOR_MATERIAL)
   SS(COLOR_MATERIAL_FACE)
   SS(COLOR_MATERIAL_PARAMETER)
@@ -380,8 +391,11 @@ mode_desc (int mode)       /* for debugging messages */
   SS(DEPTH_BUFFER_BIT)
   SS(DEPTH_TEST)
   SS(DIFFUSE)
   SS(DEPTH_BUFFER_BIT)
   SS(DEPTH_TEST)
   SS(DIFFUSE)
+  SS(DOUBLEBUFFER)
   SS(DST_ALPHA)
   SS(DST_COLOR)
   SS(DST_ALPHA)
   SS(DST_COLOR)
+  SS(DYNAMIC_DRAW)
+  SS(ELEMENT_ARRAY_BUFFER)
   SS(EYE_LINEAR)
   SS(EYE_PLANE)
   SS(FEEDBACK)
   SS(EYE_LINEAR)
   SS(EYE_PLANE)
   SS(FEEDBACK)
@@ -391,10 +405,12 @@ mode_desc (int mode)      /* for debugging messages */
   SS(FOG)
   SS(FRONT)
   SS(FRONT_AND_BACK)
   SS(FOG)
   SS(FRONT)
   SS(FRONT_AND_BACK)
+  SS(GREATER)
   SS(INTENSITY)
   SS(INVALID_ENUM)
   SS(INVALID_OPERATION)
   SS(INVALID_VALUE)
   SS(INTENSITY)
   SS(INVALID_ENUM)
   SS(INVALID_OPERATION)
   SS(INVALID_VALUE)
+  SS(LESS)
   SS(LIGHT0)
   SS(LIGHT1)
   SS(LIGHT2)
   SS(LIGHT0)
   SS(LIGHT1)
   SS(LIGHT2)
@@ -422,6 +438,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(NEAREST_MIPMAP_NEAREST)
   SS(NORMALIZE)
   SS(NORMAL_ARRAY)
   SS(NEAREST_MIPMAP_NEAREST)
   SS(NORMALIZE)
   SS(NORMAL_ARRAY)
+  SS(NORMAL_ARRAY_BUFFER_BINDING);
   SS(OBJECT_LINEAR)
   SS(OBJECT_PLANE)
   SS(ONE_MINUS_DST_ALPHA)
   SS(OBJECT_LINEAR)
   SS(OBJECT_PLANE)
   SS(ONE_MINUS_DST_ALPHA)
@@ -445,6 +462,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(REPEAT)
   SS(RGB)
   SS(RGBA)
   SS(REPEAT)
   SS(RGB)
   SS(RGBA)
+  SS(RGBA_MODE)
   SS(S)
   SS(SELECT)
   SS(SEPARATE_SPECULAR_COLOR)
   SS(S)
   SS(SELECT)
   SS(SEPARATE_SPECULAR_COLOR)
@@ -460,6 +478,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(SRC_COLOR)
   SS(STACK_OVERFLOW)
   SS(STACK_UNDERFLOW)
   SS(SRC_COLOR)
   SS(STACK_OVERFLOW)
   SS(STACK_UNDERFLOW)
+  SS(STATIC_DRAW)
   SS(STENCIL_BUFFER_BIT)
   SS(T)
   SS(T2F_C3F_V3F)
   SS(STENCIL_BUFFER_BIT)
   SS(T)
   SS(T2F_C3F_V3F)
@@ -479,6 +498,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(TEXTURE_BORDER_COLOR)
   SS(TEXTURE_COMPONENTS)
   SS(TEXTURE_COORD_ARRAY)
   SS(TEXTURE_BORDER_COLOR)
   SS(TEXTURE_COMPONENTS)
   SS(TEXTURE_COORD_ARRAY)
+  SS(TEXTURE_COORD_ARRAY_BUFFER_BINDING);
   SS(TEXTURE_ENV)
   SS(TEXTURE_ENV_COLOR)
   SS(TEXTURE_ENV_MODE)
   SS(TEXTURE_ENV)
   SS(TEXTURE_ENV_COLOR)
   SS(TEXTURE_ENV_MODE)
@@ -507,6 +527,7 @@ mode_desc (int mode)        /* for debugging messages */
   SS(V2F)
   SS(V3F)
   SS(VERTEX_ARRAY)
   SS(V2F)
   SS(V3F)
   SS(VERTEX_ARRAY)
+  SS(VERTEX_ARRAY_BUFFER_BINDING);
 /*SS(COLOR_BUFFER_BIT) -- same value as GL_LIGHT0 */
 # undef SS
   case (GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT):
 /*SS(COLOR_BUFFER_BIT) -- same value as GL_LIGHT0 */
 # undef SS
   case (GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT):
@@ -539,6 +560,20 @@ check_gl_error (const char *s)
 #endif /* DEBUG */
 
 
 #endif /* DEBUG */
 
 
+static void
+make_room (const char *name, void **array, int span, int *count, int *size)
+{
+  if (*count + 1 >= *size)
+    {
+      int new_size = (*count + 20) * 1.2;   /* mildly exponential */
+      *array = realloc (*array, new_size * span);
+      Assert (*array, "out of memory");
+      /* LOG3("%s: grew %d -> %d", name, *size, new_size); */
+      *size = new_size;
+    }
+}
+
+
 int
 jwzgles_glGenLists (int n)
 {
 int
 jwzgles_glGenLists (int n)
 {
@@ -557,19 +592,10 @@ jwzgles_glGenLists (int n)
     {
       list *L;
       int id = 0;
     {
       list *L;
       int id = 0;
-
-      /* Adding a new list at the end.  Make room for it.
-       */
-      if (state->lists.count >= state->lists.size - 1)
-        {
-          int new_size = 20 + (state->lists.size * 1.2);
-          state->lists.lists = (list *) 
-            realloc (state->lists.lists, 
-                     new_size * sizeof (*state->lists.lists));
-          Assert (state->lists.lists, "out of memory");
-          state->lists.size = new_size;
-          LOG1("glGenLists grew -> %d", new_size);
-        }
+      make_room ("glGenLists", 
+                 (void **) &state->lists.lists,
+                 sizeof (*state->lists.lists),
+                 &state->lists.count, &state->lists.size);
       state->lists.count++;
       id = state->lists.count;
       L = &state->lists.lists[id-1];
       state->lists.count++;
       id = state->lists.count;
       L = &state->lists.lists[id-1];
@@ -608,6 +634,11 @@ jwzgles_glNewList (int id, int mode)
 }
 
 
 }
 
 
+static void save_arrays (list_fn *, int);
+static void restore_arrays (list_fn *, int);
+static void copy_array_data (draw_array *, int, const char *);
+static void optimize_arrays (void);
+
 void
 jwzgles_glEndList (void)
 {
 void
 jwzgles_glEndList (void)
 {
@@ -615,14 +646,11 @@ jwzgles_glEndList (void)
   Assert (state->set.count == 0, "missing glEnd");
   Assert (!state->compiling_verts, "glEndList not allowed inside glBegin");
   LOG1("glEndList %d", state->compiling_list);
   Assert (state->set.count == 0, "missing glEnd");
   Assert (!state->compiling_verts, "glEndList not allowed inside glBegin");
   LOG1("glEndList %d", state->compiling_list);
+  optimize_arrays();
   state->compiling_list = 0;
 }
 
 
   state->compiling_list = 0;
 }
 
 
-static void save_arrays (list_fn *, int);
-static void restore_arrays (list_fn *, int);
-static void copy_array_data (draw_array *, int, const char *);
-
 static void
 list_push (const char * const name, 
            list_fn_cb fn, fn_proto proto, void_int *av)
 static void
 list_push (const char * const name, 
            list_fn_cb fn, fn_proto proto, void_int *av)
@@ -637,16 +665,10 @@ list_push (const char * const name,
   L = &state->lists.lists[state->compiling_list-1];
   Assert (L, "glNewList: no list");
 
   L = &state->lists.lists[state->compiling_list-1];
   Assert (L, "glNewList: no list");
 
-  if (L->count >= L->size - 1)
-    {
-      int new_size = 20 + (L->size * 1.2);
-      L->fns = (list_fn *) realloc (L->fns, new_size * sizeof (*L->fns));
-      Assert (L->fns, "glNewList: no functions");
-      L->size = new_size;
-    }
-
+  make_room ("glNewLists", 
+             (void **) &L->fns, sizeof (*L->fns),
+             &L->count, &L->size);
   memset (&L->fns[L->count], 0, sizeof (*L->fns));
   memset (&L->fns[L->count], 0, sizeof (*L->fns));
-
   F = L->fns + L->count;
 
   F->name = name;
   F = L->fns + L->count;
 
   F->name = name;
@@ -678,7 +700,8 @@ list_push (const char * const name,
     LOG2 ("  push %-12s %7.3f", name, av[0].f);
     break;
   case PROTO_II:
     LOG2 ("  push %-12s %7.3f", name, av[0].f);
     break;
   case PROTO_II:
-    if (fn == (list_fn_cb) &jwzgles_glBindTexture)
+    if (fn == (list_fn_cb) &jwzgles_glBindTexture ||
+        fn == (list_fn_cb) &jwzgles_glBindBuffer)
       LOG3 ("  push %-12s %s %d", name, mode_desc (av[0].i), av[1].i);
     else
       LOG3 ("  push %-12s %d %d", name, av[0].i, av[1].i);
       LOG3 ("  push %-12s %s %d", name, mode_desc (av[0].i), av[1].i);
     else
       LOG3 ("  push %-12s %d %d", name, av[0].i, av[1].i);
@@ -834,14 +857,17 @@ jwzgles_glDeleteLists (int id0, int range)
                 {
                   int j;
                   for (j = 0; j < 4; j++)
                 {
                   int j;
                   for (j = 0; j < 4; j++)
-                    {
-                      if (lf->arrays[j].data)
-                        free (lf->arrays[j].data);
-                    }
+                    /* If there's a binding, 'data' is an index, not a ptr. */
+                    if (!lf->arrays[j].binding &&
+                        lf->arrays[j].data)
+                      free (lf->arrays[j].data);
+                  free (lf->arrays);
                 }
             }
           if (L->fns) 
             free (L->fns);
                 }
             }
           if (L->fns) 
             free (L->fns);
+          if (L->buffer)
+            glDeleteBuffers (1, &L->buffer);
 
           memset (L, 0, sizeof (*L));
           L->id = id;
 
           memset (L, 0, sizeof (*L));
           L->id = id;
@@ -878,14 +904,16 @@ jwzgles_glNormal3fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2]);
 
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2]);
 
-      state->set.cnorm.x = v[0];
-      state->set.cnorm.y = v[1];
-      state->set.cnorm.z = v[2];
-      state->set.ncount++;
-      if (state->set.count > 0 && state->set.ncount == 1)  /* not first! */
-        state->set.ncount++;
-
-      if (! state->compiling_verts)    /* outside glBegin */
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.cnorm.x = v[0];
+          state->set.cnorm.y = v[1];
+          state->set.cnorm.z = v[2];
+          state->set.ncount++;
+          if (state->set.count > 0 && state->set.ncount == 1)  /* not first! */
+            state->set.ncount++;
+        }
+      else                             /* outside glBegin */
         {
           glNormal3f (v[0], v[1], v[2]);
           CHECK("glNormal3f");
         {
           glNormal3f (v[0], v[1], v[2]);
           CHECK("glNormal3f");
@@ -926,15 +954,18 @@ jwzgles_glTexCoord4fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
-      state->set.ctex.s = v[0];
-      state->set.ctex.t = v[1];
-      state->set.ctex.r = v[2];
-      state->set.ctex.q = v[3];
-      state->set.tcount++;
-      if (state->set.count > 0 && state->set.tcount == 1)  /* not first! */
-        state->set.tcount++;
-
       Assert (state->compiling_verts, "glTexCoord4fv outside glBegin");
       Assert (state->compiling_verts, "glTexCoord4fv outside glBegin");
+
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.ctex.s = v[0];
+          state->set.ctex.t = v[1];
+          state->set.ctex.r = v[2];
+          state->set.ctex.q = v[3];
+          state->set.tcount++;
+          if (state->set.count > 0 && state->set.tcount == 1)  /* not first! */
+            state->set.tcount++;
+        }
     }
 }
 
     }
 }
 
@@ -1018,15 +1049,17 @@ jwzgles_glColor4fv (const GLfloat *v)
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
               (state->compiling_verts ? "  rec  " : ""),
               v[0], v[1], v[2], v[3]);
 
-      state->set.ccolor.r = v[0];
-      state->set.ccolor.g = v[1];
-      state->set.ccolor.b = v[2];
-      state->set.ccolor.a = v[3];
-      state->set.ccount++;
-      if (state->set.count > 0 && state->set.ccount == 1)  /* not first! */
-        state->set.ccount++;
-
-      if (! state->compiling_verts)    /* outside glBegin */
+      if (state->compiling_verts)      /* inside glBegin */
+        {
+          state->set.ccolor.r = v[0];
+          state->set.ccolor.g = v[1];
+          state->set.ccolor.b = v[2];
+          state->set.ccolor.a = v[3];
+          state->set.ccount++;
+          if (state->set.count > 0 && state->set.ccount == 1)  /* not first! */
+            state->set.ccount++;
+        }
+      else                             /* outside glBegin */
         {
           glColor4f (v[0], v[1], v[2], v[3]);
           CHECK("glColor4");
         {
           glColor4f (v[0], v[1], v[2], v[3]);
           CHECK("glColor4");
@@ -1556,6 +1589,8 @@ jwzgles_glEnd (void)
   Assert (state->compiling_verts == 1, "missing glBegin");
   state->compiling_verts--;
 
   Assert (state->compiling_verts == 1, "missing glBegin");
   state->compiling_verts--;
 
+  Assert (!state->replaying_list, "how did glEnd get into a display list?");
+
   if (!state->replaying_list)
     {
       LOG5 ("%s  [V = %d, N = %d, T = %d, C = %d]",
   if (!state->replaying_list)
     {
       LOG5 ("%s  [V = %d, N = %d, T = %d, C = %d]",
@@ -1601,6 +1636,14 @@ jwzgles_glEnd (void)
   was_color = jwzgles_glIsEnabled (GL_COLOR_ARRAY);
   was_mat   = jwzgles_glIsEnabled (GL_COLOR_MATERIAL);
 
   was_color = jwzgles_glIsEnabled (GL_COLOR_ARRAY);
   was_mat   = jwzgles_glIsEnabled (GL_COLOR_MATERIAL);
 
+  /* If we're executing glEnd in immediate mode, not from inside a display
+     list (which is the only way it happens, because glEnd doesn't go into
+     display lists), make sure we're not stomping on a saved buffer list:
+     in immediate mode, vertexes are client-side only.
+   */
+  if (! state->compiling_list)
+    jwzgles_glBindBuffer (GL_ARRAY_BUFFER, 0);
+
   if (s->ncount > 1)
     {
       is_norm = 1;
   if (s->ncount > 1)
     {
       is_norm = 1;
@@ -1654,7 +1697,9 @@ jwzgles_glEnd (void)
   else
     is_mat = 0;
 
   else
     is_mat = 0;
 
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* This comes later. */
   jwzgles_glDrawArrays (s->mode, 0, s->count);
   jwzgles_glDrawArrays (s->mode, 0, s->count);
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
 
 # define RESET(VAR,FN,ARG) do { \
          if (is_##VAR != was_##VAR) { \
 
 # define RESET(VAR,FN,ARG) do { \
          if (is_##VAR != was_##VAR) { \
@@ -1675,6 +1720,116 @@ jwzgles_glEnd (void)
 }
 
 
 }
 
 
+/* The display list is full of calls to glDrawArrays(), plus saved arrays
+   of the values we need to restore before calling it.  "Restore" means
+   "ship them off to the GPU before each call".
+
+   So instead, this function walks through the display list and
+   combines all of those vertex, normal, texture and color values into
+   a single VBO array; ships those values off to the GPU *once* at the
+   time of glEndList; and when running the list with glCallList, the
+   values are already on the GPU and don't need to be sent over again.
+
+   The VBO persists in the GPU until the display list is deleted.
+ */
+static void
+optimize_arrays (void)
+{
+  list *L = &state->lists.lists[state->compiling_list-1];
+  int i, j;
+  GLfloat *combo = 0;
+  int combo_count = 0;
+  int combo_size = 0;
+  GLuint buf_name = 0;
+
+  Assert (state->compiling_list, "not compiling a list");
+  Assert (L, "no list");
+  Assert (!L->buffer, "list already has a buffer");
+
+  glGenBuffers (1, &buf_name);
+  CHECK("glGenBuffers");
+  if (! buf_name) return;
+
+  L->buffer = buf_name;
+
+  /* Go through the list and dump the contents of the various saved arrays
+     into one large array.
+   */
+  for (i = 0; i < L->count; i++)
+    {
+      list_fn *F = &L->fns[i];
+      int count;
+      if (! F->arrays)
+        continue;
+      count = F->argv[2].i;  /* 3rd arg to glDrawArrays */
+
+      for (j = 0; j < 4; j++)
+        {
+          draw_array *A = &F->arrays[j];
+          int ocount = combo_count;
+
+          /* If some caller is using arrays that don't have floats in them,
+             we just leave them as-is and ship them over at each call.
+             Doubt this ever really happens.
+           */
+          if (A->type != GL_FLOAT)
+            continue;
+
+          if (! A->data)       /* No array. */
+            continue;
+
+          Assert (A->bytes > 0, "no bytes in draw_array");
+          Assert (((unsigned long) A->data > 0xFFFF),
+                  "buffer data not a pointer");
+
+          combo_count += A->bytes / sizeof(*combo);
+          make_room ("optimize_arrays",
+                     (void **) &combo, sizeof(*combo),
+                     &combo_count, &combo_size);
+          memcpy (combo + ocount, A->data, A->bytes);
+          A->binding = buf_name;
+          free (A->data);
+          /* 'data' is now the byte offset into the VBO. */
+          A->data = (void *) (ocount * sizeof(*combo));
+          /* LOG3("    loaded %lu floats to pos %d of buffer %d",
+               A->bytes / sizeof(*combo), ocount, buf_name); */
+        }
+    }
+
+  if (combo_count == 0)                /* Nothing to do! */
+    {
+      if (combo) free (combo);
+      glDeleteBuffers (1, &buf_name);
+      L->buffer = 0;
+      return;
+    }
+
+  glBindBuffer (GL_ARRAY_BUFFER, buf_name);
+  glBufferData (GL_ARRAY_BUFFER, 
+                combo_count * sizeof (*combo),
+                combo,
+                GL_STATIC_DRAW);
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
+
+  LOG3("  loaded %d floats of list %d into VBO %d",
+       combo_count, state->compiling_list, buf_name);
+
+# ifdef DEBUG
+#  if 0
+  for (i = 0; i < combo_count; i++)
+    {
+      if (i % 4 == 0)
+        fprintf (stderr, "\njwzgles:    %4d: ", i);
+      fprintf (stderr, " %7.3f", combo[i]);
+    }
+  fprintf (stderr, "\n");
+#  endif
+# endif /* DEBUG */
+
+  if (combo) free (combo);
+}
+
+
 void
 jwzgles_glCallList (int id)
 {
 void
 jwzgles_glCallList (int id)
 {
@@ -1735,7 +1890,8 @@ jwzgles_glCallList (int id)
             break;
 
           case PROTO_II:
             break;
 
           case PROTO_II:
-            if (fn == (list_fn_cb) &jwzgles_glBindTexture)
+            if (fn == (list_fn_cb) &jwzgles_glBindTexture ||
+                fn == (list_fn_cb) &jwzgles_glBindBuffer)
               LOG3 ("  call %-12s %s %d", F->name, 
                     mode_desc (av[0].i), av[1].i);
             else
               LOG3 ("  call %-12s %s %d", F->name, 
                     mode_desc (av[0].i), av[1].i);
             else
@@ -1902,6 +2058,7 @@ save_arrays (list_fn *F, int count)
 
 /*  if (state->set.count > 0) */
     {
 
 /*  if (state->set.count > 0) */
     {
+      glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A[i].stride);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A[i].stride);
@@ -1914,6 +2071,7 @@ save_arrays (list_fn *F, int count)
   if (state->set.ncount > 1)
     {
       A[i].size = 3;
   if (state->set.ncount > 1)
     {
       A[i].size = 3;
+      glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A[i].stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A[i].data);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A[i].stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A[i].data);
@@ -1924,6 +2082,7 @@ save_arrays (list_fn *F, int count)
   i++;
   if (state->set.tcount > 1)
     {
   i++;
   if (state->set.tcount > 1)
     {
+      glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A[i].stride);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A[i].stride);
@@ -1935,6 +2094,7 @@ save_arrays (list_fn *F, int count)
   i++;
   if (state->set.ccount > 1)
     {
   i++;
   if (state->set.ccount > 1)
     {
+      glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A[i].binding);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A[i].stride);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A[i].size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A[i].type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A[i].stride);
@@ -1958,20 +2118,64 @@ dump_array_data (draw_array *A, int count,
 {
   int bytes = count * A->stride;
 
 {
   int bytes = count * A->stride;
 
-  Assert (bytes == A->bytes, "array data corrupted");
+  if (A->binding)
+    {
+      fprintf (stderr, 
+               "jwzgles:     %s %s %d %s %2d, %4d = %5d   bind %d @ %d\n", 
+               action, name,
+               A->size, mode_desc(A->type), A->stride, 
+               count, bytes, A->binding, (int) A->data);
+    }
+  else
+    {
+      Assert (bytes == A->bytes, "array data corrupted");
+
+      fprintf (stderr, "jwzgles:     %s %s %d %s %2d, %4d = %5d @ %lX", 
+               action, name,
+               A->size, mode_desc(A->type), A->stride, 
+               count, bytes, (unsigned long) A->data);
+      if (old)
+        fprintf (stderr, " / %lX", (unsigned long) old);
+      fprintf (stderr, "\n");
+    }
 
 
-  fprintf (stderr, "jwzgles:     %s %s %d %s %2d, %4d = %5d @ %lX", 
-           action, name,
-           A->size, mode_desc(A->type), A->stride, 
-           count, bytes, (unsigned long) A->data);
-  if (old)
-    fprintf (stderr, " / %lX", (unsigned long) old);
-  fprintf (stderr, "\n");
+  if (A->binding)
+    {
+      Assert (((unsigned long) A->data < 0xFFFF),
+              "buffer binding should be a numeric index,"
+              " but looks like a pointer");
 
 # if 0
 
 # if 0
-  {
+      /* glGetBufferSubData doesn't actually exist in OpenGLES, but this
+         was helpful for debugging on real OpenGL... */
+      GLfloat *d;
+      int i;
+      fprintf (stderr, "jwzgles: read back:\n");
+      d = (GLfloat *) malloc (A->bytes);
+      glGetBufferSubData (GL_ARRAY_BUFFER, (int) A->data,
+                          count * A->stride, (void *) d);
+      CHECK("glGetBufferSubData");
+      for (i = 0; i < count * A->size; i++)
+        {
+          if (i % 4 == 0)
+            fprintf (stderr, "\njwzgles:    %4d: ", 
+                     i + (int) A->data / sizeof(GLfloat));
+          fprintf (stderr, " %7.3f", d[i]);
+        }
+      fprintf (stderr, "\n");
+      free (d);
+# endif
+    }
+# if 0
+  else
+    {
       unsigned char *b = (unsigned char *) A->data;
       int i;
       unsigned char *b = (unsigned char *) A->data;
       int i;
+      if ((unsigned long) A->data < 0xFFFF)
+        {
+          Assert (0, "buffer data not a pointer");
+          return;
+        }
       for (i = 0; i < count; i++)
         {
           int j;
       for (i = 0; i < count; i++)
         {
           int j;
@@ -1991,10 +2195,11 @@ dump_array_data (draw_array *A, int count,
 static void
 dump_direct_array_data (int count)
 {
 static void
 dump_direct_array_data (int count)
 {
-  draw_array A;
+  draw_array A = { 0, };
 
   if (jwzgles_glIsEnabled (GL_VERTEX_ARRAY))
     {
 
   if (jwzgles_glIsEnabled (GL_VERTEX_ARRAY))
     {
+      glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A.stride);
       glGetIntegerv (GL_VERTEX_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_VERTEX_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_VERTEX_ARRAY_STRIDE,  &A.stride);
@@ -2005,6 +2210,7 @@ dump_direct_array_data (int count)
   if (jwzgles_glIsEnabled (GL_NORMAL_ARRAY))
     {
       A.size = 0;
   if (jwzgles_glIsEnabled (GL_NORMAL_ARRAY))
     {
       A.size = 0;
+      glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A.stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A.data);
       glGetIntegerv (GL_NORMAL_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_NORMAL_ARRAY_STRIDE,  &A.stride);
       glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A.data);
@@ -2013,6 +2219,7 @@ dump_direct_array_data (int count)
     }
   if (jwzgles_glIsEnabled (GL_TEXTURE_COORD_ARRAY))
     {
     }
   if (jwzgles_glIsEnabled (GL_TEXTURE_COORD_ARRAY))
     {
+      glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A.stride);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE,  &A.stride);
@@ -2022,6 +2229,7 @@ dump_direct_array_data (int count)
     }
   if (jwzgles_glIsEnabled (GL_COLOR_ARRAY))
     {
     }
   if (jwzgles_glIsEnabled (GL_COLOR_ARRAY))
     {
+      glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A.binding);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A.stride);
       glGetIntegerv (GL_COLOR_ARRAY_SIZE,    &A.size);
       glGetIntegerv (GL_COLOR_ARRAY_TYPE,    &A.type);
       glGetIntegerv (GL_COLOR_ARRAY_STRIDE,  &A.stride);
@@ -2051,7 +2259,11 @@ copy_array_data (draw_array *A, int count, const char *name)
   const unsigned char *IB;
   unsigned char *OB;
 
   const unsigned char *IB;
   unsigned char *OB;
 
-  if (! A->data) return;
+  if (((unsigned long) A->data) < 0xFFFF)
+    {
+      Assert (0, "buffer data not a pointer");
+      return;
+    }
 
   Assert (A->size >= 2 && A->size <= 4, "bogus array size");
 
 
   Assert (A->size >= 2 && A->size <= 4, "bogus array size");
 
@@ -2114,8 +2326,17 @@ restore_arrays (list_fn *F, int count)
 
   for (i = 0; i < 4; i++)
     {
 
   for (i = 0; i < 4; i++)
     {
-      const char *name;
-      if (! A[i].data) continue;
+      const char *name = 0;
+
+      if (!A[i].size)
+        continue;
+
+      Assert ((A[i].binding || A[i].data),
+              "array has neither buffer binding nor data");
+
+      glBindBuffer (GL_ARRAY_BUFFER, A[i].binding);
+      CHECK("glBindBuffer");
+
       switch (i) {
       case 0: glVertexPointer  (A[i].size, A[i].type, A[i].stride, A[i].data);
         name = "vertex ";
       switch (i) {
       case 0: glVertexPointer  (A[i].size, A[i].type, A[i].stride, A[i].data);
         name = "vertex ";
@@ -2140,6 +2361,8 @@ restore_arrays (list_fn *F, int count)
       dump_array_data (&A[i], count, "restored", name, 0);
 # endif
     }
       dump_array_data (&A[i], count, "restored", name, 0);
 # endif
     }
+
+  glBindBuffer (GL_ARRAY_BUFFER, 0);    /* Keep out of others' hands */
 }
 
 
 }
 
 
@@ -2396,16 +2619,22 @@ jwzgles_glEnableClientState (GLuint cap)
     }
 
   switch (cap) {
     }
 
   switch (cap) {
+  case GL_VERTEX_ARRAY:
+    state->enabled |= ISENABLED_VERT_ARRAY;
+    break;
   case GL_NORMAL_ARRAY:
   case GL_NORMAL_ARRAY:
-    state->set.ncount += 2;
+    if (! state->compiling_verts)
+      state->set.ncount += 2;
     state->enabled |= ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
     state->enabled |= ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
-    state->set.tcount += 2;
+    if (! state->compiling_verts)
+      state->set.tcount += 2;
     state->enabled |= ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
     state->enabled |= ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
-    state->set.ccount += 2;
+    if (! state->compiling_verts)
+      state->set.ccount += 2;
     state->enabled |= ISENABLED_COLOR_ARRAY;
     break;
   default: break;
     state->enabled |= ISENABLED_COLOR_ARRAY;
     break;
   default: break;
@@ -2433,16 +2662,22 @@ jwzgles_glDisableClientState (GLuint cap)
     }
 
   switch (cap) {
     }
 
   switch (cap) {
+  case GL_VERTEX_ARRAY:
+    state->enabled &= ~ISENABLED_VERT_ARRAY;
+    break;
   case GL_NORMAL_ARRAY:
   case GL_NORMAL_ARRAY:
-    state->set.ncount = 0;
+    if (! state->compiling_verts)
+      state->set.ncount = 0;
     state->enabled &= ~ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
     state->enabled &= ~ISENABLED_NORM_ARRAY;
     break;
   case GL_TEXTURE_COORD_ARRAY:
-    state->set.tcount = 0;
+    if (! state->compiling_verts)
+      state->set.tcount = 0;
     state->enabled &= ~ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
     state->enabled &= ~ISENABLED_TEX_ARRAY;
     break;
   case GL_COLOR_ARRAY:
-    state->set.ccount = 0;
+    if (! state->compiling_verts)
+      state->set.ccount = 0;
     state->enabled &= ~ISENABLED_COLOR_ARRAY;
     break;
   default:
     state->enabled &= ~ISENABLED_COLOR_ARRAY;
     break;
   default:
@@ -3046,8 +3281,10 @@ jwzgles_gluErrorString (GLenum error)
 }
 
 
 }
 
 
-/* These can be included inside glNewList, but they actually execute
-   immediately anyway. 
+/* These four *Pointer calls (plus glBindBuffer and glBufferData) can
+   be included inside glNewList, but they actually execute immediately
+   anyway, because their data is recorded in the list by the
+   subsequently-recorded call to glDrawArrays.  This is a little weird.
  */
 void
 jwzgles_glVertexPointer (GLuint size, GLuint type, GLuint stride, 
  */
 void
 jwzgles_glVertexPointer (GLuint size, GLuint type, GLuint stride, 
@@ -3092,6 +3329,26 @@ jwzgles_glTexCoordPointer (GLuint size, GLuint type, GLuint stride,
   CHECK("glTexCoordPointer");
 }
 
   CHECK("glTexCoordPointer");
 }
 
+void
+jwzgles_glBindBuffer (GLuint target, GLuint buffer)
+{
+  if (! state->replaying_list)
+    LOG3 ("direct %-12s %s %d", "glBindBuffer", mode_desc(target), buffer);
+  glBindBuffer (target, buffer);  /* the real one */
+  CHECK("glBindBuffer");
+}
+
+void
+jwzgles_glBufferData (GLenum target, GLsizeiptr size, const void *data,
+                      GLenum usage)
+{
+  if (! state->replaying_list)
+    LOG5 ("direct %-12s %s %ld 0x%lX %s", "glBufferData",
+          mode_desc(target), size, (unsigned long) data, mode_desc(usage));
+  glBufferData (target, size, data, usage);  /* the real one */
+  CHECK("glBufferData");
+}
+
 
 void
 jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param)
 
 void
 jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param)
@@ -3108,6 +3365,11 @@ jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param)
   /* We implement 1D textures as 2D textures. */
   if (target == GL_TEXTURE_1D) target = GL_TEXTURE_2D;
 
   /* We implement 1D textures as 2D textures. */
   if (target == GL_TEXTURE_1D) target = GL_TEXTURE_2D;
 
+  /* Apparently this is another invalid enum. Just ignore it. */
+  if ((pname == GL_TEXTURE_WRAP_S || pname == GL_TEXTURE_WRAP_T) &&
+      param == GL_CLAMP)
+    return;
+
   if (state->compiling_list)
     {
       void_int vv[3];
   if (state->compiling_list)
     {
       void_int vv[3];
index 3260e74f88066a9989e11f49d9af29a66f277a1d..faa26efd9a69749b2885ec05f901ac3345576167 100644 (file)
@@ -306,6 +306,8 @@ extern void jwzgles_glVertexPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *);
 extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *);
 extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *);
 extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *);
+extern void jwzgles_glBindBuffer (GLuint, GLuint);
+extern void jwzgles_glBufferData (GLenum, GLsizeiptr, const void *, GLenum);
 extern const char *jwzgles_gluErrorString (GLenum error);
 
 #endif /* __JWZGLES_I_H__ */
 extern const char *jwzgles_gluErrorString (GLenum error);
 
 #endif /* __JWZGLES_I_H__ */
index f0526cc5fed3e5a170abdbe0a936a21a9da540b0..ab4bf83e1109ca7d472c34538b13459a8202f401 100644 (file)
@@ -1422,7 +1422,10 @@ draw(ModeInfo *mi)
 
   glPushMatrix();
 
 
   glPushMatrix();
 
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (lc->trackball);
   gltrackball_rotate (lc->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
 
   /* Make into the screen be +Y right be +X, and up be +Z. */
   glRotatef(-90.0, 1.0, 0.0, 0.0);
 
   /* Make into the screen be +Y right be +X, and up be +Z. */
   glRotatef(-90.0, 1.0, 0.0, 0.0);
index c620dfd0cc75268b38d70814987828c7fd78d37b..2319af764055d0a0036dae2ff22dde3324423a76 100644 (file)
@@ -486,7 +486,10 @@ draw_sponge (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 6,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (sp->trackball);
     gltrackball_rotate (sp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index d6fbdc1c8234a643d5655213add3f86b05792e88..d8b0915de1e563fcf08e992144825b7b1c748433 100644 (file)
@@ -246,7 +246,7 @@ typedef struct
 #define PMM {  sqrt_3, -sqrt_3, -sqrt_3 }       /* +X, -Y, -Z */
 
 /* Structure describing a tetrahedron */
 #define PMM {  sqrt_3, -sqrt_3, -sqrt_3 }       /* +X, -Y, -Z */
 
 /* Structure describing a tetrahedron */
-Vector3D tetrahedron[4][3] = {
+static Vector3D tetrahedron[4][3] = {
     {PPP, MMP, MPM},
     {PMM, MPM, MMP},
     {PPP, MPM, PMM},
     {PPP, MMP, MPM},
     {PMM, MPM, MMP},
     {PPP, MPM, PMM},
@@ -257,7 +257,7 @@ Vector3D tetrahedron[4][3] = {
  * Static blob data
  *****************************************************************************/
 
  * Static blob data
  *****************************************************************************/
 
-const Vector3D zero_vector = { 0.0, 0.0, 0.0 };
+static const Vector3D zero_vector = { 0.0, 0.0, 0.0 };
 
 /* Use 2 textures to allow a gradual fade between images */
 #define NUM_TEXTURES 2
 
 /* Use 2 textures to allow a gradual fade between images */
 #define NUM_TEXTURES 2
@@ -1412,12 +1412,12 @@ draw_blob (mirrorblobstruct *gp)
 
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
 
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* Move down the z-axis. */
   glTranslatef (0.0, 0.0, -4.0);
 
   gltrackball_rotate (gp->trackball);
 
   /* Move down the z-axis. */
   glTranslatef (0.0, 0.0, -4.0);
 
   gltrackball_rotate (gp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* glColor4ub (255, 0, 0, 128); */
   glBegin(GL_TRIANGLES);
 
   /* glColor4ub (255, 0, 0, 128); */
   glBegin(GL_TRIANGLES);
index a9dddf50c026f86de8487cddc9a4a0a88745cc8c..e37294a1580dbb96eebcc990a668fe9d7816d2d3 100644 (file)
@@ -761,7 +761,10 @@ draw_moebius (ModeInfo * mi)
 
        glTranslatef(0.0, 0.0, -10.0);
 
 
        glTranslatef(0.0, 0.0, -10.0);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (mp->trackball);
     gltrackball_rotate (mp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
        if (!MI_IS_ICONIC(mi)) {
                glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window);
 
        if (!MI_IS_ICONIC(mi)) {
                glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window);
index bf38150cfe5e33d58073f4b3b44955cd71bedfeb..03381b70d6ae9b81849e34324230f0afadc2f77c 100644 (file)
@@ -339,7 +339,10 @@ draw_mgears (ModeInfo *mi)
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
                   (y - 0.5) * 4,
                   (z - 0.5) * 7);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
 
index b3998f2d8d285e909142b4dbd9f396ad5c5c3410..3720294cb51ab925d427f3aa149eb502f12a6dc9 100644 (file)
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
-const char * const builtin_pdb_data[] = {
+static const char * const builtin_pdb_data[] = {
 # include "molecules.h"
 };
 
 
 # include "molecules.h"
 };
 
 
+#ifndef USE_IPHONE
+# define LOAD_FILES
+#endif
+
+
 typedef struct {
   const char *name;
   GLfloat size, size2;
 typedef struct {
   const char *name;
   GLfloat size, size2;
@@ -884,6 +889,7 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
 }
 
 
 }
 
 
+#ifdef LOAD_FILES
 static int
 parse_pdb_file (molecule *m, const char *name)
 {
 static int
 parse_pdb_file (molecule *m, const char *name)
 {
@@ -930,6 +936,7 @@ parse_pdb_file (molecule *m, const char *name)
 
   return 0;
 }
 
   return 0;
 }
+#endif /* LOAD_FILES */
 
 
 typedef struct { char *atom; int count; } atom_and_count;
 
 
 typedef struct { char *atom; int count; } atom_and_count;
@@ -1047,16 +1054,17 @@ static void
 load_molecules (ModeInfo *mi)
 {
   molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
 load_molecules (ModeInfo *mi)
 {
   molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
-  int wire = MI_IS_WIREFRAME(mi);
   int i;
 
   mc->nmolecules = 0;
   int i;
 
   mc->nmolecules = 0;
+# ifdef LOAD_FILES
   if (molecule_str && *molecule_str && 
       strcmp(molecule_str, "(default)"))       /* try external PDB files */
     {
       /* The -molecule option can point to a .pdb file, or to
          a directory of them.
       */
   if (molecule_str && *molecule_str && 
       strcmp(molecule_str, "(default)"))       /* try external PDB files */
     {
       /* The -molecule option can point to a .pdb file, or to
          a directory of them.
       */
+      int wire = MI_IS_WIREFRAME(mi);
       struct stat st;
       int nfiles = 0;
       int list_size = 0;
       struct stat st;
       int nfiles = 0;
       int list_size = 0;
@@ -1160,6 +1168,7 @@ load_molecules (ModeInfo *mi)
       files = 0;
       mc->nmolecules = molecule_ctr;
     }
       files = 0;
       mc->nmolecules = molecule_ctr;
     }
+# endif /* LOAD_FILES */
 
   if (mc->nmolecules == 0)     /* do the builtins if no files */
     {
 
   if (mc->nmolecules == 0)     /* do the builtins if no files */
     {
@@ -1448,6 +1457,8 @@ draw_labels (ModeInfo *mi)
 
       glTranslatef (0, 0, (size * 1.1));           /* move toward camera */
 
 
       glTranslatef (0, 0, (size * 1.1));           /* move toward camera */
 
+      glRotatef (current_device_rotation(), 0, 0, 1);  /* right side up */
+
 # ifdef HAVE_GLBITMAP
       glRasterPos3f (0, 0, 0);                     /* draw text here */
 
 # ifdef HAVE_GLBITMAP
       glRasterPos3f (0, 0, 0);                     /* draw text here */
 
@@ -1643,7 +1654,10 @@ draw_molecule (ModeInfo *mi)
                  (y - 0.5) * 9,
                  (z - 0.5) * 9);
 
                  (y - 0.5) * 9,
                  (z - 0.5) * 9);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (mc->trackball);
     gltrackball_rotate (mc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (mc->rot, &x, &y, &z, !mc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (mc->rot, &x, &y, &z, !mc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 015dc1f29e54ea7239359e6adeac9a43da4d02cc..4da81e39a3e6997c54170875264e20a34c5c60f9 100644 (file)
@@ -1458,9 +1458,7 @@ draw_pinion (ModeInfo *mi)
 
   glPushMatrix ();
   {
 
   glPushMatrix ();
   {
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (pp->trackball);
     gltrackball_rotate (pp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
     mi->polygon_count = 0;
 
     glScalef (16, 16, 16);   /* map vp_width/height to the screen */
     mi->polygon_count = 0;
 
     glScalef (16, 16, 16);   /* map vp_width/height to the screen */
index 104f880be23103df37780f661cb8f04a422a710b..9ca14d2453d880836bcc1be91bcb609dee343e3c 100644 (file)
@@ -37,21 +37,37 @@ static const char sccsid[] = "@(#)pipes.c   4.07 97/11/24 xlockmore";
  * Marcelo F. Vianna (Apr-09-1997)
  *
  * Revision History:
  * Marcelo F. Vianna (Apr-09-1997)
  *
  * Revision History:
+ * 24-Jun-12: Eliminate single-buffer dependency.
  * 29-Apr-97: Factory equipment by Ed Mackey.  Productive day today, eh?
  * 29-Apr-97: Less tight turns Jeff Epler <jepler@inetnebr.com>
  * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
  */
 
  * 29-Apr-97: Factory equipment by Ed Mackey.  Productive day today, eh?
  * 29-Apr-97: Less tight turns Jeff Epler <jepler@inetnebr.com>
  * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna
  */
 
+/* This program was originally written to be single-buffered: it kept
+   building up new objects in the front buffer by never clearing the
+   depth or color buffers at the end of each frame.  In that way, it
+   was drawing a very small number of polygons per frame.  However,
+   modern systems make it difficult to live in a single-buffered world
+   like that.  So I changed it to re-generate the scene at every
+   frame, which makes it vastly less efficient, but also, makes it
+   work right on modern hardware.  It generates the entire system up
+   front, putting each "frame" of the animation into its own display
+   list; then it draws successively more of those display lists each
+   time the redisplay method is called.  When it reaches the end,
+   it regenerates a new system and re-populates the existing display
+   lists. -- jwz.
+ */
+
 #ifdef STANDALONE
 # define DEFAULTS      "*delay:                10000   \n"                     \
                                        "*count:                2       \n"                     \
                                        "*cycles:               5       \n"                     \
                                        "*size:                 500     \n"                     \
                        "*showFPS:      False   \n"                 \
 #ifdef STANDALONE
 # define DEFAULTS      "*delay:                10000   \n"                     \
                                        "*count:                2       \n"                     \
                                        "*cycles:               5       \n"                     \
                                        "*size:                 500     \n"                     \
                        "*showFPS:      False   \n"                 \
-                       "*fpsSolid:     True    \n"
+                       "*fpsSolid:     True    \n"                 \
+                       "*wireframe:    False   \n"
 
 # define refresh_pipes 0
 
 # define refresh_pipes 0
-# define pipes_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
@@ -74,17 +90,16 @@ static const char sccsid[] = "@(#)pipes.c   4.07 97/11/24 xlockmore";
 #include "sphere.h"
 #include "buildlwo.h"
 #include "teapot.h"
 #include "sphere.h"
 #include "buildlwo.h"
 #include "teapot.h"
+#include "gltrackball.h"
 
 #define DEF_FACTORY     "2"
 #define DEF_FISHEYE     "True"
 #define DEF_TIGHTTURNS  "False"
 #define DEF_ROTATEPIPES "True"
 
 #define DEF_FACTORY     "2"
 #define DEF_FISHEYE     "True"
 #define DEF_TIGHTTURNS  "False"
 #define DEF_ROTATEPIPES "True"
-#define DEF_DBUF        "False"
 #define NofSysTypes     3
 
 static int  factory;
 static Bool fisheye, tightturns, rotatepipes;
 #define NofSysTypes     3
 
 static int  factory;
 static Bool fisheye, tightturns, rotatepipes;
-static Bool dbuf_p;
 
 static XrmOptionDescRec opts[] =
 {
 
 static XrmOptionDescRec opts[] =
 {
@@ -95,8 +110,6 @@ static XrmOptionDescRec opts[] =
        {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"},
       {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"},
       {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"},
        {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"},
       {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"},
       {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"},
-      {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, "on"},
-      {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, "off"},
 };
 static argtype vars[] =
 {
 };
 static argtype vars[] =
 {
@@ -104,7 +117,6 @@ static argtype vars[] =
        {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
        {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
        {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool},
        {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool},
        {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool},
        {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool},
-       {&dbuf_p, "doubleBuffer", "DoubleBuffer", DEF_DBUF, t_Bool}
 };
 static OptionStruct desc[] =
 {
 };
 static OptionStruct desc[] =
 {
@@ -112,7 +124,6 @@ static OptionStruct desc[] =
        {"-/+fisheye", "turn on/off zoomed-in view of pipes"},
        {"-/+tightturns", "turn on/off tight turns"},
        {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"},
        {"-/+fisheye", "turn on/off zoomed-in view of pipes"},
        {"-/+tightturns", "turn on/off tight turns"},
        {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"},
-       {"-/+db", "turn on/off double buffering"}
 };
 
 ENTRYPOINT ModeSpecOpt pipes_opts =
 };
 
 ENTRYPOINT ModeSpecOpt pipes_opts =
@@ -129,7 +140,6 @@ ModStruct   pipes_description =
 #endif
 
 #define Scale4Window               0.1
 #endif
 
 #define Scale4Window               0.1
-#define Scale4Iconic               0.07
 
 #define one_third                  0.3333333333333333333
 
 
 #define one_third                  0.3333333333333333333
 
@@ -151,7 +161,6 @@ ModStruct   pipes_description =
 typedef struct {
        int         flip;
 
 typedef struct {
        int         flip;
 
-       GLint       WindH, WindW;
        int         Cells[HCELLS][VCELLS][HCELLS];
        int         usedcolors[DEFINEDCOLORS];
        int         directions[6];
        int         Cells[HCELLS][VCELLS][HCELLS];
        int         usedcolors[DEFINEDCOLORS];
        int         directions[6];
@@ -170,8 +179,16 @@ typedef struct {
        GLuint      valve, bolts, betweenbolts, elbowbolts, elbowcoins;
        GLuint      guagehead, guageface, guagedial, guageconnector, teapot;
     int         teapot_polys;
        GLuint      valve, bolts, betweenbolts, elbowbolts, elbowcoins;
        GLuint      guagehead, guageface, guagedial, guageconnector, teapot;
     int         teapot_polys;
-    int         reset;
        GLXContext *glx_context;
        GLXContext *glx_context;
+
+    Bool button_down_p;
+    trackball_state *trackball;
+    GLuint *dlists, *poly_counts;
+    int dlist_count, dlist_size;
+    int system_index, system_size;
+
+    int fadeout;
+
 } pipesstruct;
 
 extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D;
 } pipesstruct;
 
 extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D;
@@ -204,8 +221,10 @@ static pipesstruct *pipes = NULL;
 static void
 MakeTube(ModeInfo *mi, int direction)
 {
 static void
 MakeTube(ModeInfo *mi, int direction)
 {
+    Bool        wire = MI_IS_WIREFRAME(mi);
        float       an;
        float       SINan_3, COSan_3;
        float       an;
        float       SINan_3, COSan_3;
+    int facets = (wire ? 5 : 24);
 
        /*dirUP    = 00000000 */
        /*dirDOWN  = 00000001 */
 
        /*dirUP    = 00000000 */
        /*dirDOWN  = 00000001 */
@@ -218,8 +237,8 @@ MakeTube(ModeInfo *mi, int direction)
                glRotatef(90.0, (direction & 2) ? 0.0 : 1.0,
                          (direction & 2) ? 1.0 : 0.0, 0.0);
        }
                glRotatef(90.0, (direction & 2) ? 0.0 : 1.0,
                          (direction & 2) ? 1.0 : 0.0, 0.0);
        }
-       glBegin(GL_QUAD_STRIP);
-       for (an = 0.0; an <= 2.0 * M_PI; an += M_PI / 12.0) {
+       glBegin(wire ? GL_LINE_STRIP : GL_QUAD_STRIP);
+       for (an = 0.0; an <= 2.0 * M_PI; an += M_PI * 2 / facets) {
                glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0);
                glVertex3f(COSan_3, SINan_3, one_third);
                glVertex3f(COSan_3, SINan_3, -one_third);
                glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0);
                glVertex3f(COSan_3, SINan_3, one_third);
                glVertex3f(COSan_3, SINan_3, -one_third);
@@ -250,13 +269,14 @@ mySphere(float radius, Bool wire)
 static void
 myElbow(ModeInfo * mi, int bolted)
 {
 static void
 myElbow(ModeInfo * mi, int bolted)
 {
-#define nsides 25
-#define rings 25
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+    Bool        wire = MI_IS_WIREFRAME(mi);
+
+    int nsides = (wire ? 6 : 25);
+    int rings  = nsides;
 #define r one_third
 #define R one_third
 
 #define r one_third
 #define R one_third
 
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-
        int         i, j;
        GLfloat     p0[3], p1[3], p2[3], p3[3];
        GLfloat     n0[3], n1[3], n2[3], n3[3];
        int         i, j;
        GLfloat     p0[3], p1[3], p2[3], p3[3];
        GLfloat     n0[3], n1[3], n2[3], n3[3];
@@ -303,7 +323,7 @@ myElbow(ModeInfo * mi, int bolted)
                        p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi));
                        p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1));
 
                        p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi));
                        p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1));
 
-                       glBegin(GL_QUADS);
+                       glBegin(wire ? GL_LINE_LOOP : GL_QUADS);
                        glNormal3fv(n3);
                        glVertex3fv(p3);
                        glNormal3fv(n2);
                        glNormal3fv(n3);
                        glVertex3fv(p3);
                        glNormal3fv(n2);
@@ -547,34 +567,8 @@ pinit(ModeInfo * mi, int zera)
        pipesstruct *pp = &pipes[MI_SCREEN(mi)];
        int         X, Y, Z;
 
        pipesstruct *pp = &pipes[MI_SCREEN(mi)];
        int         X, Y, Z;
 
-    if (zera)
-      mi->polygon_count = 0;
-
-       glClearDepth(1.0);
-       glColor3f(1.0, 1.0, 1.0);
-
-       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
-       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
-       glLightfv(GL_LIGHT0, GL_POSITION, position0);
-       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1);
-       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1);
-       glLightfv(GL_LIGHT1, GL_POSITION, position1);
-       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
-       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-       glEnable(GL_LIGHTING);
-       glEnable(GL_LIGHT0);
-       glEnable(GL_LIGHT1);
-       glEnable(GL_DEPTH_TEST);
-       glEnable(GL_NORMALIZE);
-       glEnable(GL_CULL_FACE);
-
-       glShadeModel(GL_SMOOTH);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
-       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
        if (zera) {
                pp->system_number = 1;
        if (zera) {
                pp->system_number = 1;
-               glDrawBuffer(dbuf_p ? GL_BACK : GL_FRONT);
                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                (void) memset(pp->Cells, 0, sizeof (pp->Cells));
                for (X = 0; X < HCELLS; X++) {
                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                (void) memset(pp->Cells, 0, sizeof (pp->Cells));
                for (X = 0; X < HCELLS; X++) {
@@ -592,9 +586,6 @@ pinit(ModeInfo * mi, int zera)
                        }
                }
                (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors));
                        }
                }
                (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors));
-               if ((pp->initial_rotation += 10.0) > 45.0) {
-                       pp->initial_rotation -= 90.0;
-               }
        }
        pp->counter = 0;
        pp->turncounter = 0;
        }
        pp->counter = 0;
        pp->turncounter = 0;
@@ -659,13 +650,11 @@ pinit(ModeInfo * mi, int zera)
        pp->nowdir = SelectNeighbor(mi);
 }
 
        pp->nowdir = SelectNeighbor(mi);
 }
 
+
 ENTRYPOINT void
 reshape_pipes(ModeInfo * mi, int width, int height)
 {
 ENTRYPOINT void
 reshape_pipes(ModeInfo * mi, int width, int height)
 {
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
-    pinit(mi, 1);
-
-       glViewport(0, 0, pp->WindW = (GLint) width, pp->WindH = (GLint) height);
+       glViewport(0, 0, width, (GLint) height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */
@@ -675,6 +664,53 @@ reshape_pipes(ModeInfo * mi, int width, int height)
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
+ENTRYPOINT Bool
+pipes_handle_event (ModeInfo *mi, XEvent *event)
+{
+  pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      pp->button_down_p = True;
+      gltrackball_start (pp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      pp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (pp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           pp->button_down_p)
+    {
+      gltrackball_track (pp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
+
+static void generate_system (ModeInfo *);
+
+
 ENTRYPOINT void
 init_pipes (ModeInfo * mi)
 {
 ENTRYPOINT void
 init_pipes (ModeInfo * mi)
 {
@@ -688,11 +724,6 @@ init_pipes (ModeInfo * mi)
        }
        pp = &pipes[screen];
 
        }
        pp = &pipes[screen];
 
-#ifdef HAVE_JWZGLES
-    /* Single-buffering on iOS is so confusing! */
-    dbuf_p = True;
-#endif
-
        pp->window = MI_WINDOW(mi);
        if ((pp->glx_context = init_GL(mi)) != NULL) {
 
        pp->window = MI_WINDOW(mi);
        if ((pp->glx_context = init_GL(mi)) != NULL) {
 
@@ -741,50 +772,65 @@ init_pipes (ModeInfo * mi)
        } else {
                MI_CLEARWINDOW(mi);
        }
        } else {
                MI_CLEARWINDOW(mi);
        }
+
+    pp->trackball = gltrackball_init ();
+    generate_system (mi);
 }
 
 }
 
-ENTRYPOINT void
-draw_pipes (ModeInfo * mi)
+
+static GLuint
+get_dlist (ModeInfo *mi, int i)
 {
 {
-       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+  pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+  if (i >= pp->dlist_count)
+    {
+      pp->dlist_count++;
+      if (pp->dlist_count >= pp->dlist_size)
+        {
+          int s2 = (pp->dlist_size + 100) * 1.2;
+          pp->dlists = (GLuint *)
+            realloc (pp->dlists, s2 * sizeof(*pp->dlists));
+          if (! pp->dlists) abort();
+          pp->poly_counts = (GLuint *)
+            realloc (pp->poly_counts, s2 * sizeof(*pp->poly_counts));
+          if (! pp->poly_counts) abort();
+          pp->dlist_size = s2;
+        }
+      pp->dlists [i] = glGenLists (1);
+      pp->poly_counts [i] = 0;
+    }
+  return pp->dlists[i];
+}
 
 
-       Display    *display = MI_DISPLAY(mi);
-       Window      window = MI_WINDOW(mi);
+
+
+static void
+generate_system (ModeInfo * mi)
+{
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
     Bool        wire = MI_IS_WIREFRAME(mi);
 
        int         newdir;
        int         OPX, OPY, OPZ;
 
     Bool        wire = MI_IS_WIREFRAME(mi);
 
        int         newdir;
        int         OPX, OPY, OPZ;
 
-       if (!pp->glx_context)
-               return;
+    Bool reset_p = False;
 
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+    pp->system_index = 0;
+    pp->system_size = 0;
+    pinit (mi, 1);
 
 
-    if (pp->reset) {
-      if (--pp->reset) {
-        /* Would be nice to fade to black here, by drawing successive quads
-           over the whole scene with gamma. */
-        return;
-      }
-      pinit(mi, 1);
-    }
+    while (1) {
+      glNewList (get_dlist (mi, pp->system_size++), GL_COMPILE);
+      mi->polygon_count = 0;
 
        glPushMatrix();
 
 
        glPushMatrix();
 
-       glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8);
-       if (rotatepipes)
-               glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0);
-
-       if (!MI_IS_ICONIC(mi)) {
-               /* Width/height ratio handled by gluPerspective() now. */
-               glScalef(Scale4Window, Scale4Window, Scale4Window);
-       } else {
-               glScalef(Scale4Iconic, Scale4Iconic, Scale4Iconic);
-       }
-
        FindNeighbors(mi);
 
        FindNeighbors(mi);
 
-       glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
+    if (wire)
+      glColor4fv (pp->system_color);
+    else
+      glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color);
 
        /* If it's the begining of a system, draw a sphere */
        if (pp->olddir == dirNone) {
 
        /* If it's the begining of a system, draw a sphere */
        if (pp->olddir == dirNone) {
@@ -805,15 +851,12 @@ draw_pipes (ModeInfo * mi)
                /* If the maximum number of system was drawn, restart (clearing the screen), */
                /* else start a new system. */
                if (++pp->system_number > pp->number_of_systems) {
                /* If the maximum number of system was drawn, restart (clearing the screen), */
                /* else start a new system. */
                if (++pp->system_number > pp->number_of_systems) {
-          /* pause doing nothing for N seconds before clearing the screen. */
-          int secs = 3;
-          pp->reset = secs * 1000000 / (MI_PAUSE(mi) ? MI_PAUSE(mi) : 100);
+          reset_p = True;
                } else {
                        pinit(mi, 0);
                }
 
                } else {
                        pinit(mi, 0);
                }
 
-               glPopMatrix();
-               return;
+        goto NEXT;
        }
        pp->counter++;
        pp->turncounter++;
        }
        pp->counter++;
        pp->turncounter++;
@@ -1032,16 +1075,110 @@ draw_pipes (ModeInfo * mi)
        glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0);
        MakeTube(mi, newdir);
 
        glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0);
        MakeTube(mi, newdir);
 
+    NEXT:
        glPopMatrix();
        glPopMatrix();
+    glEndList();
+    pp->poly_counts [pp->system_size-1] = mi->polygon_count;
+
+    if (reset_p)
+      break;
+    }
+}
 
 
-       glFlush();
+
+ENTRYPOINT void
+draw_pipes (ModeInfo * mi)
+{
+       pipesstruct *pp = &pipes[MI_SCREEN(mi)];
+       Display *display = MI_DISPLAY(mi);
+       Window    window = MI_WINDOW(mi);
+    Bool        wire = MI_IS_WIREFRAME(mi);
+    int i = 0;
+
+       if (!pp->glx_context)
+               return;
+
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+       glColor3f(1.0, 1.0, 1.0);
+
+       glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0);
+       glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0);
+       glLightfv(GL_LIGHT0, GL_POSITION, position0);
+       glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1);
+       glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1);
+       glLightfv(GL_LIGHT1, GL_POSITION, position1);
+       glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+       glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+
+    if (wire)
+      glDisable(GL_LIGHTING);
+    else
+      {
+        glEnable(GL_LIGHTING);
+        glEnable(GL_LIGHT0);
+        /* This looks crappy. */
+        /* glEnable(GL_LIGHT1); */
+        glEnable(GL_DEPTH_TEST);
+        glEnable(GL_NORMALIZE);
+        glEnable(GL_CULL_FACE);
+      }
+
+       glShadeModel(GL_SMOOTH);
+       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
+       glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
+
+    glPushMatrix();
+
+    pp->initial_rotation += 0.02;
+
+       glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8);
+
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
+    gltrackball_rotate (pp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
+       if (rotatepipes)
+      glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0);
+
+    glScalef(Scale4Window, Scale4Window, Scale4Window);
+
+    mi->polygon_count = 0;
+
+    if (pp->fadeout)
+      {
+        GLfloat s = (pp->fadeout * pp->fadeout) / 10000.0;
+        glScalef (s, s, s);
+        glRotatef (90 * (1 - (pp->fadeout/100.0)), 1, 0, 0.1);
+        pp->fadeout -= 4;
+        if (pp->fadeout <= 0)
+          {
+            pp->fadeout = 0;
+            generate_system (mi);
+          }
+      }
+    else if (pp->system_index < pp->system_size)
+      pp->system_index++;
+    else
+      pp->fadeout = 100;
+
+    for (i = 0; i < pp->system_index; i++)
+      {
+        glCallList (pp->dlists[i]);
+        mi->polygon_count += pp->poly_counts[i];
+      }
+
+    glPopMatrix();
 
     if (mi->fps_p) do_fps (mi);
 
     if (mi->fps_p) do_fps (mi);
+    glFinish();
 
 
-    if (dbuf_p)
-      glXSwapBuffers(display, window);
+    glXSwapBuffers(display, window);
 }
 
 }
 
+
 #ifndef STANDALONE
 ENTRYPOINT void
 change_pipes (ModeInfo * mi)
 #ifndef STANDALONE
 ENTRYPOINT void
 change_pipes (ModeInfo * mi)
@@ -1093,6 +1230,14 @@ release_pipes (ModeInfo * mi)
                                        glDeleteLists(pp->guageconnector, 1);
                                if (pp->teapot)
                                        glDeleteLists(pp->teapot, 1);
                                        glDeleteLists(pp->guageconnector, 1);
                                if (pp->teapot)
                                        glDeleteLists(pp->teapot, 1);
+                if (pp->dlists)
+                  {
+                    int i;
+                    for (i = 0; i < pp->dlist_count; i++)
+                      glDeleteLists (pp->dlists[i], 1);
+                    free (pp->dlists);
+                    free (pp->poly_counts);
+                  }
                        }
                }
 
                        }
                }
 
index 1b2d7eb7a787027610dba9656bf9b8317205f543..48e7ec53a58bf2a6d481469fb201524d4513c403 100644 (file)
 # include <X11/keysymdef.h>
 #endif
 
 # include <X11/keysymdef.h>
 #endif
 
+#ifndef HAVE_JWZGLES
+# define HAVE_TESS
+#endif
+
+
 #ifdef USE_GL /* whole file */
 
 typedef struct {
 #ifdef USE_GL /* whole file */
 
 typedef struct {
@@ -381,13 +386,16 @@ new_label (ModeInfo *mi)
 }
 
 
 }
 
 
+#ifdef HAVE_TESS
 static void
 tess_error (GLenum errorCode)
 {
   fprintf (stderr, "%s: tesselation error: %s\n",
            progname, gluErrorString(errorCode));
 static void
 tess_error (GLenum errorCode)
 {
   fprintf (stderr, "%s: tesselation error: %s\n",
            progname, gluErrorString(errorCode));
-  exit (0);
+  abort();
 }
 }
+#endif /* HAVE_TESS */
+
 
 static void
 new_polyhedron (ModeInfo *mi)
 
 static void
 new_polyhedron (ModeInfo *mi)
@@ -400,11 +408,13 @@ new_polyhedron (ModeInfo *mi)
   /* Use the GLU polygon tesselator so that nonconvex faces are displayed
      correctly (e.g., for the "pentagrammic concave deltohedron").
    */
   /* Use the GLU polygon tesselator so that nonconvex faces are displayed
      correctly (e.g., for the "pentagrammic concave deltohedron").
    */
+# ifdef HAVE_TESS
   GLUtesselator *tobj = gluNewTess();
   gluTessCallback (tobj, GLU_TESS_BEGIN,  (void (*) (void)) &glBegin);
   gluTessCallback (tobj, GLU_TESS_END,    (void (*) (void)) &glEnd);
   gluTessCallback (tobj, GLU_TESS_VERTEX, (void (*) (void)) &glVertex3dv);
   gluTessCallback (tobj, GLU_TESS_ERROR,  (void (*) (void)) &tess_error);
   GLUtesselator *tobj = gluNewTess();
   gluTessCallback (tobj, GLU_TESS_BEGIN,  (void (*) (void)) &glBegin);
   gluTessCallback (tobj, GLU_TESS_END,    (void (*) (void)) &glEnd);
   gluTessCallback (tobj, GLU_TESS_VERTEX, (void (*) (void)) &glVertex3dv);
   gluTessCallback (tobj, GLU_TESS_ERROR,  (void (*) (void)) &tess_error);
+# endif /* HAVE_TESS */
 
   mi->polygon_count = 0;
 
 
   mi->polygon_count = 0;
 
@@ -431,10 +441,20 @@ new_polyhedron (ModeInfo *mi)
   glNewList (bp->object_list, GL_COMPILE);
   if (bp->which == bp->npolyhedra-1)
     {
   glNewList (bp->object_list, GL_COMPILE);
   if (bp->which == bp->npolyhedra-1)
     {
+      GLfloat bcolor[4];
+      bcolor[0] = bp->colors[0].red   / 65536.0;
+      bcolor[1] = bp->colors[0].green / 65536.0;
+      bcolor[2] = bp->colors[0].blue  / 65536.0;
+      bcolor[3] = 1.0;
+      if (wire)
+        glColor3f (0, 1, 0);
+      else
+        glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
+
       glScalef (0.8, 0.8, 0.8);
       p->nfaces = unit_teapot (6, wire);
       glScalef (0.8, 0.8, 0.8);
       p->nfaces = unit_teapot (6, wire);
-      p->nedges = p->nfaces * 2;           /* #### is this right? */
-      p->npoints = p->nfaces / 3;          /* #### is this right? */
+      p->nedges = p->nfaces * 3 / 2;
+      p->npoints = p->nfaces * 3;
       p->logical_faces = p->nfaces;
       p->logical_vertices = p->npoints;
     }
       p->logical_faces = p->nfaces;
       p->logical_vertices = p->npoints;
     }
@@ -455,12 +475,13 @@ new_polyhedron (ModeInfo *mi)
               bcolor[0] = bp->colors[f->color].red   / 65536.0;
               bcolor[1] = bp->colors[f->color].green / 65536.0;
               bcolor[2] = bp->colors[f->color].blue  / 65536.0;
               bcolor[0] = bp->colors[f->color].red   / 65536.0;
               bcolor[1] = bp->colors[f->color].green / 65536.0;
               bcolor[2] = bp->colors[f->color].blue  / 65536.0;
-              bcolor[2] = 1.0;
+              bcolor[3] = 1.0;
               glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
             }
 
           kludge_normal (f->npoints, f->points, p->points);
       
               glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor);
             }
 
           kludge_normal (f->npoints, f->points, p->points);
       
+# ifdef HAVE_TESS
           gluTessBeginPolygon (tobj, 0);
           gluTessBeginContour (tobj);
           for (j = 0; j < f->npoints; j++)
           gluTessBeginPolygon (tobj, 0);
           gluTessBeginContour (tobj);
           for (j = 0; j < f->npoints; j++)
@@ -470,12 +491,26 @@ new_polyhedron (ModeInfo *mi)
             }
           gluTessEndContour (tobj);
           gluTessEndPolygon (tobj);
             }
           gluTessEndContour (tobj);
           gluTessEndPolygon (tobj);
+# else  /* !HAVE_TESS */
+          glBegin (wire ? GL_LINE_LOOP :
+                   f->npoints == 3 ? GL_TRIANGLES :
+                   f->npoints == 4 ? GL_QUADS :
+                   GL_POLYGON);
+          for (j = 0; j < f->npoints; j++)
+            {
+              point *pp = &p->points[f->points[j]];
+              glVertex3f (pp->x, pp->y, pp->z);
+            }
+          glEnd();
+# endif /* !HAVE_TESS */
         }
     }
   glEndList ();
 
   mi->polygon_count += p->nfaces;
         }
     }
   glEndList ();
 
   mi->polygon_count += p->nfaces;
+# ifdef HAVE_TESS
   gluDeleteTess (tobj);
   gluDeleteTess (tobj);
+# endif
 }
 
 
 }
 
 
@@ -676,7 +711,10 @@ draw_polyhedra (ModeInfo *mi)
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
                  (y - 0.5) * 8,
                  (z - 0.5) * 15);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 1f9e3bda979f3b1eeec919498dd8843ddd49856f..585bb42c9f7e3750822a18de19d932e501c67cf3 100644 (file)
@@ -782,9 +782,7 @@ ENTRYPOINT void draw_providence(ModeInfo * mi)
   /* rotate providence */
   glTranslatef(0.0, 0.0, mp->camera_z + sin(mp->theta/4.0));
   glRotatef(10.0+20.0*sin(mp->theta/2.0), 1.0, 0.0, 0.0);
   /* rotate providence */
   glTranslatef(0.0, 0.0, mp->camera_z + sin(mp->theta/4.0));
   glRotatef(10.0+20.0*sin(mp->theta/2.0), 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(mp->trackball);
   gltrackball_rotate(mp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0);
 
   /* draw providence */
   glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0);
 
   /* draw providence */
index b0df56686e401e34f816f0d09e77511b27152c81..88592b13fe024724aa7c6028d1dee911f68c0e89 100644 (file)
@@ -352,11 +352,93 @@ static int drawBoard(Queenscreen *qs)
     }
 
   glEnd();
     }
 
   glEnd();
+
+  {
+    GLfloat off = 0.01;
+    GLfloat w = qs->BOARDSIZE;
+    GLfloat h = 0.1;
+
+    /* Give the board a slight lip. */
+    /* #### oops, normals are wrong here, but you can't tell */
+
+    glColor3f(0.3, 0.3, 0.3);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    polys += 4;
+
+    /* Fill in the underside of the board with an invisible black box
+       to hide the reflections that are not on tiles.  Probably there's
+       a way to do this with stencils instead.
+     */
+    w -= off*2;
+    h = 5;
+
+    glPushMatrix();
+    glTranslatef (off, 0, off);
+    glDisable(GL_LIGHTING);
+    glColor3f(0,0,0);
+    glBegin (GL_QUADS);
+    glVertex3f (0,  0, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0, -h, w);
+    glVertex3f (0,  0, w);
+
+    glVertex3f (0,  0, w);
+    glVertex3f (0, -h, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w,  0, w);
+
+    glVertex3f (w,  0, w);
+    glVertex3f (w, -h, w);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w,  0, 0);
+
+    glVertex3f (w,  0, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (0, -h, 0);
+    glVertex3f (0,  0, 0);
+
+    glVertex3f (0, -h, 0);
+    glVertex3f (w, -h, 0);
+    glVertex3f (w, -h, w);
+    glVertex3f (0, -h, w);
+    glEnd();
+    polys += 4;
+    glPopMatrix();
+    if (!wire)
+      glEnable(GL_LIGHTING);
+  }
+
   return polys;
 }
 
 static int display(Queenscreen *qs) 
 {
   return polys;
 }
 
 static int display(Queenscreen *qs) 
 {
+  int max = 1024;
   int polys = 0;
   glClear(clearbits);
   
   int polys = 0;
   glClear(clearbits);
   
@@ -366,6 +448,7 @@ static int display(Queenscreen *qs)
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* setup light attenuation */
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   /* setup light attenuation */
+  /* #### apparently this does nothing */
   glEnable(GL_COLOR_MATERIAL);
   glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs)));
   glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06);
   glEnable(GL_COLOR_MATERIAL);
   glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs)));
   glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06);
@@ -373,9 +456,7 @@ static int display(Queenscreen *qs)
   /** setup perspective */
   glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
   /** setup perspective */
   glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE);
   glRotatef(30.0, 1.0, 0.0, 0.0);
-  glRotatef(-current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (qs->trackball);
   gltrackball_rotate (qs->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
   glRotatef(qs->theta*100, 0.0, 1.0, 0.0);
   glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE);
 
   glRotatef(qs->theta*100, 0.0, 1.0, 0.0);
   glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE);
 
@@ -390,6 +471,18 @@ static int display(Queenscreen *qs)
     glEnable(GL_LIGHT0);
   }
 
     glEnable(GL_LIGHT0);
   }
 
+  /* Since the lighting attenuation trick up there doesn't seem to be working,
+     let's drop the old board down and drop the new board in. */
+  if (qs->steps < (max/8.0)) {
+    GLfloat y = qs->steps / (max/8.0);
+    y = sin (M_PI/2 * y);
+    glTranslatef (0, 10 - (y * 10), 0);
+  } else if (qs->steps > max-(max/8.0)) {
+    GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0);
+    y = 1 - sin (M_PI/2 * (1-y));
+    glTranslatef (0, -y * 15, 0);
+  }
+
   /* draw reflections */
   if(!wire) {
     polys += draw_reflections(qs);
   /* draw reflections */
   if(!wire) {
     polys += draw_reflections(qs);
@@ -409,7 +502,7 @@ static int display(Queenscreen *qs)
     qs->theta += .002;
 
   /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */
     qs->theta += .002;
 
   /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */
-  if(++qs->steps == 1024) {
+  if(++qs->steps == max) {
     qs->steps = 0;
     blank(qs);
     qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1));
     qs->steps = 0;
     blank(qs);
     qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1));
@@ -500,7 +593,7 @@ ENTRYPOINT void init_queens(ModeInfo *mi)
 
   qs->BOARDSIZE = 8; /* 8 cuz its classic */
 
 
   qs->BOARDSIZE = 8; /* 8 cuz its classic */
 
-  gen_model_lists(-1, poly_counts);
+  chessmodels_gen_lists(-1, poly_counts);
   qs->queen_list = QUEEN;
   qs->queen_polys = poly_counts[QUEEN];
 
   qs->queen_list = QUEEN;
   qs->queen_polys = poly_counts[QUEEN];
 
index 0f40347c998cfeefaaf8eea539cf54c9ea6d0dd9..20ced9733cab4ca1d516fdee602e08f7e32cade0 100644 (file)
@@ -111,13 +111,14 @@ static const char sccsid[] = "@(#)rubik.c 5.01 2001/03/01 xlockmore";
                                        "*cycles: 20 \n"                \
                                        "*size:  -6 \n"
 # define refresh_rubik 0
                                        "*cycles: 20 \n"                \
                                        "*size:  -6 \n"
 # define refresh_rubik 0
-# define rubik_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
 # include "vis.h"
 #endif /* !STANDALONE */
 
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # include "xlock.h"                                    /* from the xlockmore distribution */
 # include "vis.h"
 #endif /* !STANDALONE */
 
+#include "gltrackball.h"
+
 #ifdef MODE_rubik
 
 #define DEF_SIZEX     "0"
 #ifdef MODE_rubik
 
 #define DEF_SIZEX     "0"
@@ -372,6 +373,8 @@ typedef struct {
        GLfloat     rotatestep;
        GLfloat     PX, PY, VX, VY;
        GLXContext *glx_context;
        GLfloat     rotatestep;
        GLfloat     PX, PY, VX, VY;
        GLXContext *glx_context;
+    Bool button_down_p;
+    trackball_state *trackball;
 } rubikstruct;
 
 static const float front_shininess[] = {60.0};
 } rubikstruct;
 
 static const float front_shininess[] = {60.0};
@@ -1816,6 +1819,49 @@ reshape_rubik(ModeInfo * mi, int width, int height)
 
 }
 
 
 }
 
+ENTRYPOINT Bool
+rubik_handle_event (ModeInfo *mi, XEvent *event)
+{
+  rubikstruct *rp = &rubik[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      rp->button_down_p = True;
+      gltrackball_start (rp->trackball,
+                         event->xbutton.x, event->xbutton.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      rp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == ButtonPress &&
+           (event->xbutton.button == Button4 ||
+            event->xbutton.button == Button5 ||
+            event->xbutton.button == Button6 ||
+            event->xbutton.button == Button7))
+    {
+      gltrackball_mousewheel (rp->trackball, event->xbutton.button, 10,
+                              !!event->xbutton.state);
+      return True;
+    }
+  else if (event->xany.type == MotionNotify &&
+           rp->button_down_p)
+    {
+      gltrackball_track (rp->trackball,
+                         event->xmotion.x, event->xmotion.y,
+                         MI_WIDTH (mi), MI_HEIGHT (mi));
+      return True;
+    }
+
+  return False;
+}
+
+
 static Bool
 pinit(ModeInfo * mi)
 {
 static Bool
 pinit(ModeInfo * mi)
 {
@@ -1897,6 +1943,8 @@ init_rubik(ModeInfo * mi)
        rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
        rp->PY = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
 
        rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
        rp->PY = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;
 
+    rp->trackball = gltrackball_init ();
+
        if ((rp->glx_context = init_GL(mi)) != NULL) {
 
                reshape_rubik(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
        if ((rp->glx_context = init_GL(mi)) != NULL) {
 
                reshape_rubik(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
@@ -1983,6 +2031,11 @@ draw_rubik(ModeInfo * mi)
                glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic);
        }
 
                glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic);
        }
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
+    gltrackball_rotate (rp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
+
        glRotatef(rp->step * 100, 1, 0, 0);
        glRotatef(rp->step * 95, 0, 1, 0);
        glRotatef(rp->step * 90, 0, 0, 1);
        glRotatef(rp->step * 100, 1, 0, 0);
        glRotatef(rp->step * 95, 0, 1, 0);
        glRotatef(rp->step * 90, 0, 0, 1);
index e8caf32f140d18a94205848a1f5a5224a018bec9..86968ad97d52731291e93831c204e12742df9e85 100644 (file)
@@ -262,7 +262,12 @@ draw_main(ModeInfo *mi, rubikblocks_conf *cp)
   glLoadIdentity();
   get_position(cp->rot, &x, &y, &z, !cp->button_down);
   glTranslatef((x-0.5)*6, (y-0.5)*6, -20);
   glLoadIdentity();
   get_position(cp->rot, &x, &y, &z, !cp->button_down);
   glTranslatef((x-0.5)*6, (y-0.5)*6, -20);
+
+  /* Do it twice because we don't track the device's orientation. */
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate(cp->trackball);
   gltrackball_rotate(cp->trackball);
+  glRotatef(-current_device_rotation(), 0, 0, 1);
+
   get_rotation(cp->rot, &x, &y, &z, !cp->button_down);
   glRotatef(x*360, 1, 0, 0);
   glRotatef(y*360, 0, 1, 0);
   get_rotation(cp->rot, &x, &y, &z, !cp->button_down);
   glRotatef(x*360, 1, 0, 0);
   glRotatef(y*360, 0, 1, 0);
index 76b60ec03fe996e369ead30e9f4aa9884e263923..833b0001ed7fade4429f3c154c2fbde46413e98a 100644 (file)
@@ -580,7 +580,10 @@ static void Draw(ModeInfo * mi)
     glEnd();
     mi->polygon_count++;
 
     glEnd();
     mi->polygon_count++;
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (sb->trackball);
     gltrackball_rotate (sb->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     /* rotate the balls */
     glRotatef(sb->rotm[0], 1.0f, 0.0f, 0.0f);
 
     /* rotate the balls */
     glRotatef(sb->rotm[0], 1.0f, 0.0f, 0.0f);
index 078369987583a6ab0e48a054a047c0ae478b23bf..7bcefcf2c4a447837af5dcd5ce62389033292ecc 100644 (file)
@@ -327,7 +327,10 @@ draw(ModeInfo *mi)
                  (y - 0.5) * 10,
                  (z - 0.5) * 20);
 
                  (y - 0.5) * 10,
                  (z - 0.5) * 20);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (gp->trackball);
     gltrackball_rotate (gp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index ace1e594073e558e65722d1f8b28e673e36beabb..c9f1febe9f4fc6cbef90044c1b154c7745b7baa6 100644 (file)
@@ -993,7 +993,7 @@ draw_tentacles (ModeInfo *mi)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
-
+  glRotatef(current_device_rotation(), 0, 0, 1);
 
 # if 1
   glScalef (3, 3, 3);
 
 # if 1
   glScalef (3, 3, 3);
@@ -1017,7 +1017,6 @@ draw_tentacles (ModeInfo *mi)
 # endif
 
   gltrackball_rotate (tc->trackball);
 # endif
 
   gltrackball_rotate (tc->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   mi->polygon_count = 0;
 
 
   mi->polygon_count = 0;
 
index dfa277d45f7bf89c8d2ce4fab7dcc684703063cc..fa1ea893df64faca035eaac4ab1381fd8fd26f33 100644 (file)
   */
 #endif
 
   */
 #endif
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
 #if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR)
 # include <unistd.h>
 # include <sys/stat.h>
 #if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR)
 # include <unistd.h>
 # include <sys/stat.h>
@@ -57,6 +61,9 @@
 # include <netinet/udp.h>
 # include <arpa/inet.h>
 # include <netdb.h>
 # include <netinet/udp.h>
 # include <arpa/inet.h>
 # include <netdb.h>
+# ifdef HAVE_GETIFADDRS
+#  include <ifaddrs.h>
+# endif
 #endif /* HAVE_ICMP || HAVE_ICMPHDR */
 
 #if defined(HAVE_ICMP)
 #endif /* HAVE_ICMP || HAVE_ICMPHDR */
 
 #if defined(HAVE_ICMP)
 # undef HAVE_PING
 #endif
 
 # undef HAVE_PING
 #endif
 
+#ifndef USE_IPHONE
+# define LOAD_FILES
+#endif
+
 #ifndef HAVE_PING
 
 sonar_sensor_data *
 #ifndef HAVE_PING
 
 sonar_sensor_data *
-init_ping (Display *dpy, char **error_ret, const char *subnet, int timeout,
+init_ping (Display *dpy, char **error_ret, char **desc_ret, 
+           const char *subnet, int timeout,
            Bool resolve_p, Bool times_p, Bool debug_p)
 {
   if (! (!subnet || !*subnet || !strcmp(subnet, "default")))
            Bool resolve_p, Bool times_p, Bool debug_p)
 {
   if (! (!subnet || !*subnet || !strcmp(subnet, "default")))
@@ -330,11 +342,13 @@ bogie_for_host (sonar_sensor_data *ssd, const char *name, Bool resolve_p)
   return b;
 
  FAIL:
   return b;
 
  FAIL:
-  if (b) free_bogie (ssd, b);
+  if (b) sonar_free_bogie (ssd, b);
   return 0;
 }
 
 
   return 0;
 }
 
 
+#ifdef READ_FILES
+
 /* Return a list of bogies read from a file.
    The file can be like /etc/hosts or .ssh/known_hosts or probably
    just about anything that has host names in it.
 /* Return a list of bogies read from a file.
    The file can be like /etc/hosts or .ssh/known_hosts or probably
    just about anything that has host names in it.
@@ -442,6 +456,7 @@ read_hosts_file (sonar_sensor_data *ssd, const char *filename)
   fclose(fp);
   return list;
 }
   fclose(fp);
   return list;
 }
+#endif /* READ_FILES */
 
 
 static sonar_bogie *
 
 
 static sonar_bogie *
@@ -484,22 +499,41 @@ delete_duplicate_hosts (sonar_sensor_data *ssd, sonar_bogie *list)
 }
 
 
 }
 
 
+static unsigned int
+width_mask (int width)
+{
+  unsigned int m = 0;
+  int i;
+  for (i = 0; i < width; i++)
+    m |= (1L << (31-i));
+  return m;
+}
+
+
+#ifdef HAVE_GETIFADDRS
+static int
+mask_width (unsigned int mask)
+{
+  int i;
+  for (i = 0; i < 32; i++)
+    if (mask & (1 << i))
+      break;
+  return 32-i;
+}
+#endif
+
+
 /* Generate a list of bogies consisting of all of the entries on
   the same subnet.  'base' ip is in network order; 0 means localhost.
  */
 static sonar_bogie *
 /* Generate a list of bogies consisting of all of the entries on
   the same subnet.  'base' ip is in network order; 0 means localhost.
  */
 static sonar_bogie *
-subnet_hosts (sonar_sensor_data *ssd, char **error_ret,
+subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
               unsigned long n_base, int subnet_width)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   unsigned long h_mask;   /* host order */
   unsigned long h_base;   /* host order */
               unsigned long n_base, int subnet_width)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   unsigned long h_mask;   /* host order */
   unsigned long h_base;   /* host order */
-
-  /* Local Variables */
-
-  char hostname[BUFSIZ];
   char address[BUFSIZ];
   char address[BUFSIZ];
-  struct hostent *hent;
   char *p;
   int i;
   sonar_bogie *new;
   char *p;
   int i;
   sonar_bogie *new;
@@ -532,79 +566,172 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret,
   if (pd->debug_p)
     fprintf (stderr, "%s:   adding %d-bit subnet\n", progname, subnet_width);
 
   if (pd->debug_p)
     fprintf (stderr, "%s:   adding %d-bit subnet\n", progname, subnet_width);
 
-  /* Get our hostname */
 
 
-  if (gethostname(hostname, BUFSIZ)) 
+  if (! n_base)
     {
     {
-      *error_ret = strdup ("Unable to determine\n"
-                           "local host name!");
-      return 0;
-    }
+# ifdef HAVE_GETIFADDRS
 
 
-  /* Get our IP address and convert it to a string */
+      /* To determine the local subnet, we need to know the local IP address.
+         Do this by looking at the IPs of every network interface.
+      */
+      struct in_addr in = { 0, };
+      struct ifaddrs *all = 0, *ifa;
+
+      if (pd->debug_p)
+        fprintf (stderr, "%s:   listing network interfaces\n", progname);
+
+      getifaddrs (&all);
+      for (ifa = all; ifa; ifa = ifa->ifa_next)
+        {
+          struct in_addr in2;
+          unsigned long mask;
+          if (ifa->ifa_addr->sa_family != AF_INET)
+            {
+              if (pd->debug_p)
+                fprintf (stderr, "%s:     if: %4s: %s\n", progname,
+                         ifa->ifa_name,
+                         (ifa->ifa_addr->sa_family == AF_UNIX  ? "local" :
+                          ifa->ifa_addr->sa_family == AF_LINK  ? "link"  :
+                          ifa->ifa_addr->sa_family == AF_INET6 ? "ipv6"  :
+                          "other"));
+              continue;
+            }
+          in2 = ((struct sockaddr_in *) ifa->ifa_addr)->sin_addr;
+          mask = ntohl (((struct sockaddr_in *) ifa->ifa_netmask)
+                        ->sin_addr.s_addr);
+          if (pd->debug_p)
+            fprintf (stderr, "%s:     if: %4s: inet = %s /%d 0x%08lx\n",
+                     progname,
+                     ifa->ifa_name,
+                     inet_ntoa (in2),
+                     mask_width (mask),
+                     mask);
+          if (in2.s_addr == 0x0100007f ||   /* 127.0.0.1 in network order */
+              mask == 0)
+            continue;
+
+          /* At least on the AT&T 3G network, pinging either of the two
+             hosts on a /31 network doesn't work, so don't try.
+           */
+          if (mask_width (mask) == 31)
+            {
+              char buf[255];
+              sprintf (buf,
+                       "Can't ping subnet:\n"
+                       "local network is\n"
+                       "%s/%d,\n"
+                       "a p2p bridge\n"
+                       "on if %s.",
+                       inet_ntoa (in2), mask_width (mask), ifa->ifa_name);
+              if (*error_ret) free (*error_ret);
+              *error_ret = strdup (buf);
+              continue;
+            }
+
+          in = in2;
+          subnet_width = mask_width (mask);
+        }
+
+      if (in.s_addr)
+        {
+          if (*error_ret) free (*error_ret);
+          *error_ret = 0;
+          n_base = in.s_addr;  /* already in network order, I think? */
+        }
+      else if (!*error_ret)
+        *error_ret = strdup ("Unable to determine\nlocal IP address\n");
+
+      if (all) 
+        freeifaddrs (all);
+
+      if (*error_ret)
+        return 0;
+
+# else /* !HAVE_GETIFADDRS */
+
+      /* If we can't walk the list of network interfaces to figure out
+         our local IP address, try to do it by finding the local host
+         name, then resolving that.
+      */
+      char hostname[BUFSIZ];
+      struct hostent *hent = 0;
+
+      if (gethostname(hostname, BUFSIZ)) 
+        {
+          *error_ret = strdup ("Unable to determine\n"
+                               "local host name!");
+          return 0;
+        }
+
+      /* Get our IP address and convert it to a string */
 
 
-  hent = gethostbyname(hostname);
-  if (! hent)
-    {
-      strcat (hostname, ".local");     /* Necessary on iphone */
       hent = gethostbyname(hostname);
       hent = gethostbyname(hostname);
-    }
+      if (! hent)
+        {
+          strcat (hostname, ".local"); /* Necessary on iphone */
+          hent = gethostbyname(hostname);
+        }
 
 
-  if (! hent)
-    {
-      /* Without being able to resolve localhost to an IP, we don't know
-         what our local subnet is.  I don't know another way to find that,
-         short of running "ifconfig" and parsing the output...
-       */
-      sprintf(buf, 
-              "Unable to resolve\n"
-              "local host \"%s\"", 
-              hostname);
-      *error_ret = strdup(buf);
-      return 0;
+      if (! hent)
+        {
+          sprintf(buf, 
+                  "Unable to resolve\n"
+                  "local host \"%s\"", 
+                  hostname);
+          *error_ret = strdup(buf);
+          return 0;
+        }
+
+      strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0])));
+      n_base = pack_addr (hent->h_addr_list[0][0],
+                          hent->h_addr_list[0][1],
+                          hent->h_addr_list[0][2],
+                          hent->h_addr_list[0][3]);
+
+      if (n_base == 0x0100007f)   /* 127.0.0.1 in network order */
+        {
+          unsigned int a, b, c, d;
+          unpack_addr (n_base, &a, &b, &c, &d);
+          sprintf (buf,
+                   "Unable to determine\n"
+                   "local subnet address:\n"
+                   "\"%s\"\n"
+                   "resolves to\n"
+                   "loopback address\n"
+                   "%u.%u.%u.%u.",
+                   hostname, a, b, c, d);
+          *error_ret = strdup(buf);
+          return 0;
+        }
+
+# endif /* !HAVE_GETIFADDRS */
     }
 
     }
 
-  strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0])));
 
   /* Construct targets for all addresses in this subnet */
 
 
   /* Construct targets for all addresses in this subnet */
 
-  h_mask = 0;
-  for (i = 0; i < subnet_width; i++)
-    h_mask |= (1L << (31-i));
-
-  /* If no base IP specified, assume localhost. */
-  if (n_base == 0)
-    n_base = pack_addr (hent->h_addr_list[0][0],
-                        hent->h_addr_list[0][1],
-                        hent->h_addr_list[0][2],
-                        hent->h_addr_list[0][3]);
+  h_mask = width_mask (subnet_width);
   h_base = ntohl (n_base);
 
   h_base = ntohl (n_base);
 
-  if (h_base == 0x7F000001L)   /* 127.0.0.1 in host order */
-    {
-      unsigned int a, b, c, d;
-      unpack_addr (n_base, &a, &b, &c, &d);
-      sprintf (buf,
-               "Unable to determine\n"
-               "local subnet address:\n"
-               "\"%s\"\n"
-               "resolves to\n"
-               "loopback address\n"
-               "%u.%u.%u.%u.",
-               hostname, a, b, c, d);
-      *error_ret = strdup(buf);
-      return 0;
-    }
+  if (desc_ret && !*desc_ret) {
+    unsigned int a, b, c, d;
+    char buf[255];
+    unpack_addr (n_base, &a, &b, &c, &d);
+    sprintf (buf, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width);
+    *desc_ret = strdup (buf);
+  }
 
   for (i = 255; i >= 0; i--) {
     unsigned int a, b, c, d;
     int ip = (h_base & 0xFFFFFF00L) | i;     /* host order */
       
 
   for (i = 255; i >= 0; i--) {
     unsigned int a, b, c, d;
     int ip = (h_base & 0xFFFFFF00L) | i;     /* host order */
       
-    if ((ip & h_mask) != (h_base & h_mask))  /* not in mask range at all */
+    if ((ip & h_mask) != (h_base & h_mask))  /* skip out-of-subnet host */
       continue;
       continue;
-    if ((ip & ~h_mask) == 0)                 /* broadcast address */
+    else if (subnet_width == 31)            /* 1-bit bridge: 2 hosts */
+      ;
+    else if ((ip & ~h_mask) == 0)           /* skip network address */
       continue;
       continue;
-    if ((ip & ~h_mask) == ~h_mask)           /* broadcast address */
+    else if ((ip & ~h_mask) == ~h_mask)             /* skip broadcast address */
       continue;
 
     unpack_addr (htonl (ip), &a, &b, &c, &d);
       continue;
 
     unpack_addr (htonl (ip), &a, &b, &c, &d);
@@ -749,7 +876,7 @@ checksum (u_short *packet, int size)
 static sonar_bogie *
 copy_ping_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 {
 static sonar_bogie *
 copy_ping_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 {
-  sonar_bogie *b2 = copy_bogie (ssd, b);
+  sonar_bogie *b2 = sonar_copy_bogie (ssd, b);
   if (b->closure)
     {
       ping_bogie *pb  = (ping_bogie *) b->closure;
   if (b->closure)
     {
       ping_bogie *pb  = (ping_bogie *) b->closure;
@@ -949,7 +1076,7 @@ ping_free_data (sonar_sensor_data *ssd, void *closure)
   while (b)
     {
       sonar_bogie *b2 = b->next;
   while (b)
     {
       sonar_bogie *b2 = b->next;
-      free_bogie (ssd, b);
+      sonar_free_bogie (ssd, b);
       b = b2;
     }
   free (pd);
       b = b2;
     }
   free (pd);
@@ -1007,25 +1134,32 @@ ping_scan (sonar_sensor_data *ssd)
 /* Returns a list of hosts to ping based on the "-ping" argument.
  */
 static sonar_bogie *
 /* Returns a list of hosts to ping based on the "-ping" argument.
  */
 static sonar_bogie *
-parse_mode (sonar_sensor_data *ssd, char **error_ret,
+parse_mode (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
             const char *ping_arg, Bool ping_works_p)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   char *source, *token, *end, dummy;
   sonar_bogie *hostlist = 0;
             const char *ping_arg, Bool ping_works_p)
 {
   ping_data *pd = (ping_data *) ssd->closure;
   char *source, *token, *end, dummy;
   sonar_bogie *hostlist = 0;
+  const char *fallback = "subnet";
 
 
-  if (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default"))
-    source = strdup("subnet/28");
-  else
+ AGAIN:
+
+  if (fallback && (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default")))
+    source = strdup(fallback);
+  else if (ping_arg)
     source = strdup(ping_arg);
     source = strdup(ping_arg);
+  else
+    return 0;
 
   token = source;
   end = source + strlen(source);
   while (token < end)
     {
       char *next;
 
   token = source;
   end = source + strlen(source);
   while (token < end)
     {
       char *next;
-      sonar_bogie *new;
+      sonar_bogie *new = 0;
+# ifdef READ_FILES
       struct stat st;
       struct stat st;
+# endif
       unsigned int n0=0, n1=0, n2=0, n3=0, m=0;
       char d;
 
       unsigned int n0=0, n1=0, n2=0, n3=0, m=0;
       char d;
 
@@ -1054,7 +1188,7 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
              subnet: A.B.C/M
            */
           unsigned long ip = pack_addr (n0, n1, n2, n3);
              subnet: A.B.C/M
            */
           unsigned long ip = pack_addr (n0, n1, n2, n3);
-          new = subnet_hosts (ssd, error_ret, ip, m);
+          new = subnet_hosts (ssd, error_ret, desc_ret, ip, m);
         }
       else if (4 == sscanf (token, "%u.%u.%u.%u %c", &n0, &n1, &n2, &n3, &d))
         {
         }
       else if (4 == sscanf (token, "%u.%u.%u.%u %c", &n0, &n1, &n2, &n3, &d))
         {
@@ -1064,20 +1198,27 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
         }
       else if (!strcmp (token, "subnet"))
         {
         }
       else if (!strcmp (token, "subnet"))
         {
-          new = subnet_hosts (ssd, error_ret, 0, 24);
+          new = subnet_hosts (ssd, error_ret, desc_ret, 0, 24);
         }
       else if (1 == sscanf (token, "subnet/%u %c", &m, &dummy))
         {
         }
       else if (1 == sscanf (token, "subnet/%u %c", &m, &dummy))
         {
-          new = subnet_hosts (ssd, error_ret, 0, m);
+          new = subnet_hosts (ssd, error_ret, desc_ret, 0, m);
         }
       else if (*token == '.' || *token == '/' || 
         }
       else if (*token == '.' || *token == '/' || 
-               *token == '$' || *token == '~' ||
-               !stat (token, &st))
+               *token == '$' || *token == '~')
         {
         {
-          /* file name
-           */
+# ifdef READ_FILES
           new = read_hosts_file (ssd, token);
           new = read_hosts_file (ssd, token);
+# else
+          if (pd->debug_p) fprintf (stderr, "%s:  skipping file\n", progname);
+# endif
         }
         }
+# ifdef READ_FILES
+      else if (!stat (token, &st))
+        {
+          new = read_hosts_file (ssd, token);
+        }
+# endif /* READ_FILES */
       else
         {
           /* not an existant file - must be a host name
       else
         {
           /* not an existant file - must be a host name
@@ -1102,20 +1243,35 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret,
     }
 
   free (source);
     }
 
   free (source);
+
+  /* If the arg was completely unparsable, fall back to the local subnet.
+     This happens if the default is "/etc/hosts" but READ_FILES is off.
+     Or if we're on a /31 network, in which case we try twice then fail.
+   */
+  if (!hostlist && fallback)
+    {
+      if (pd->debug_p)
+        fprintf (stderr, "%s: no hosts parsed! Trying %s\n", 
+                 progname, fallback);
+      ping_arg = fallback;
+      fallback = 0;
+      goto AGAIN;
+    }
+
   return hostlist;
 }
 
 
 sonar_sensor_data *
   return hostlist;
 }
 
 
 sonar_sensor_data *
-init_ping (Display *dpy, char **error_ret, 
-           const char *subnet, int timeout,
-           Bool resolve_p, Bool times_p, Bool debug_p)
+sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret,
+                 const char *subnet, int timeout,
+                 Bool resolve_p, Bool times_p, Bool debug_p)
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   ping_data *pd = (ping_data *) calloc (1, sizeof(*pd));
   sonar_bogie *b;
   char *s;
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   ping_data *pd = (ping_data *) calloc (1, sizeof(*pd));
   sonar_bogie *b;
   char *s;
-  int i, div;
+  int i;
 
   Bool socket_initted_p = False;
   Bool socket_raw_p     = False;
 
   Bool socket_initted_p = False;
   Bool socket_raw_p     = False;
@@ -1188,7 +1344,8 @@ init_ping (Display *dpy, char **error_ret,
 
   /* Generate a list of targets */
 
 
   /* Generate a list of targets */
 
-  pd->targets = parse_mode (ssd, error_ret, subnet, socket_initted_p);
+  pd->targets = parse_mode (ssd, error_ret, desc_ret, subnet,
+                            socket_initted_p);
   pd->targets = delete_duplicate_hosts (ssd, pd->targets);
 
   if (debug_p)
   pd->targets = delete_duplicate_hosts (ssd, pd->targets);
 
   if (debug_p)
@@ -1220,12 +1377,21 @@ init_ping (Display *dpy, char **error_ret,
       return 0;
     }
 
       return 0;
     }
 
-  /* Distribute them evenly around the display field.
+  /* Distribute them evenly around the display field, clockwise.
+     Even on a /24, allocated IPs tend to cluster together, so
+     don't put any two hosts closer together than N degrees to
+     avoid unnecessary overlap when we have plenty of space due
+     to addresses that probably won't respond.
    */
    */
-  div = pd->target_count;
-  if (div > 90) div = 90;  /* no closer together than 4 degrees */
-  for (i = 0, b = pd->targets; b; b = b->next, i++)
-    b->th = M_PI * 2 * ((div - i) % div) / div;
+  {
+    int min_separation = 23;  /* degrees */
+    int div = pd->target_count;
+    if (div > 360 / min_separation)
+      div = 360 / min_separation;
+    for (i = 0, b = pd->targets; b; b = b->next, i++)
+      b->th = (M_PI/2 -
+               M_PI * 2 * ((div - i) % div) / div);
+  }
 
   return ssd;
 }
 
   return ssd;
 }
index f87de66491b6adb5ac7fc806040d618ddb3c4181..ea5452e7e21305e37c196afe479a08148602d53b 100644 (file)
@@ -1,4 +1,4 @@
-/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin
+/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -53,7 +53,7 @@ sim_scan (sonar_sensor_data *ssd)
       while (b->r < 0.2) b->r += scale * 0.1;
       while (b->r > 0.9) b->r -= scale * 0.1;
 
       while (b->r < 0.2) b->r += scale * 0.1;
       while (b->r > 0.9) b->r -= scale * 0.1;
 
-      b2 = copy_bogie (ssd, b);
+      b2 = sonar_copy_bogie (ssd, b);
       b2->next = list;
       list = b2;
     }
       b2->next = list;
       list = b2;
     }
@@ -86,10 +86,10 @@ make_bogies (sonar_sensor_data *ssd)
 
 
 sonar_sensor_data *
 
 
 sonar_sensor_data *
-init_simulation (Display *dpy, char **error_ret,
-                 const char *team_a_name, const char *team_b_name,
-                 int team_a_count, int team_b_count,
-                 Bool debug_p)
+sonar_init_simulation (Display *dpy, char **error_ret, char **desc_ret,
+                       const char *team_a_name, const char *team_b_name,
+                       int team_a_count, int team_b_count,
+                       Bool debug_p)
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   sim_data *sd = (sim_data *) calloc (1, sizeof(*sd));
 {
   sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd));
   sim_data *sd = (sim_data *) calloc (1, sizeof(*sd));
index ac51a2ce1feb3a1a55ff186048482ba9b6834f5f..bafb43edc17d3bee72e519e7b72e0e235305a426 100644 (file)
  *
  * It should be easy to extend this code to support other sorts of sensors.
  * Some ideas:
  *
  * It should be easy to extend this code to support other sorts of sensors.
  * Some ideas:
+ *
  *   - search the output of "netstat" for the list of hosts to ping;
  *   - plot the contents of /proc/interrupts;
  *   - plot the process table, by process size, cpu usage, or total time;
  *   - plot the logged on users by idle time or cpu usage.
  *   - search the output of "netstat" for the list of hosts to ping;
  *   - plot the contents of /proc/interrupts;
  *   - plot the process table, by process size, cpu usage, or total time;
  *   - plot the logged on users by idle time or cpu usage.
- *
+ *   - plot IM contacts or Facebook friends and their last-activity times.
  */
 
 #define DEF_FONT "-*-lucidatypewriter-bold-r-normal-*-*-480-*-*-*-*-iso8859-1"
  */
 
 #define DEF_FONT "-*-lucidatypewriter-bold-r-normal-*-*-480-*-*-*-*-iso8859-1"
@@ -108,8 +109,10 @@ typedef struct {
 
   texture_font_data *texfont;
 
 
   texture_font_data *texfont;
 
+  enum { MSG, RESOLVE, RUN } state;
   sonar_sensor_data *ssd;
   char *error;
   sonar_sensor_data *ssd;
   char *error;
+  char *desc;
 
   sonar_bogie *displayed;      /* on screen and fading */
   sonar_bogie *pending;                /* returned by sensor, not yet on screen */
 
   sonar_bogie *displayed;      /* on screen and fading */
   sonar_bogie *pending;                /* returned by sensor, not yet on screen */
@@ -331,10 +334,10 @@ draw_text (ModeInfo *mi, const char *string, GLfloat r, GLfloat th,
   char *string2 = strdup (string);
   char *token = string2;
   char *line;
   char *string2 = strdup (string);
   char *token = string2;
   char *line;
-  GLfloat color[4];
 
   if (size <= 0)   /* if size not specified, draw in yellow with alpha */
     {
 
   if (size <= 0)   /* if size not specified, draw in yellow with alpha */
     {
+      GLfloat color[4];
       color[0] = 1;
       color[1] = 1;
       color[2] = 0;
       color[0] = 1;
       color[1] = 1;
       color[2] = 0;
@@ -499,7 +502,7 @@ draw_bogies (ModeInfo *mi)
 
 /* called from sonar-sim.c and sonar-icmp.c */
 sonar_bogie *
 
 /* called from sonar-sim.c and sonar-icmp.c */
 sonar_bogie *
-copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
+sonar_copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 {
   sonar_bogie *b2 = (sonar_bogie *) calloc (1, sizeof(*b2));
   b2->name = strdup (b->name);
 {
   sonar_bogie *b2 = (sonar_bogie *) calloc (1, sizeof(*b2));
   b2->name = strdup (b->name);
@@ -519,7 +522,7 @@ copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b)
 
 /* called from sonar-icmp.c */
 void
 
 /* called from sonar-icmp.c */
 void
-free_bogie (sonar_sensor_data *ssd, sonar_bogie *b)
+sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b)
 {
   if (b->closure)
     ssd->free_bogie_cb (ssd, b->closure);
 {
   if (b->closure)
     ssd->free_bogie_cb (ssd, b->closure);
@@ -542,7 +545,7 @@ delete_bogie (sonar_sensor_data *ssd, sonar_bogie *b,
           prev->next = b->next;
         else
           (*from_list) = b->next;
           prev->next = b->next;
         else
           (*from_list) = b->next;
-        free_bogie (ssd, b);
+        sonar_free_bogie (ssd, b);
         break;
       }
 }
         break;
       }
 }
@@ -569,7 +572,7 @@ copy_and_insert_bogie (sonar_sensor_data *ssd, sonar_bogie *b,
         }
     }
 
         }
     }
 
-  b = copy_bogie (ssd, b);
+  b = sonar_copy_bogie (ssd, b);
   b->next = *to_list;
   *to_list = b;
 }
   b->next = *to_list;
   *to_list = b;
 }
@@ -727,7 +730,7 @@ draw_startup_blurb (ModeInfo *mi)
 
   /* only leave error message up for N seconds */
   if (sp->error &&
 
   /* only leave error message up for N seconds */
   if (sp->error &&
-      sp->start_time + 4 < double_time())
+      sp->start_time + 6 < double_time())
     {
       free (sp->error);
       sp->error = 0;
     {
       free (sp->error);
       sp->error = 0;
@@ -852,6 +855,7 @@ init_sonar (ModeInfo *mi)
   sp->start_time = double_time ();
   sp->sweep_offset = random() % 60;
   sp->sweep_th = -1;
   sp->start_time = double_time ();
   sp->sweep_offset = random() % 60;
   sp->sweep_th = -1;
+  sp->state = MSG;
 }
 
 
 }
 
 
@@ -865,18 +869,21 @@ init_sensor (ModeInfo *mi)
   if (!ping_arg || !*ping_arg ||
       !strcmp(ping_arg, "default") ||
       !!strcmp (ping_arg, "simulation"))
   if (!ping_arg || !*ping_arg ||
       !strcmp(ping_arg, "default") ||
       !!strcmp (ping_arg, "simulation"))
-    sp->ssd = init_ping (MI_DISPLAY (mi), &sp->error, ping_arg,
-                         ping_timeout, resolve_p, times_p, debug_p);
+    sp->ssd = sonar_init_ping (MI_DISPLAY (mi), &sp->error, &sp->desc,
+                               ping_arg, ping_timeout, resolve_p, times_p,
+                               debug_p);
+
+  sp->start_time = double_time ();  /* for error message timing */
 
   /* Disavow privs.  This was already done in init_ping(), but
      we might not have called that at all, so do it again. */
   setuid(getuid());
 
   if (!sp->ssd)
 
   /* Disavow privs.  This was already done in init_ping(), but
      we might not have called that at all, so do it again. */
   setuid(getuid());
 
   if (!sp->ssd)
-    sp->ssd = init_simulation (MI_DISPLAY (mi), &sp->error,
-                               team_a_name, team_b_name,
-                               team_a_count, team_b_count,
-                               debug_p);
+    sp->ssd = sonar_init_simulation (MI_DISPLAY (mi), &sp->error, &sp->desc,
+                                     team_a_name, team_b_name,
+                                     team_a_count, team_b_count,
+                                     debug_p);
   if (!sp->ssd)
     abort();
 }
   if (!sp->ssd)
     abort();
 }
@@ -923,6 +930,8 @@ draw_sonar (ModeInfo *mi)
     }
 
   glPushMatrix ();
     }
 
   glPushMatrix ();
+  glRotatef(current_device_rotation(), 0, 0, 1);
+
   {
     GLfloat s = 7;
     if (MI_WIDTH(mi) < MI_HEIGHT(mi))
   {
     GLfloat s = 7;
     if (MI_WIDTH(mi) < MI_HEIGHT(mi))
@@ -931,7 +940,6 @@ draw_sonar (ModeInfo *mi)
   }
 
   gltrackball_rotate (sp->trackball);
   }
 
   gltrackball_rotate (sp->trackball);
-  glRotatef(current_device_rotation(), 0, 0, 1);
 
   if (wobble_p)
     {
 
   if (wobble_p)
     {
@@ -969,8 +977,33 @@ draw_sonar (ModeInfo *mi)
   glCallList (sp->grid_list);
   mi->polygon_count += sp->screen_polys;
 
   glCallList (sp->grid_list);
   mi->polygon_count += sp->screen_polys;
 
-  if (! sp->ssd || sp->error)
+  if (sp->desc)                                                /* local subnet */
+    {
+      glPushMatrix();
+      glTranslatef (0, 0, 0.00002);
+      mi->polygon_count += draw_text (mi, sp->desc, 1.35, M_PI * 0.75, 0, 10);
+      /* glRotatef (45, 0, 0, 1); */
+      /* mi->polygon_count += draw_text (mi, sp->desc, 1.2, M_PI/2, 0, 10); */
+      glPopMatrix();
+    }
+
+  if (sp->error)
+    sp->state = MSG;
+
+  switch (sp->state) {
+  case MSG:                    /* Frame 1: get "Resolving Hosts" on screen. */
     draw_startup_blurb(mi);
     draw_startup_blurb(mi);
+    sp->state++;
+    break;
+  case RESOLVE:                        /* Frame 2: gethostbyaddr may take a while. */
+    if (! sp->ssd)
+      init_sensor (mi);
+    sp->state++;
+    break;
+  case RUN:                    /* Frame N: ping away */
+    sweep (sp);
+    break;
+  }
 
   glPopMatrix ();
 
 
   glPopMatrix ();
 
@@ -978,12 +1011,6 @@ draw_sonar (ModeInfo *mi)
   glFinish();
 
   glXSwapBuffers(dpy, window);
   glFinish();
 
   glXSwapBuffers(dpy, window);
-
-  if (! sp->ssd)
-    /* Just starting up.  "Resolving hosts" text printed.  Go stall. */
-    init_sensor (mi);
-  else
-    sweep (sp);
 }
 
 ENTRYPOINT void
 }
 
 ENTRYPOINT void
index 595dcac95e67f4a128b812876814778b7584cbf0..d6473e003e47de2684b58e72086538d1984d3aa9 100644 (file)
@@ -1,4 +1,4 @@
-/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin
+/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -42,27 +42,30 @@ struct sonar_sensor_data {
 };
 
 /* frees bogie and its contents, including calling the free_bogie_cb. */
 };
 
 /* frees bogie and its contents, including calling the free_bogie_cb. */
-extern void free_bogie (sonar_sensor_data *ssd, sonar_bogie *b);
+extern void sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b);
 
 /* makes a copy of the bogie, not including the 'closure' data. */
 
 /* makes a copy of the bogie, not including the 'closure' data. */
-extern sonar_bogie *copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b);
+extern sonar_bogie *sonar_copy_bogie (sonar_sensor_data *,
+                                      const sonar_bogie *);
 
 
 /* Set up and return sensor state for ICMP pings. */
 
 
 /* Set up and return sensor state for ICMP pings. */
-extern sonar_sensor_data *init_ping (Display *dpy, 
-                                     char **error_ret,
-                                     const char *subnets,
-                                     int ping_timeout,
-                                     Bool resolve_p, Bool times_p,
-                                     Bool debug_p);
-
-/* Set up and return sensor state for the simulation. */
-extern sonar_sensor_data *init_simulation (Display *dpy,
+extern sonar_sensor_data *sonar_init_ping (Display *dpy, 
                                            char **error_ret,
                                            char **error_ret,
-                                           const char *team_a_name, 
-                                           const char *team_b_name,
-                                           int team_a_count, 
-                                           int team_b_count,
+                                           char **desc_ret,
+                                           const char *subnets,
+                                           int ping_timeout,
+                                           Bool resolve_p, Bool times_p,
                                            Bool debug_p);
 
                                            Bool debug_p);
 
+/* Set up and return sensor state for the simulation. */
+extern sonar_sensor_data *sonar_init_simulation (Display *dpy,
+                                                 char **error_ret,
+                                                 char **desc_ret,
+                                                 const char *team_a_name, 
+                                                 const char *team_b_name,
+                                                 int team_a_count, 
+                                                 int team_b_count,
+                                                 Bool debug_p);
+
 #endif /* __SONAR_XSCREENSAVER_H__ */
 #endif /* __SONAR_XSCREENSAVER_H__ */
index bb3b07e1ea1128017a551398d1956b6b77f97e17..9927b3bb56cfbc7e1eaba3aabc04c54e446cb308 100644 (file)
@@ -54,19 +54,22 @@ Run in simulation mode instead of pinging real hosts.
 Ping the given host.
 .TP 12
 .I A.B.C.D
 Ping the given host.
 .TP 12
 .I A.B.C.D
-Ping the given IP address.
+Ping the given IPv4 address.
 .TP 12
 .B subnet
 .TP 12
 .B subnet
-Ping the local class C subnet (the nearest 255 addresses).
+Ping the local subnet.  On systems where we can determine the local
+network mask, we use that; otherwise, we assume Class C (254 hosts).
 .TP 12
 .B subnet/\fINN\fP
 Ping a different-sized local subnet: e.g., \fBsubnet/28\fP would ping
 .TP 12
 .B subnet/\fINN\fP
 Ping a different-sized local subnet: e.g., \fBsubnet/28\fP would ping
-a 4-bit subnet (the nearest 15 addresses).
+a 4-bit subnet (the nearest 14 addresses).  On systems where we can
+determine the local network mask, we always use that.
 .TP 12
 .I A.B.C.D/NN
 .TP 12
 .I A.B.C.D/NN
-Ping an arbitrary other subnet.  The IP address specifies the base address,
-and the part after the slash is how wide the subnet is.  Typical values
-are /24 (for 255 addresses) and /28 (for 15 addresses).
+Ping an arbitrary other IPv4 subnet.  The address specifies
+the base address, and the part after the slash is how wide the
+subnet is.  Typical values are /24 (for 254 addresses) and /28 (for
+14 addresses).
 .TP 12
 .I filename
 Ping the hosts listed in the given file.  This file can be in the
 .TP 12
 .I filename
 Ping the hosts listed in the given file.  This file can be in the
@@ -138,12 +141,15 @@ This means that if any the hosts you are pinging take longer than 2
 seconds to respond, they won't show up; and if you are pinging several
 hosts with very fast response times, they will all appear close to the
 center of the screen (making their names hard to read.)
 seconds to respond, they won't show up; and if you are pinging several
 hosts with very fast response times, they will all appear close to the
 center of the screen (making their names hard to read.)
+.SH BUGS
+Does not support IPv6.
 .SH SEE ALSO
 .BR X (1),
 .BR xscreensaver (1),
 .SH SEE ALSO
 .BR X (1),
 .BR xscreensaver (1),
-.BR ping (8)
+.BR ping (8),
+.BR ping6 (8)
 .SH COPYRIGHT
 .SH COPYRIGHT
-Copyright \(co 2000-2008 by Jamie Zawinski <jwz@jwz.org>
+Copyright \(co 2000-2012 by Jamie Zawinski <jwz@jwz.org>
 .RE
 Copyright \(co 1998 by Stephen Martin. <smartin@canada.com>
 
 .RE
 Copyright \(co 1998 by Stephen Martin. <smartin@canada.com>
 
index 4ad36c8e170ad98bd5ed9e750e8dd780741bfcb3..0da7b0c77c49e94aba190178a8e3618fc9d84db3 100644 (file)
@@ -851,7 +851,10 @@ draw_spheremonics (ModeInfo *mi)
                  (y - 0.5) * 6,
                  (z - 0.5) * 8);
 
                  (y - 0.5) * 6,
                  (z - 0.5) * 8);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (cc->trackball);
     gltrackball_rotate (cc->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 0bd61c2e62ac0ee19bfe7372e1e2cacf52fe83d8..b300ee13c1126b57c3ea588cb091b1b1616c69d5 100644 (file)
@@ -496,6 +496,7 @@ ENTRYPOINT void
 draw_stairs (ModeInfo * mi)
 {
        stairsstruct *sp = &stairs[MI_SCREEN(mi)];
 draw_stairs (ModeInfo * mi)
 {
        stairsstruct *sp = &stairs[MI_SCREEN(mi)];
+    GLfloat rot = current_device_rotation();
 
        Display    *display = MI_DISPLAY(mi);
        Window      window = MI_WINDOW(mi);
 
        Display    *display = MI_DISPLAY(mi);
        Window      window = MI_WINDOW(mi);
@@ -509,6 +510,14 @@ draw_stairs (ModeInfo * mi)
 
        glPushMatrix();
 
 
        glPushMatrix();
 
+    glRotatef(rot, 0, 0, 1);
+    if ((rot >  45 && rot <  135) ||
+        (rot < -45 && rot > -135))
+      {
+        GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi);
+        glScalef (s, 1/s, 1);
+      }
+
        glTranslatef(0.0, 0.0, -10.0);
 
        if (!MI_IS_ICONIC(mi)) {
        glTranslatef(0.0, 0.0, -10.0);
 
        if (!MI_IS_ICONIC(mi)) {
@@ -518,7 +527,6 @@ draw_stairs (ModeInfo * mi)
        }
 
     gltrackball_rotate (sp->trackball);
        }
 
     gltrackball_rotate (sp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     glTranslatef(0, 0.5, 0);
        glRotatef(44.5, 1, 0, 0);
 
     glTranslatef(0, 0.5, 0);
        glRotatef(44.5, 1, 0, 0);
index b8a2041b17b4fb1fffd3359d2dd382b77fba8508..fc2931d4a4bc5d81e9e2eef4ac7c1cdc88dd5c3d 100644 (file)
@@ -32,7 +32,7 @@
 
 
 void
 
 
 void
-init_move(stonerview_state *st)
+stonerview_init_move(stonerview_state *st)
 {
   /*st->theta = new_osc_linear(
     new_osc_wrap(0, 36000, 25),
 {
   /*st->theta = new_osc_linear(
     new_osc_wrap(0, 36000, 25),
@@ -95,15 +95,12 @@ init_move(stonerview_state *st)
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 17)),
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 7)));
 
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 17)),
     new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 7)));
 
-  move_increment(st);
-}
-
-void final_move(stonerview_state *st)
-{
+  stonerview_move_increment(st);
 }
 
 /* Set up the list of polygon data for rendering. */
 }
 
 /* Set up the list of polygon data for rendering. */
-void move_increment(stonerview_state *st)
+void
+stonerview_move_increment(stonerview_state *st)
 {
   int ix, val;
 /*  GLfloat fval; */
 {
   int ix, val;
 /*  GLfloat fval; */
@@ -112,7 +109,7 @@ void move_increment(stonerview_state *st)
   GLfloat ptrad, pttheta;
     
   for (ix=0; ix<st->num_els; ix++) {
   GLfloat ptrad, pttheta;
     
   for (ix=0; ix<st->num_els; ix++) {
-    elem_t *el = &st->elist[ix];
+    stonerview_elem_t *el = &st->elist[ix];
         
     /* Grab r and theta... */
     val = osc_get(st, st->theta, ix);
         
     /* Grab r and theta... */
     val = osc_get(st, st->theta, ix);
index 096dbbc105c8697e3053cc1c135b8a6784e1d59c..a3e0acd281c5899fb7d8fd54aecc153e7380e480 100644 (file)
 #ifndef __STONERVIEW_MOVE_H__
 #define __STONERVIEW_MOVE_H__
 
 #ifndef __STONERVIEW_MOVE_H__
 #define __STONERVIEW_MOVE_H__
 
-typedef struct elem_struct {
+typedef struct {
   GLfloat pos[3];
   GLfloat vervec[2];
   GLfloat col[4];
   GLfloat pos[3];
   GLfloat vervec[2];
   GLfloat col[4];
-} elem_t;
+} stonerview_elem_t;
 
 
-extern void init_move(stonerview_state *);
-extern void final_move(stonerview_state *);
-extern void move_increment(stonerview_state *);
+extern void stonerview_init_move(stonerview_state *);
+extern void stonerview_final_move(stonerview_state *);
+extern void stonerview_move_increment(stonerview_state *);
 
 
 
 
-extern stonerview_state * init_view(int wireframe_p, int transparent_p);
-extern void win_draw(stonerview_state *);
-extern void win_release(stonerview_state *);
+extern stonerview_state * stonerview_init_view(int wireframe_p, 
+                                               int transparent_p);
+extern void stonerview_win_draw(stonerview_state *);
+extern void stonerview_win_release(stonerview_state *);
 
 #endif /* __STONERVIEW_MOVE_H__ */
 
 #endif /* __STONERVIEW_MOVE_H__ */
index 08fc525e9a7e4a007f53dca57b4598307aa480c2..d66eab28ce505ac2a271f448a7f3841ddcb88651 100644 (file)
@@ -27,14 +27,14 @@ static GLfloat view_scale = 4.0;
 
 
 stonerview_state *
 
 
 stonerview_state *
-init_view(int wireframe_p, int transparent_p)
+stonerview_init_view(int wireframe_p, int transparent_p)
 {
   stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st));
 
   st->wireframe = wireframe_p;
   st->transparent = transparent_p;
   st->num_els = NUM_ELS;
 {
   stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st));
 
   st->wireframe = wireframe_p;
   st->transparent = transparent_p;
   st->num_els = NUM_ELS;
-  st->elist = (elem_t *) calloc (st->num_els, sizeof(*st->elist));
+  st->elist = (stonerview_elem_t *) calloc (st->num_els, sizeof(*st->elist));
 
   st->osctail = &st->oscroot;
 
 
   st->osctail = &st->oscroot;
 
@@ -59,7 +59,8 @@ init_view(int wireframe_p, int transparent_p)
 }
 
 /* callback: draw everything */
 }
 
 /* callback: draw everything */
-void win_draw(stonerview_state *st)
+void
+stonerview_win_draw(stonerview_state *st)
 {
   int ix;
   static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
 {
   int ix;
   static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
@@ -78,7 +79,7 @@ void win_draw(stonerview_state *st)
   glShadeModel(GL_FLAT);
 
   for (ix=0; ix < st->num_els; ix++) {
   glShadeModel(GL_FLAT);
 
   for (ix=0; ix < st->num_els; ix++) {
-    elem_t *el = &st->elist[ix];
+    stonerview_elem_t *el = &st->elist[ix];
 
     glNormal3f(0.0, 0.0, 1.0);
 
 
     glNormal3f(0.0, 0.0, 1.0);
 
@@ -106,7 +107,8 @@ void win_draw(stonerview_state *st)
   glPopMatrix();
 }
 
   glPopMatrix();
 }
 
-void win_release(stonerview_state *st)
+void
+stonerview_win_release(stonerview_state *st)
 {
   free (st->elist);
   /*free (st->oscroot);  -- #### how do we free this? */
 {
   free (st->elist);
   /*free (st->oscroot);  -- #### how do we free this? */
index 79b17fb6b5673958107de234e15a869790280ed7..0e11395e2ace623c7c2b8c2603daddba80e4e598 100644 (file)
@@ -95,8 +95,8 @@ init_stonerview (ModeInfo *mi)
   bp->glx_context = init_GL(mi);
 
   bp->trackball = gltrackball_init ();
   bp->glx_context = init_GL(mi);
 
   bp->trackball = gltrackball_init ();
-  bp->st = init_view(MI_IS_WIREFRAME(mi), transparent_p);
-  init_move(bp->st);
+  bp->st = stonerview_init_view(MI_IS_WIREFRAME(mi), transparent_p);
+  stonerview_init_move(bp->st);
 
   reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
   clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
 
   reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
   clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
@@ -111,10 +111,12 @@ draw_stonerview (ModeInfo *mi)
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
 
   glPushMatrix ();
   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
 
   glPushMatrix ();
+  glRotatef( current_device_rotation(), 0, 0, 1);
   gltrackball_rotate (bp->trackball);
   gltrackball_rotate (bp->trackball);
-  win_draw(bp->st);
+
+  stonerview_win_draw(bp->st);
   if (! bp->button_down_p)
   if (! bp->button_down_p)
-    move_increment(bp->st);
+    stonerview_move_increment(bp->st);
   glPopMatrix ();
 
   mi->polygon_count = NUM_ELS;
   glPopMatrix ();
 
   mi->polygon_count = NUM_ELS;
@@ -132,7 +134,7 @@ release_stonerview (ModeInfo *mi)
     for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
       stonerview_configuration *bp = &bps[screen];
       if (bp->st)
     for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
       stonerview_configuration *bp = &bps[screen];
       if (bp->st)
-        win_release (bp->st);
+        stonerview_win_release (bp->st);
     }
     free (bps);
     bps = 0;
     }
     free (bps);
     bps = 0;
index 0946923aafef2566f3953d376adfb7c639afe8ed..afbd53c51e8ff1422fd6df9cfb94093d30d9d630 100644 (file)
@@ -38,7 +38,7 @@ struct stonerview_state {
   /* The list of polygons. This is filled in by move_increment(), and rendered
      by perform_render(). */
   int num_els;
   /* The list of polygons. This is filled in by move_increment(), and rendered
      by perform_render(). */
   int num_els;
-  elem_t *elist;
+  stonerview_elem_t *elist;
 
   /* A linked list of all osc_t objects created. New objects are added
      to the end of the list, not the beginning. */
 
   /* A linked list of all osc_t objects created. New objects are added
      to the end of the list, not the beginning. */
index 459d12245a257e7b1af45c28288872b5ae46aced..9dac523bfb649778a38ad5aae086feccefa4fc75 100644 (file)
@@ -163,7 +163,10 @@ static void draw(ModeInfo *mi)
     get_position(sp->rot, &x, &y, &z, !sp->button_down_p);
     glTranslatef((x-0.5)*10, (y-0.5)*10, (z-0.5)*20);
 
     get_position(sp->rot, &x, &y, &z, !sp->button_down_p);
     glTranslatef((x-0.5)*10, (y-0.5)*10, (z-0.5)*20);
 
+    /* Do it twice because we don't track the device's orientation. */
+    glRotatef( current_device_rotation(), 0, 0, 1);
     gltrackball_rotate(sp->trackball);
     gltrackball_rotate(sp->trackball);
+    glRotatef(-current_device_rotation(), 0, 0, 1);
 
     get_rotation(sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef(x*360, 1.0, 0.0, 0.0);
 
     get_rotation(sp->rot, &x, &y, &z, !sp->button_down_p);
     glRotatef(x*360, 1.0, 0.0, 0.0);
index a7af6428f88954da8d13a1398381524ab908cdda..022477598dc3e5857fbad4085bac605008284dfd 100644 (file)
@@ -840,13 +840,13 @@ static void init_shapes(ModeInfo * mi)
                       &tp->tlg2, &tp->sq, &tp->rh);
     get_solved_puzzle(mi, &tp->n_tsm1, &tp->n_tsm2, &tp->n_tm, &tp->n_tlg1,
                       &tp->n_tlg2, &tp->n_sq, &tp->n_rh);
                       &tp->tlg2, &tp->sq, &tp->rh);
     get_solved_puzzle(mi, &tp->n_tsm1, &tp->n_tsm2, &tp->n_tm, &tp->n_tlg1,
                       &tp->n_tlg2, &tp->n_sq, &tp->n_rh);
-    tp->tsm1.dl = get_sm_tri_dl(wire);
-    tp->tsm2.dl = get_sm_tri_dl(wire);
-    tp->tm.dl = get_md_tri_dl(wire);
-    tp->tlg1.dl = get_lg_tri_dl(wire);
-    tp->tlg2.dl = get_lg_tri_dl(wire);
-    tp->sq.dl = get_square_dl(wire);
-    tp->rh.dl = get_rhomboid_dl(wire);
+    tp->tsm1.dl = tangram_get_sm_tri_dl(wire);
+    tp->tsm2.dl = tangram_get_sm_tri_dl(wire);
+    tp->tm.dl = tangram_get_md_tri_dl(wire);
+    tp->tlg1.dl = tangram_get_lg_tri_dl(wire);
+    tp->tlg2.dl = tangram_get_lg_tri_dl(wire);
+    tp->sq.dl = tangram_get_square_dl(wire);
+    tp->rh.dl = tangram_get_rhomboid_dl(wire);
 }
 
 static void gl_init(ModeInfo * mi)
 }
 
 static void gl_init(ModeInfo * mi)
index 32b7014c51bee5485352daea84ebc01e938a04c0..19f065b056f2dd43be07047bf255d1d2c1cf3ace 100644 (file)
@@ -29,7 +29,8 @@
 
 #define alpha (0.05)
 
 
 #define alpha (0.05)
 
-static void tri_45_90(int wire)
+static void
+tri_45_90(int wire)
 {
     GLfloat vertices[][3] = {
         {0, alpha, 0},
 {
     GLfloat vertices[][3] = {
         {0, alpha, 0},
@@ -87,8 +88,8 @@ static void tri_45_90(int wire)
     glEnd();
 }
 
     glEnd();
 }
 
-static
-void unit_cube(int wire)
+static void
+unit_cube(int wire)
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
@@ -132,8 +133,8 @@ void unit_cube(int wire)
     glEnd();
 }
 
     glEnd();
 }
 
-static
-void unit_rhomboid(int wire)
+static void
+unit_rhomboid(int wire)
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
 {
     glBegin((wire) ? GL_LINE_LOOP : GL_QUADS);
 
@@ -179,7 +180,8 @@ void unit_rhomboid(int wire)
 
 /* All of the pieces have the same thickness so all of the Y values are the same */
 
 
 /* All of the pieces have the same thickness so all of the Y values are the same */
 
-GLuint get_sm_tri_dl(int wire)
+GLuint
+tangram_get_sm_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -189,7 +191,8 @@ GLuint get_sm_tri_dl(int wire)
     return triangle;
 }
 
     return triangle;
 }
 
-GLuint get_lg_tri_dl(int wire)
+GLuint
+tangram_get_lg_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -199,7 +202,8 @@ GLuint get_lg_tri_dl(int wire)
     return triangle;
 }
 
     return triangle;
 }
 
-GLuint get_md_tri_dl(int wire)
+GLuint
+tangram_get_md_tri_dl(int wire)
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
 {
     GLuint triangle = glGenLists(1);
     glNewList(triangle, GL_COMPILE);
@@ -209,7 +213,8 @@ GLuint get_md_tri_dl(int wire)
     return triangle;
 }
 
     return triangle;
 }
 
-GLuint get_square_dl(int wire)
+GLuint
+tangram_get_square_dl(int wire)
 {
     GLuint square = glGenLists(1);
     glNewList(square, GL_COMPILE);
 {
     GLuint square = glGenLists(1);
     glNewList(square, GL_COMPILE);
@@ -219,7 +224,8 @@ GLuint get_square_dl(int wire)
     return square;
 }
 
     return square;
 }
 
-GLuint get_rhomboid_dl(int wire)
+GLuint
+tangram_get_rhomboid_dl(int wire)
 {
     GLuint rhomboid = glGenLists(1);
     glNewList(rhomboid, GL_COMPILE);
 {
     GLuint rhomboid = glGenLists(1);
     glNewList(rhomboid, GL_COMPILE);
index 95410f86ffb82f084938e069c8ecc4f99c024f45..254f8f34eee27c62d02ae1865ea63761ee0eba6d 100644 (file)
@@ -2,14 +2,14 @@
 #define TANGRAM_SHAPES_H
 
 /* get_sm_tri_dl - Get small triangle Display List */
 #define TANGRAM_SHAPES_H
 
 /* get_sm_tri_dl - Get small triangle Display List */
-GLuint get_sm_tri_dl(int wire);
+GLuint tangram_get_sm_tri_dl(int wire);
 /* get_lg_tri_dl - Get large triangle Display List */
 /* get_lg_tri_dl - Get large triangle Display List */
-GLuint get_lg_tri_dl(int wire);
+GLuint tangram_get_lg_tri_dl(int wire);
 /* get_md_tri_dl - Get medium triangle Display List */
 /* get_md_tri_dl - Get medium triangle Display List */
-GLuint get_md_tri_dl(int wire);
+GLuint tangram_get_md_tri_dl(int wire);
 /* get_square_dl - Get square Display List */
 /* get_square_dl - Get square Display List */
-GLuint get_square_dl(int wire);
+GLuint tangram_get_square_dl(int wire);
 /* get_rhomboid_dl - Get rhomboid Display List */
 /* get_rhomboid_dl - Get rhomboid Display List */
-GLuint get_rhomboid_dl(int wire);
+GLuint tangram_get_rhomboid_dl(int wire);
 
 #endif
 
 #endif
index 3fc95ee3fe885ddf77485e3f7bef5bcdbc9ab99f..05d652ed11e121ce03121dcba052f0ff2aa0fdb7 100644 (file)
@@ -50,19 +50,18 @@ OpenGL(TM) is a trademark of Silicon Graphics, Inc.
 
 #include "teapot.h"
 
 
 #include "teapot.h"
 
-#ifdef HAVE_JWZGLES
-int unit_teapot (int grid, int wire_p) { return 0; }
-#else /* !HAVE_JWZGLES */
-
-
 #ifndef HAVE_COCOA
 # include <GL/gl.h>
 #endif
 
 #ifdef HAVE_JWZGLES
 # include "jwzgles.h"
 #ifndef HAVE_COCOA
 # include <GL/gl.h>
 #endif
 
 #ifdef HAVE_JWZGLES
 # include "jwzgles.h"
-#endif /* HAVE_JWZGLES */
+#else
+# define HAVE_GLMAP
+#endif
+
 
 
+#ifdef HAVE_GLMAP
 
 /* Rim, body, lid, and bottom data must be reflected in x
    and y; handle and spout data across the y axis only.  */
 
 /* Rim, body, lid, and bottom data must be reflected in x
    and y; handle and spout data across the y axis only.  */
@@ -198,20 +197,20 @@ unit_teapot (int grid, int wire_p)
       &p[0][0][0]);
     glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
     glEvalMesh2(type, 0, grid, 0, grid);
       &p[0][0][0]);
     glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
     glEvalMesh2(type, 0, grid, 0, grid);
-    polys += grid*grid;
+    polys += grid*grid*2;
     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
       &q[0][0][0]);
     glEvalMesh2(type, 0, grid, 0, grid);
     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
       &q[0][0][0]);
     glEvalMesh2(type, 0, grid, 0, grid);
-    polys += grid*grid;
+    polys += grid*grid*2;
     if (i < 6) {
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &r[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
     if (i < 6) {
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &r[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
-      polys += grid*grid;
+      polys += grid*grid*2;
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &s[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
         &s[0][0][0]);
       glEvalMesh2(type, 0, grid, 0, grid);
-      polys += grid*grid;
+      polys += grid*grid*2;
     }
   }
   glPopMatrix();
     }
   }
   glPopMatrix();
@@ -220,4 +219,64 @@ unit_teapot (int grid, int wire_p)
   return polys;
 }
 
   return polys;
 }
 
-#endif /* !HAVE_JWZGLES */
+#else  /* !HAVE_GLMAP */
+
+# include "normals.h"
+# include "teapot2.h"
+
+int
+unit_teapot (int grid, int wire_p)
+{
+  int polys = sizeof (teapot_triangles) / sizeof (*teapot_triangles) / 9;
+  int i;
+  const GLfloat *p = teapot_triangles;
+  GLfloat scale = 1 / 2.3;
+
+  glPushMatrix();
+  glScalef (scale, scale, scale);
+  glTranslatef (0, -1.25, 0);
+
+  if (wire_p)
+    {
+      glBegin (GL_LINES);
+      for (i = 0; i < polys; i++)
+        {
+          XYZ p1, p2, p3;
+          p1.x = *p++; p1.y = *p++; p1.z = *p++;
+          p2.x = *p++; p2.y = *p++; p2.z = *p++;
+          p3.x = *p++; p3.y = *p++; p3.z = *p++;
+          glVertex3f (p1.x, p1.y, p1.z);   /* Draw 2 edges of each triangle */
+          glVertex3f (p2.x, p2.y, p2.z);
+          glVertex3f (p1.x, p1.y, p1.z);
+          glVertex3f (p3.x, p3.y, p3.z);
+          i++;                            /* Skip every other triangle */
+          p += 9;
+        }
+      glEnd();
+      polys /= 2;
+    }
+  else
+    {
+      glFrontFace (GL_CCW);
+      glBegin (GL_TRIANGLES);
+      for (i = 0; i < polys; i++)
+        {
+          XYZ p1, p2, p3;
+          p1.x = *p++; p1.y = *p++; p1.z = *p++;
+          p2.x = *p++; p2.y = *p++; p2.z = *p++;
+          p3.x = *p++; p3.y = *p++; p3.z = *p++;
+          do_normal (p1.x, p1.y, p1.z,
+                     p2.x, p2.y, p2.z,
+                     p3.x, p3.y, p3.z);
+          glVertex3f (p1.x, p1.y, p1.z);
+          glVertex3f (p2.x, p2.y, p2.z);
+          glVertex3f (p3.x, p3.y, p3.z);
+        }
+      glEnd();
+    }
+  glPopMatrix();
+
+  return polys;
+}
+
+#endif /* !HAVE_GLMAP */
diff --git a/hacks/glx/teapot2.h b/hacks/glx/teapot2.h
new file mode 100644 (file)
index 0000000..c9d4def
--- /dev/null
@@ -0,0 +1,6330 @@
+/* The Utah Teapot.  Martin Newell, 1975.
+
+   Since GLUtesselator doesn't exist in the iOS build, we use these
+   triangles there instead of generating the teapot from Newell's
+   original Bezier patches, because I didn't feel like re-implementing
+   that code.
+ */
+
+static const GLfloat teapot_triangles[] = {
+       1.368074,2.435437,-0.227403,    1.381968,2.4,-0.229712, 1.4,2.4,0,
+       1.4,2.4,0,      1.385925,2.435437,0,    1.368074,2.435437,-0.227403,
+       1.316296,2.435437,-0.442166,    1.329664,2.4,-0.446656, 1.381968,2.4,-0.229712,
+       1.381968,2.4,-0.229712, 1.368074,2.435437,-0.227403,    1.316296,2.435437,-0.442166,
+       1.233252,2.435437,-0.641628,    1.245776,2.4,-0.648144, 1.329664,2.4,-0.446656,
+       1.329664,2.4,-0.446656, 1.316296,2.435437,-0.442166,    1.233252,2.435437,-0.641628,
+       1.121601,2.435437,-0.823129,    1.132992,2.4,-0.831488, 1.245776,2.4,-0.648144,
+       1.245776,2.4,-0.648144, 1.233252,2.435437,-0.641628,    1.121601,2.435437,-0.823129,
+       0.984007,2.435437,-0.984007,    0.994,2.4,-0.994,       1.132992,2.4,-0.831488,
+       1.132992,2.4,-0.831488, 1.121601,2.435437,-0.823129,    0.984007,2.435437,-0.984007,
+       0.823129,2.435437,-1.121601,    0.831488,2.4,-1.132992, 0.994,2.4,-0.994,
+       0.994,2.4,-0.994,       0.984007,2.435437,-0.984007,    0.823129,2.435437,-1.121601,
+       0.641628,2.435437,-1.233252,    0.648144,2.4,-1.245776, 0.831488,2.4,-1.132992,
+       0.831488,2.4,-1.132992, 0.823129,2.435437,-1.121601,    0.641628,2.435437,-1.233252,
+       0.442166,2.435437,-1.316296,    0.446656,2.4,-1.329664, 0.648144,2.4,-1.245776,
+       0.648144,2.4,-1.245776, 0.641628,2.435437,-1.233252,    0.442166,2.435437,-1.316296,
+       0.227403,2.435437,-1.368074,    0.229712,2.4,-1.381968, 0.446656,2.4,-1.329664,
+       0.446656,2.4,-1.329664, 0.442166,2.435437,-1.316296,    0.227403,2.435437,-1.368074,
+       0,2.435437,-1.385925,   0,2.4,-1.4,     0.229712,2.4,-1.381968,
+       0.229712,2.4,-1.381968, 0.227403,2.435437,-1.368074,    0,2.435437,-1.385925,
+       1.36262,2.463,-0.226496,        1.368074,2.435437,-0.227403,    1.385925,2.435437,0,
+       1.385925,2.435437,0,    1.3804,2.463,0, 1.36262,2.463,-0.226496,
+       1.311049,2.463,-0.440403,       1.316296,2.435437,-0.442166,    1.368074,2.435437,-0.227403,
+       1.368074,2.435437,-0.227403,    1.36262,2.463,-0.226496,        1.311049,2.463,-0.440403,
+       1.228335,2.463,-0.63907,        1.233252,2.435437,-0.641628,    1.316296,2.435437,-0.442166,
+       1.316296,2.435437,-0.442166,    1.311049,2.463,-0.440403,       1.228335,2.463,-0.63907,
+       1.11713,2.463,-0.819847,        1.121601,2.435437,-0.823129,    1.233252,2.435437,-0.641628,
+       1.233252,2.435437,-0.641628,    1.228335,2.463,-0.63907,        1.11713,2.463,-0.819847,
+       0.980084,2.463,-0.980084,       0.984007,2.435437,-0.984007,    1.121601,2.435437,-0.823129,
+       1.121601,2.435437,-0.823129,    1.11713,2.463,-0.819847,        0.980084,2.463,-0.980084,
+       0.819847,2.463,-1.11713,        0.823129,2.435437,-1.121601,    0.984007,2.435437,-0.984007,
+       0.984007,2.435437,-0.984007,    0.980084,2.463,-0.980084,       0.819847,2.463,-1.11713,
+       0.63907,2.463,-1.228335,        0.641628,2.435437,-1.233252,    0.823129,2.435437,-1.121601,
+       0.823129,2.435437,-1.121601,    0.819847,2.463,-1.11713,        0.63907,2.463,-1.228335,
+       0.440403,2.463,-1.311049,       0.442166,2.435437,-1.316296,    0.641628,2.435437,-1.233252,
+       0.641628,2.435437,-1.233252,    0.63907,2.463,-1.228335,        0.440403,2.463,-1.311049,
+       0.226496,2.463,-1.36262,        0.227403,2.435437,-1.368074,    0.442166,2.435437,-1.316296,
+       0.442166,2.435437,-1.316296,    0.440403,2.463,-1.311049,       0.226496,2.463,-1.36262,
+       0,2.463,-1.3804,        0,2.435437,-1.385925,   0.227403,2.435437,-1.368074,
+       0.227403,2.435437,-1.368074,    0.226496,2.463,-1.36262,        0,2.463,-1.3804,
+       1.364422,2.482687,-0.226795,    1.36262,2.463,-0.226496,        1.3804,2.463,0,
+       1.3804,2.463,0, 1.382225,2.482687,0,    1.364422,2.482687,-0.226795,
+       1.312782,2.482687,-0.440985,    1.311049,2.463,-0.440403,       1.36262,2.463,-0.226496,
+       1.36262,2.463,-0.226496,        1.364422,2.482687,-0.226795,    1.312782,2.482687,-0.440985,
+       1.229959,2.482687,-0.639915,    1.228335,2.463,-0.63907,        1.311049,2.463,-0.440403,
+       1.311049,2.463,-0.440403,       1.312782,2.482687,-0.440985,    1.229959,2.482687,-0.639915,
+       1.118607,2.482687,-0.820931,    1.11713,2.463,-0.819847,        1.228335,2.463,-0.63907,
+       1.228335,2.463,-0.63907,        1.229959,2.482687,-0.639915,    1.118607,2.482687,-0.820931,
+       0.98138,2.482687,-0.98138,      0.980084,2.463,-0.980084,       1.11713,2.463,-0.819847,
+       1.11713,2.463,-0.819847,        1.118607,2.482687,-0.820931,    0.98138,2.482687,-0.98138,
+       0.820931,2.482687,-1.118607,    0.819847,2.463,-1.11713,        0.980084,2.463,-0.980084,
+       0.980084,2.463,-0.980084,       0.98138,2.482687,-0.98138,      0.820931,2.482687,-1.118607,
+       0.639915,2.482687,-1.229959,    0.63907,2.463,-1.228335,        0.819847,2.463,-1.11713,
+       0.819847,2.463,-1.11713,        0.820931,2.482687,-1.118607,    0.639915,2.482687,-1.229959,
+       0.440985,2.482687,-1.312782,    0.440403,2.463,-1.311049,       0.63907,2.463,-1.228335,
+       0.63907,2.463,-1.228335,        0.639915,2.482687,-1.229959,    0.440985,2.482687,-1.312782,
+       0.226795,2.482687,-1.364422,    0.226496,2.463,-1.36262,        0.440403,2.463,-1.311049,
+       0.440403,2.463,-1.311049,       0.440985,2.482687,-1.312782,    0.226795,2.482687,-1.364422,
+       0,2.482687,-1.382225,   0,2.463,-1.3804,        0.226496,2.463,-1.36262,
+       0.226496,2.463,-1.36262,        0.226795,2.482687,-1.364422,    0,2.482687,-1.382225,
+       1.372294,2.4945,-0.228104,      1.364422,2.482687,-0.226795,    1.382225,2.482687,0,
+       1.382225,2.482687,0,    1.3902,2.4945,0,        1.372294,2.4945,-0.228104,
+       1.320356,2.4945,-0.443529,      1.312782,2.482687,-0.440985,    1.364422,2.482687,-0.226795,
+       1.364422,2.482687,-0.226795,    1.372294,2.4945,-0.228104,      1.320356,2.4945,-0.443529,
+       1.237056,2.4945,-0.643607,      1.229959,2.482687,-0.639915,    1.312782,2.482687,-0.440985,
+       1.312782,2.482687,-0.440985,    1.320356,2.4945,-0.443529,      1.237056,2.4945,-0.643607,
+       1.125061,2.4945,-0.825668,      1.118607,2.482687,-0.820931,    1.229959,2.482687,-0.639915,
+       1.229959,2.482687,-0.639915,    1.237056,2.4945,-0.643607,      1.125061,2.4945,-0.825668,
+       0.987042,2.4945,-0.987042,      0.98138,2.482687,-0.98138,      1.118607,2.482687,-0.820931,
+       1.118607,2.482687,-0.820931,    1.125061,2.4945,-0.825668,      0.987042,2.4945,-0.987042,
+       0.825668,2.4945,-1.125061,      0.820931,2.482687,-1.118607,    0.98138,2.482687,-0.98138,
+       0.98138,2.482687,-0.98138,      0.987042,2.4945,-0.987042,      0.825668,2.4945,-1.125061,
+       0.643607,2.4945,-1.237056,      0.639915,2.482687,-1.229959,    0.820931,2.482687,-1.118607,
+       0.820931,2.482687,-1.118607,    0.825668,2.4945,-1.125061,      0.643607,2.4945,-1.237056,
+       0.443529,2.4945,-1.320356,      0.440985,2.482687,-1.312782,    0.639915,2.482687,-1.229959,
+       0.639915,2.482687,-1.229959,    0.643607,2.4945,-1.237056,      0.443529,2.4945,-1.320356,
+       0.228104,2.4945,-1.372294,      0.226795,2.482687,-1.364422,    0.440985,2.482687,-1.312782,
+       0.440985,2.482687,-1.312782,    0.443529,2.4945,-1.320356,      0.228104,2.4945,-1.372294,
+       0,2.4945,-1.3902,       0,2.482687,-1.382225,   0.226795,2.482687,-1.364422,
+       0.226795,2.482687,-1.364422,    0.228104,2.4945,-1.372294,      0,2.4945,-1.3902,
+       1.385053,2.498438,-0.230225,    1.372294,2.4945,-0.228104,      1.3902,2.4945,0,
+       1.3902,2.4945,0,        1.403125,2.498438,0,    1.385053,2.498438,-0.230225,
+       1.332632,2.498438,-0.447653,    1.320356,2.4945,-0.443529,      1.372294,2.4945,-0.228104,
+       1.372294,2.4945,-0.228104,      1.385053,2.498438,-0.230225,    1.332632,2.498438,-0.447653,
+       1.248557,2.498438,-0.649591,    1.237056,2.4945,-0.643607,      1.320356,2.4945,-0.443529,
+       1.320356,2.4945,-0.443529,      1.332632,2.498438,-0.447653,    1.248557,2.498438,-0.649591,
+       1.135521,2.498438,-0.833344,    1.125061,2.4945,-0.825668,      1.237056,2.4945,-0.643607,
+       1.237056,2.4945,-0.643607,      1.248557,2.498438,-0.649591,    1.135521,2.498438,-0.833344,
+       0.996219,2.498438,-0.996219,    0.987042,2.4945,-0.987042,      1.125061,2.4945,-0.825668,
+       1.125061,2.4945,-0.825668,      1.135521,2.498438,-0.833344,    0.996219,2.498438,-0.996219,
+       0.833344,2.498438,-1.135521,    0.825668,2.4945,-1.125061,      0.987042,2.4945,-0.987042,
+       0.987042,2.4945,-0.987042,      0.996219,2.498438,-0.996219,    0.833344,2.498438,-1.135521,
+       0.649591,2.498438,-1.248557,    0.643607,2.4945,-1.237056,      0.825668,2.4945,-1.125061,
+       0.825668,2.4945,-1.125061,      0.833344,2.498438,-1.135521,    0.649591,2.498438,-1.248557,
+       0.447653,2.498438,-1.332632,    0.443529,2.4945,-1.320356,      0.643607,2.4945,-1.237056,
+       0.643607,2.4945,-1.237056,      0.649591,2.498438,-1.248557,    0.447653,2.498438,-1.332632,
+       0.230225,2.498438,-1.385053,    0.228104,2.4945,-1.372294,      0.443529,2.4945,-1.320356,
+       0.443529,2.4945,-1.320356,      0.447653,2.498438,-1.332632,    0.230225,2.498438,-1.385053,
+       0,2.498438,-1.403125,   0,2.4945,-1.3902,       0.228104,2.4945,-1.372294,
+       0.228104,2.4945,-1.372294,      0.230225,2.498438,-1.385053,    0,2.498438,-1.403125,
+       1.401513,2.4945,-0.232961,      1.385053,2.498438,-0.230225,    1.403125,2.498438,0,
+       1.403125,2.498438,0,    1.4198,2.4945,0,        1.401513,2.4945,-0.232961,
+       1.348469,2.4945,-0.452973,      1.332632,2.498438,-0.447653,    1.385053,2.498438,-0.230225,
+       1.385053,2.498438,-0.230225,    1.401513,2.4945,-0.232961,      1.348469,2.4945,-0.452973,
+       1.263395,2.4945,-0.657311,      1.248557,2.498438,-0.649591,    1.332632,2.498438,-0.447653,
+       1.332632,2.498438,-0.447653,    1.348469,2.4945,-0.452973,      1.263395,2.4945,-0.657311,
+       1.149016,2.4945,-0.843248,      1.135521,2.498438,-0.833344,    1.248557,2.498438,-0.649591,
+       1.248557,2.498438,-0.649591,    1.263395,2.4945,-0.657311,      1.149016,2.4945,-0.843248,
+       1.008058,2.4945,-1.008058,      0.996219,2.498438,-0.996219,    1.135521,2.498438,-0.833344,
+       1.135521,2.498438,-0.833344,    1.149016,2.4945,-0.843248,      1.008058,2.4945,-1.008058,
+       0.843248,2.4945,-1.149016,      0.833344,2.498438,-1.135521,    0.996219,2.498438,-0.996219,
+       0.996219,2.498438,-0.996219,    1.008058,2.4945,-1.008058,      0.843248,2.4945,-1.149016,
+       0.657311,2.4945,-1.263395,      0.649591,2.498438,-1.248557,    0.833344,2.498438,-1.135521,
+       0.833344,2.498438,-1.135521,    0.843248,2.4945,-1.149016,      0.657311,2.4945,-1.263395,
+       0.452973,2.4945,-1.348469,      0.447653,2.498438,-1.332632,    0.649591,2.498438,-1.248557,
+       0.649591,2.498438,-1.248557,    0.657311,2.4945,-1.263395,      0.452973,2.4945,-1.348469,
+       0.232961,2.4945,-1.401513,      0.230225,2.498438,-1.385053,    0.447653,2.498438,-1.332632,
+       0.447653,2.498438,-1.332632,    0.452973,2.4945,-1.348469,      0.232961,2.4945,-1.401513,
+       0,2.4945,-1.4198,       0,2.498438,-1.403125,   0.230225,2.498438,-1.385053,
+       0.230225,2.498438,-1.385053,    0.232961,2.4945,-1.401513,      0,2.4945,-1.4198,
+       1.42049,2.482687,-0.236115,     1.401513,2.4945,-0.232961,      1.4198,2.4945,0,
+       1.4198,2.4945,0,        1.439025,2.482687,0,    1.42049,2.482687,-0.236115,
+       1.366728,2.482687,-0.459107,    1.348469,2.4945,-0.452973,      1.401513,2.4945,-0.232961,
+       1.401513,2.4945,-0.232961,      1.42049,2.482687,-0.236115,     1.366728,2.482687,-0.459107,
+       1.280502,2.482687,-0.666211,    1.263395,2.4945,-0.657311,      1.348469,2.4945,-0.452973,
+       1.348469,2.4945,-0.452973,      1.366728,2.482687,-0.459107,    1.280502,2.482687,-0.666211,
+       1.164574,2.482687,-0.854666,    1.149016,2.4945,-0.843248,      1.263395,2.4945,-0.657311,
+       1.263395,2.4945,-0.657311,      1.280502,2.482687,-0.666211,    1.164574,2.482687,-0.854666,
+       1.021708,2.482687,-1.021708,    1.008058,2.4945,-1.008058,      1.149016,2.4945,-0.843248,
+       1.149016,2.4945,-0.843248,      1.164574,2.482687,-0.854666,    1.021708,2.482687,-1.021708,
+       0.854666,2.482687,-1.164574,    0.843248,2.4945,-1.149016,      1.008058,2.4945,-1.008058,
+       1.008058,2.4945,-1.008058,      1.021708,2.482687,-1.021708,    0.854666,2.482687,-1.164574,
+       0.666211,2.482687,-1.280502,    0.657311,2.4945,-1.263395,      0.843248,2.4945,-1.149016,
+       0.843248,2.4945,-1.149016,      0.854666,2.482687,-1.164574,    0.666211,2.482687,-1.280502,
+       0.459107,2.482687,-1.366728,    0.452973,2.4945,-1.348469,      0.657311,2.4945,-1.263395,
+       0.657311,2.4945,-1.263395,      0.666211,2.482687,-1.280502,    0.459107,2.482687,-1.366728,
+       0.236115,2.482687,-1.42049,     0.232961,2.4945,-1.401513,      0.452973,2.4945,-1.348469,
+       0.452973,2.4945,-1.348469,      0.459107,2.482687,-1.366728,    0.236115,2.482687,-1.42049,
+       0,2.482687,-1.439025,   0,2.4945,-1.4198,       0.232961,2.4945,-1.401513,
+       0.232961,2.4945,-1.401513,      0.236115,2.482687,-1.42049,     0,2.482687,-1.439025,
+       1.4408,2.463,-0.239491, 1.42049,2.482687,-0.236115,     1.439025,2.482687,0,
+       1.439025,2.482687,0,    1.4596,2.463,0, 1.4408,2.463,-0.239491,
+       1.38627,2.463,-0.465671,        1.366728,2.482687,-0.459107,    1.42049,2.482687,-0.236115,
+       1.42049,2.482687,-0.236115,     1.4408,2.463,-0.239491, 1.38627,2.463,-0.465671,
+       1.29881,2.463,-0.675736,        1.280502,2.482687,-0.666211,    1.366728,2.482687,-0.459107,
+       1.366728,2.482687,-0.459107,    1.38627,2.463,-0.465671,        1.29881,2.463,-0.675736,
+       1.181225,2.463,-0.866886,       1.164574,2.482687,-0.854666,    1.280502,2.482687,-0.666211,
+       1.280502,2.482687,-0.666211,    1.29881,2.463,-0.675736,        1.181225,2.463,-0.866886,
+       1.036316,2.463,-1.036316,       1.021708,2.482687,-1.021708,    1.164574,2.482687,-0.854666,
+       1.164574,2.482687,-0.854666,    1.181225,2.463,-0.866886,       1.036316,2.463,-1.036316,
+       0.866886,2.463,-1.181225,       0.854666,2.482687,-1.164574,    1.021708,2.482687,-1.021708,
+       1.021708,2.482687,-1.021708,    1.036316,2.463,-1.036316,       0.866886,2.463,-1.181225,
+       0.675736,2.463,-1.29881,        0.666211,2.482687,-1.280502,    0.854666,2.482687,-1.164574,
+       0.854666,2.482687,-1.164574,    0.866886,2.463,-1.181225,       0.675736,2.463,-1.29881,
+       0.465671,2.463,-1.38627,        0.459107,2.482687,-1.366728,    0.666211,2.482687,-1.280502,
+       0.666211,2.482687,-1.280502,    0.675736,2.463,-1.29881,        0.465671,2.463,-1.38627,
+       0.239491,2.463,-1.4408, 0.236115,2.482687,-1.42049,     0.459107,2.482687,-1.366728,
+       0.459107,2.482687,-1.366728,    0.465671,2.463,-1.38627,        0.239491,2.463,-1.4408,
+       0,2.463,-1.4596,        0,2.482687,-1.439025,   0.236115,2.482687,-1.42049,
+       0.236115,2.482687,-1.42049,     0.239491,2.463,-1.4408, 0,2.463,-1.4596,
+       1.461258,2.435437,-0.242892,    1.4408,2.463,-0.239491, 1.4596,2.463,0,
+       1.4596,2.463,0, 1.480325,2.435437,0,    1.461258,2.435437,-0.242892,
+       1.405953,2.435437,-0.472283,    1.38627,2.463,-0.465671,        1.4408,2.463,-0.239491,
+       1.4408,2.463,-0.239491, 1.461258,2.435437,-0.242892,    1.405953,2.435437,-0.472283,
+       1.317252,2.435437,-0.685331,    1.29881,2.463,-0.675736,        1.38627,2.463,-0.465671,
+       1.38627,2.463,-0.465671,        1.405953,2.435437,-0.472283,    1.317252,2.435437,-0.685331,
+       1.197997,2.435437,-0.879195,    1.181225,2.463,-0.866886,       1.29881,2.463,-0.675736,
+       1.29881,2.463,-0.675736,        1.317252,2.435437,-0.685331,    1.197997,2.435437,-0.879195,
+       1.051031,2.435437,-1.051031,    1.036316,2.463,-1.036316,       1.181225,2.463,-0.866886,
+       1.181225,2.463,-0.866886,       1.197997,2.435437,-0.879195,    1.051031,2.435437,-1.051031,
+       0.879195,2.435437,-1.197997,    0.866886,2.463,-1.181225,       1.036316,2.463,-1.036316,
+       1.036316,2.463,-1.036316,       1.051031,2.435437,-1.051031,    0.879195,2.435437,-1.197997,
+       0.685331,2.435437,-1.317252,    0.675736,2.463,-1.29881,        0.866886,2.463,-1.181225,
+       0.866886,2.463,-1.181225,       0.879195,2.435437,-1.197997,    0.685331,2.435437,-1.317252,
+       0.472283,2.435437,-1.405953,    0.465671,2.463,-1.38627,        0.675736,2.463,-1.29881,
+       0.675736,2.463,-1.29881,        0.685331,2.435437,-1.317252,    0.472283,2.435437,-1.405953,
+       0.242892,2.435437,-1.461258,    0.239491,2.463,-1.4408, 0.465671,2.463,-1.38627,
+       0.465671,2.463,-1.38627,        0.472283,2.435437,-1.405953,    0.242892,2.435437,-1.461258,
+       0,2.435437,-1.480325,   0,2.463,-1.4596,        0.239491,2.463,-1.4408,
+       0.239491,2.463,-1.4408, 0.242892,2.435437,-1.461258,    0,2.435437,-1.480325,
+       1.48068,2.4,-0.24612,   1.461258,2.435437,-0.242892,    1.480325,2.435437,0,
+       1.480325,2.435437,0,    1.5,2.4,0,      1.48068,2.4,-0.24612,
+       1.42464,2.4,-0.47856,   1.405953,2.435437,-0.472283,    1.461258,2.435437,-0.242892,
+       1.461258,2.435437,-0.242892,    1.48068,2.4,-0.24612,   1.42464,2.4,-0.47856,
+       1.33476,2.4,-0.69444,   1.317252,2.435437,-0.685331,    1.405953,2.435437,-0.472283,
+       1.405953,2.435437,-0.472283,    1.42464,2.4,-0.47856,   1.33476,2.4,-0.69444,
+       1.21392,2.4,-0.89088,   1.197997,2.435437,-0.879195,    1.317252,2.435437,-0.685331,
+       1.317252,2.435437,-0.685331,    1.33476,2.4,-0.69444,   1.21392,2.4,-0.89088,
+       1.065,2.4,-1.065,       1.051031,2.435437,-1.051031,    1.197997,2.435437,-0.879195,
+       1.197997,2.435437,-0.879195,    1.21392,2.4,-0.89088,   1.065,2.4,-1.065,
+       0.89088,2.4,-1.21392,   0.879195,2.435437,-1.197997,    1.051031,2.435437,-1.051031,
+       1.051031,2.435437,-1.051031,    1.065,2.4,-1.065,       0.89088,2.4,-1.21392,
+       0.69444,2.4,-1.33476,   0.685331,2.435437,-1.317252,    0.879195,2.435437,-1.197997,
+       0.879195,2.435437,-1.197997,    0.89088,2.4,-1.21392,   0.69444,2.4,-1.33476,
+       0.47856,2.4,-1.42464,   0.472283,2.435437,-1.405953,    0.685331,2.435437,-1.317252,
+       0.685331,2.435437,-1.317252,    0.69444,2.4,-1.33476,   0.47856,2.4,-1.42464,
+       0.24612,2.4,-1.48068,   0.242892,2.435437,-1.461258,    0.472283,2.435437,-1.405953,
+       0.472283,2.435437,-1.405953,    0.47856,2.4,-1.42464,   0.24612,2.4,-1.48068,
+       0,2.4,-1.5,     0,2.435437,-1.480325,   0.242892,2.435437,-1.461258,
+       0.242892,2.435437,-1.461258,    0.24612,2.4,-1.48068,   0,2.4,-1.5,
+       -0.227403,2.435437,-1.368074,   -0.229712,2.4,-1.381968,        0,2.4,-1.4,
+       0,2.4,-1.4,     0,2.435437,-1.385925,   -0.227403,2.435437,-1.368074,
+       -0.442166,2.435437,-1.316296,   -0.446656,2.4,-1.329664,        -0.229712,2.4,-1.381968,
+       -0.229712,2.4,-1.381968,        -0.227403,2.435437,-1.368074,   -0.442166,2.435437,-1.316296,
+       -0.641628,2.435437,-1.233252,   -0.648144,2.4,-1.245776,        -0.446656,2.4,-1.329664,
+       -0.446656,2.4,-1.329664,        -0.442166,2.435437,-1.316296,   -0.641628,2.435437,-1.233252,
+       -0.823129,2.435437,-1.121601,   -0.831488,2.4,-1.132992,        -0.648144,2.4,-1.245776,
+       -0.648144,2.4,-1.245776,        -0.641628,2.435437,-1.233252,   -0.823129,2.435437,-1.121601,
+       -0.984007,2.435437,-0.984007,   -0.994,2.4,-0.994,      -0.831488,2.4,-1.132992,
+       -0.831488,2.4,-1.132992,        -0.823129,2.435437,-1.121601,   -0.984007,2.435437,-0.984007,
+       -1.121601,2.435437,-0.823129,   -1.132992,2.4,-0.831488,        -0.994,2.4,-0.994,
+       -0.994,2.4,-0.994,      -0.984007,2.435437,-0.984007,   -1.121601,2.435437,-0.823129,
+       -1.233252,2.435437,-0.641628,   -1.245776,2.4,-0.648144,        -1.132992,2.4,-0.831488,
+       -1.132992,2.4,-0.831488,        -1.121601,2.435437,-0.823129,   -1.233252,2.435437,-0.641628,
+       -1.316296,2.435437,-0.442166,   -1.329664,2.4,-0.446656,        -1.245776,2.4,-0.648144,
+       -1.245776,2.4,-0.648144,        -1.233252,2.435437,-0.641628,   -1.316296,2.435437,-0.442166,
+       -1.368074,2.435437,-0.227403,   -1.381968,2.4,-0.229712,        -1.329664,2.4,-0.446656,
+       -1.329664,2.4,-0.446656,        -1.316296,2.435437,-0.442166,   -1.368074,2.435437,-0.227403,
+       -1.385925,2.435437,0,   -1.4,2.4,0,     -1.381968,2.4,-0.229712,
+       -1.381968,2.4,-0.229712,        -1.368074,2.435437,-0.227403,   -1.385925,2.435437,0,
+       -0.226496,2.463,-1.36262,       -0.227403,2.435437,-1.368074,   0,2.435437,-1.385925,
+       0,2.435437,-1.385925,   0,2.463,-1.3804,        -0.226496,2.463,-1.36262,
+       -0.440403,2.463,-1.311049,      -0.442166,2.435437,-1.316296,   -0.227403,2.435437,-1.368074,
+       -0.227403,2.435437,-1.368074,   -0.226496,2.463,-1.36262,       -0.440403,2.463,-1.311049,
+       -0.63907,2.463,-1.228335,       -0.641628,2.435437,-1.233252,   -0.442166,2.435437,-1.316296,
+       -0.442166,2.435437,-1.316296,   -0.440403,2.463,-1.311049,      -0.63907,2.463,-1.228335,
+       -0.819847,2.463,-1.11713,       -0.823129,2.435437,-1.121601,   -0.641628,2.435437,-1.233252,
+       -0.641628,2.435437,-1.233252,   -0.63907,2.463,-1.228335,       -0.819847,2.463,-1.11713,
+       -0.980084,2.463,-0.980084,      -0.984007,2.435437,-0.984007,   -0.823129,2.435437,-1.121601,
+       -0.823129,2.435437,-1.121601,   -0.819847,2.463,-1.11713,       -0.980084,2.463,-0.980084,
+       -1.11713,2.463,-0.819847,       -1.121601,2.435437,-0.823129,   -0.984007,2.435437,-0.984007,
+       -0.984007,2.435437,-0.984007,   -0.980084,2.463,-0.980084,      -1.11713,2.463,-0.819847,
+       -1.228335,2.463,-0.63907,       -1.233252,2.435437,-0.641628,   -1.121601,2.435437,-0.823129,
+       -1.121601,2.435437,-0.823129,   -1.11713,2.463,-0.819847,       -1.228335,2.463,-0.63907,
+       -1.311049,2.463,-0.440403,      -1.316296,2.435437,-0.442166,   -1.233252,2.435437,-0.641628,
+       -1.233252,2.435437,-0.641628,   -1.228335,2.463,-0.63907,       -1.311049,2.463,-0.440403,
+       -1.36262,2.463,-0.226496,       -1.368074,2.435437,-0.227403,   -1.316296,2.435437,-0.442166,
+       -1.316296,2.435437,-0.442166,   -1.311049,2.463,-0.440403,      -1.36262,2.463,-0.226496,
+       -1.3804,2.463,0,        -1.385925,2.435437,0,   -1.368074,2.435437,-0.227403,
+       -1.368074,2.435437,-0.227403,   -1.36262,2.463,-0.226496,       -1.3804,2.463,0,
+       -0.226795,2.482687,-1.364422,   -0.226496,2.463,-1.36262,       0,2.463,-1.3804,
+       0,2.463,-1.3804,        0,2.482687,-1.382225,   -0.226795,2.482687,-1.364422,
+       -0.440985,2.482687,-1.312782,   -0.440403,2.463,-1.311049,      -0.226496,2.463,-1.36262,
+       -0.226496,2.463,-1.36262,       -0.226795,2.482687,-1.364422,   -0.440985,2.482687,-1.312782,
+       -0.639915,2.482687,-1.229959,   -0.63907,2.463,-1.228335,       -0.440403,2.463,-1.311049,
+       -0.440403,2.463,-1.311049,      -0.440985,2.482687,-1.312782,   -0.639915,2.482687,-1.229959,
+       -0.820931,2.482687,-1.118607,   -0.819847,2.463,-1.11713,       -0.63907,2.463,-1.228335,
+       -0.63907,2.463,-1.228335,       -0.639915,2.482687,-1.229959,   -0.820931,2.482687,-1.118607,
+       -0.98138,2.482687,-0.98138,     -0.980084,2.463,-0.980084,      -0.819847,2.463,-1.11713,
+       -0.819847,2.463,-1.11713,       -0.820931,2.482687,-1.118607,   -0.98138,2.482687,-0.98138,
+       -1.118607,2.482687,-0.820931,   -1.11713,2.463,-0.819847,       -0.980084,2.463,-0.980084,
+       -0.980084,2.463,-0.980084,      -0.98138,2.482687,-0.98138,     -1.118607,2.482687,-0.820931,
+       -1.229959,2.482687,-0.639915,   -1.228335,2.463,-0.63907,       -1.11713,2.463,-0.819847,
+       -1.11713,2.463,-0.819847,       -1.118607,2.482687,-0.820931,   -1.229959,2.482687,-0.639915,
+       -1.312782,2.482687,-0.440985,   -1.311049,2.463,-0.440403,      -1.228335,2.463,-0.63907,
+       -1.228335,2.463,-0.63907,       -1.229959,2.482687,-0.639915,   -1.312782,2.482687,-0.440985,
+       -1.364422,2.482687,-0.226795,   -1.36262,2.463,-0.226496,       -1.311049,2.463,-0.440403,
+       -1.311049,2.463,-0.440403,      -1.312782,2.482687,-0.440985,   -1.364422,2.482687,-0.226795,
+       -1.382225,2.482687,0,   -1.3804,2.463,0,        -1.36262,2.463,-0.226496,
+       -1.36262,2.463,-0.226496,       -1.364422,2.482687,-0.226795,   -1.382225,2.482687,0,
+       -0.228104,2.4945,-1.372294,     -0.226795,2.482687,-1.364422,   0,2.482687,-1.382225,
+       0,2.482687,-1.382225,   0,2.4945,-1.3902,       -0.228104,2.4945,-1.372294,
+       -0.443529,2.4945,-1.320356,     -0.440985,2.482687,-1.312782,   -0.226795,2.482687,-1.364422,
+       -0.226795,2.482687,-1.364422,   -0.228104,2.4945,-1.372294,     -0.443529,2.4945,-1.320356,
+       -0.643607,2.4945,-1.237056,     -0.639915,2.482687,-1.229959,   -0.440985,2.482687,-1.312782,
+       -0.440985,2.482687,-1.312782,   -0.443529,2.4945,-1.320356,     -0.643607,2.4945,-1.237056,
+       -0.825668,2.4945,-1.125061,     -0.820931,2.482687,-1.118607,   -0.639915,2.482687,-1.229959,
+       -0.639915,2.482687,-1.229959,   -0.643607,2.4945,-1.237056,     -0.825668,2.4945,-1.125061,
+       -0.987042,2.4945,-0.987042,     -0.98138,2.482687,-0.98138,     -0.820931,2.482687,-1.118607,
+       -0.820931,2.482687,-1.118607,   -0.825668,2.4945,-1.125061,     -0.987042,2.4945,-0.987042,
+       -1.125061,2.4945,-0.825668,     -1.118607,2.482687,-0.820931,   -0.98138,2.482687,-0.98138,
+       -0.98138,2.482687,-0.98138,     -0.987042,2.4945,-0.987042,     -1.125061,2.4945,-0.825668,
+       -1.237056,2.4945,-0.643607,     -1.229959,2.482687,-0.639915,   -1.118607,2.482687,-0.820931,
+       -1.118607,2.482687,-0.820931,   -1.125061,2.4945,-0.825668,     -1.237056,2.4945,-0.643607,
+       -1.320356,2.4945,-0.443529,     -1.312782,2.482687,-0.440985,   -1.229959,2.482687,-0.639915,
+       -1.229959,2.482687,-0.639915,   -1.237056,2.4945,-0.643607,     -1.320356,2.4945,-0.443529,
+       -1.372294,2.4945,-0.228104,     -1.364422,2.482687,-0.226795,   -1.312782,2.482687,-0.440985,
+       -1.312782,2.482687,-0.440985,   -1.320356,2.4945,-0.443529,     -1.372294,2.4945,-0.228104,
+       -1.3902,2.4945,0,       -1.382225,2.482687,0,   -1.364422,2.482687,-0.226795,
+       -1.364422,2.482687,-0.226795,   -1.372294,2.4945,-0.228104,     -1.3902,2.4945,0,
+       -0.230225,2.498438,-1.385053,   -0.228104,2.4945,-1.372294,     0,2.4945,-1.3902,
+       0,2.4945,-1.3902,       0,2.498438,-1.403125,   -0.230225,2.498438,-1.385053,
+       -0.447653,2.498438,-1.332632,   -0.443529,2.4945,-1.320356,     -0.228104,2.4945,-1.372294,
+       -0.228104,2.4945,-1.372294,     -0.230225,2.498438,-1.385053,   -0.447653,2.498438,-1.332632,
+       -0.649591,2.498438,-1.248557,   -0.643607,2.4945,-1.237056,     -0.443529,2.4945,-1.320356,
+       -0.443529,2.4945,-1.320356,     -0.447653,2.498438,-1.332632,   -0.649591,2.498438,-1.248557,
+       -0.833344,2.498438,-1.135521,   -0.825668,2.4945,-1.125061,     -0.643607,2.4945,-1.237056,
+       -0.643607,2.4945,-1.237056,     -0.649591,2.498438,-1.248557,   -0.833344,2.498438,-1.135521,
+       -0.996219,2.498438,-0.996219,   -0.987042,2.4945,-0.987042,     -0.825668,2.4945,-1.125061,
+       -0.825668,2.4945,-1.125061,     -0.833344,2.498438,-1.135521,   -0.996219,2.498438,-0.996219,
+       -1.135521,2.498438,-0.833344,   -1.125061,2.4945,-0.825668,     -0.987042,2.4945,-0.987042,
+       -0.987042,2.4945,-0.987042,     -0.996219,2.498438,-0.996219,   -1.135521,2.498438,-0.833344,
+       -1.248557,2.498438,-0.649591,   -1.237056,2.4945,-0.643607,     -1.125061,2.4945,-0.825668,
+       -1.125061,2.4945,-0.825668,     -1.135521,2.498438,-0.833344,   -1.248557,2.498438,-0.649591,
+       -1.332632,2.498438,-0.447653,   -1.320356,2.4945,-0.443529,     -1.237056,2.4945,-0.643607,
+       -1.237056,2.4945,-0.643607,     -1.248557,2.498438,-0.649591,   -1.332632,2.498438,-0.447653,
+       -1.385053,2.498438,-0.230225,   -1.372294,2.4945,-0.228104,     -1.320356,2.4945,-0.443529,
+       -1.320356,2.4945,-0.443529,     -1.332632,2.498438,-0.447653,   -1.385053,2.498438,-0.230225,
+       -1.403125,2.498438,0,   -1.3902,2.4945,0,       -1.372294,2.4945,-0.228104,
+       -1.372294,2.4945,-0.228104,     -1.385053,2.498438,-0.230225,   -1.403125,2.498438,0,
+       -0.232961,2.4945,-1.401513,     -0.230225,2.498438,-1.385053,   0,2.498438,-1.403125,
+       0,2.498438,-1.403125,   0,2.4945,-1.4198,       -0.232961,2.4945,-1.401513,
+       -0.452973,2.4945,-1.348469,     -0.447653,2.498438,-1.332632,   -0.230225,2.498438,-1.385053,
+       -0.230225,2.498438,-1.385053,   -0.232961,2.4945,-1.401513,     -0.452973,2.4945,-1.348469,
+       -0.657311,2.4945,-1.263395,     -0.649591,2.498438,-1.248557,   -0.447653,2.498438,-1.332632,
+       -0.447653,2.498438,-1.332632,   -0.452973,2.4945,-1.348469,     -0.657311,2.4945,-1.263395,
+       -0.843248,2.4945,-1.149016,     -0.833344,2.498438,-1.135521,   -0.649591,2.498438,-1.248557,
+       -0.649591,2.498438,-1.248557,   -0.657311,2.4945,-1.263395,     -0.843248,2.4945,-1.149016,
+       -1.008058,2.4945,-1.008058,     -0.996219,2.498438,-0.996219,   -0.833344,2.498438,-1.135521,
+       -0.833344,2.498438,-1.135521,   -0.843248,2.4945,-1.149016,     -1.008058,2.4945,-1.008058,
+       -1.149016,2.4945,-0.843248,     -1.135521,2.498438,-0.833344,   -0.996219,2.498438,-0.996219,
+       -0.996219,2.498438,-0.996219,   -1.008058,2.4945,-1.008058,     -1.149016,2.4945,-0.843248,
+       -1.263395,2.4945,-0.657311,     -1.248557,2.498438,-0.649591,   -1.135521,2.498438,-0.833344,
+       -1.135521,2.498438,-0.833344,   -1.149016,2.4945,-0.843248,     -1.263395,2.4945,-0.657311,
+       -1.348469,2.4945,-0.452973,     -1.332632,2.498438,-0.447653,   -1.248557,2.498438,-0.649591,
+       -1.248557,2.498438,-0.649591,   -1.263395,2.4945,-0.657311,     -1.348469,2.4945,-0.452973,
+       -1.401513,2.4945,-0.232961,     -1.385053,2.498438,-0.230225,   -1.332632,2.498438,-0.447653,
+       -1.332632,2.498438,-0.447653,   -1.348469,2.4945,-0.452973,     -1.401513,2.4945,-0.232961,
+       -1.4198,2.4945,0,       -1.403125,2.498438,0,   -1.385053,2.498438,-0.230225,
+       -1.385053,2.498438,-0.230225,   -1.401513,2.4945,-0.232961,     -1.4198,2.4945,0,
+       -0.236115,2.482687,-1.42049,    -0.232961,2.4945,-1.401513,     0,2.4945,-1.4198,
+       0,2.4945,-1.4198,       0,2.482687,-1.439025,   -0.236115,2.482687,-1.42049,
+       -0.459107,2.482687,-1.366728,   -0.452973,2.4945,-1.348469,     -0.232961,2.4945,-1.401513,
+       -0.232961,2.4945,-1.401513,     -0.236115,2.482687,-1.42049,    -0.459107,2.482687,-1.366728,
+       -0.666211,2.482687,-1.280502,   -0.657311,2.4945,-1.263395,     -0.452973,2.4945,-1.348469,
+       -0.452973,2.4945,-1.348469,     -0.459107,2.482687,-1.366728,   -0.666211,2.482687,-1.280502,
+       -0.854666,2.482687,-1.164574,   -0.843248,2.4945,-1.149016,     -0.657311,2.4945,-1.263395,
+       -0.657311,2.4945,-1.263395,     -0.666211,2.482687,-1.280502,   -0.854666,2.482687,-1.164574,
+       -1.021708,2.482687,-1.021708,   -1.008058,2.4945,-1.008058,     -0.843248,2.4945,-1.149016,
+       -0.843248,2.4945,-1.149016,     -0.854666,2.482687,-1.164574,   -1.021708,2.482687,-1.021708,
+       -1.164574,2.482687,-0.854666,   -1.149016,2.4945,-0.843248,     -1.008058,2.4945,-1.008058,
+       -1.008058,2.4945,-1.008058,     -1.021708,2.482687,-1.021708,   -1.164574,2.482687,-0.854666,
+       -1.280502,2.482687,-0.666211,   -1.263395,2.4945,-0.657311,     -1.149016,2.4945,-0.843248,
+       -1.149016,2.4945,-0.843248,     -1.164574,2.482687,-0.854666,   -1.280502,2.482687,-0.666211,
+       -1.366728,2.482687,-0.459107,   -1.348469,2.4945,-0.452973,     -1.263395,2.4945,-0.657311,
+       -1.263395,2.4945,-0.657311,     -1.280502,2.482687,-0.666211,   -1.366728,2.482687,-0.459107,
+       -1.42049,2.482687,-0.236115,    -1.401513,2.4945,-0.232961,     -1.348469,2.4945,-0.452973,
+       -1.348469,2.4945,-0.452973,     -1.366728,2.482687,-0.459107,   -1.42049,2.482687,-0.236115,
+       -1.439025,2.482687,0,   -1.4198,2.4945,0,       -1.401513,2.4945,-0.232961,
+       -1.401513,2.4945,-0.232961,     -1.42049,2.482687,-0.236115,    -1.439025,2.482687,0,
+       -0.239491,2.463,-1.4408,        -0.236115,2.482687,-1.42049,    0,2.482687,-1.439025,
+       0,2.482687,-1.439025,   0,2.463,-1.4596,        -0.239491,2.463,-1.4408,
+       -0.465671,2.463,-1.38627,       -0.459107,2.482687,-1.366728,   -0.236115,2.482687,-1.42049,
+       -0.236115,2.482687,-1.42049,    -0.239491,2.463,-1.4408,        -0.465671,2.463,-1.38627,
+       -0.675736,2.463,-1.29881,       -0.666211,2.482687,-1.280502,   -0.459107,2.482687,-1.366728,
+       -0.459107,2.482687,-1.366728,   -0.465671,2.463,-1.38627,       -0.675736,2.463,-1.29881,
+       -0.866886,2.463,-1.181225,      -0.854666,2.482687,-1.164574,   -0.666211,2.482687,-1.280502,
+       -0.666211,2.482687,-1.280502,   -0.675736,2.463,-1.29881,       -0.866886,2.463,-1.181225,
+       -1.036316,2.463,-1.036316,      -1.021708,2.482687,-1.021708,   -0.854666,2.482687,-1.164574,
+       -0.854666,2.482687,-1.164574,   -0.866886,2.463,-1.181225,      -1.036316,2.463,-1.036316,
+       -1.181225,2.463,-0.866886,      -1.164574,2.482687,-0.854666,   -1.021708,2.482687,-1.021708,
+       -1.021708,2.482687,-1.021708,   -1.036316,2.463,-1.036316,      -1.181225,2.463,-0.866886,
+       -1.29881,2.463,-0.675736,       -1.280502,2.482687,-0.666211,   -1.164574,2.482687,-0.854666,
+       -1.164574,2.482687,-0.854666,   -1.181225,2.463,-0.866886,      -1.29881,2.463,-0.675736,
+       -1.38627,2.463,-0.465671,       -1.366728,2.482687,-0.459107,   -1.280502,2.482687,-0.666211,
+       -1.280502,2.482687,-0.666211,   -1.29881,2.463,-0.675736,       -1.38627,2.463,-0.465671,
+       -1.4408,2.463,-0.239491,        -1.42049,2.482687,-0.236115,    -1.366728,2.482687,-0.459107,
+       -1.366728,2.482687,-0.459107,   -1.38627,2.463,-0.465671,       -1.4408,2.463,-0.239491,
+       -1.4596,2.463,0,        -1.439025,2.482687,0,   -1.42049,2.482687,-0.236115,
+       -1.42049,2.482687,-0.236115,    -1.4408,2.463,-0.239491,        -1.4596,2.463,0,
+       -0.242892,2.435437,-1.461258,   -0.239491,2.463,-1.4408,        0,2.463,-1.4596,
+       0,2.463,-1.4596,        0,2.435437,-1.480325,   -0.242892,2.435437,-1.461258,
+       -0.472283,2.435437,-1.405953,   -0.465671,2.463,-1.38627,       -0.239491,2.463,-1.4408,
+       -0.239491,2.463,-1.4408,        -0.242892,2.435437,-1.461258,   -0.472283,2.435437,-1.405953,
+       -0.685331,2.435437,-1.317252,   -0.675736,2.463,-1.29881,       -0.465671,2.463,-1.38627,
+       -0.465671,2.463,-1.38627,       -0.472283,2.435437,-1.405953,   -0.685331,2.435437,-1.317252,
+       -0.879195,2.435437,-1.197997,   -0.866886,2.463,-1.181225,      -0.675736,2.463,-1.29881,
+       -0.675736,2.463,-1.29881,       -0.685331,2.435437,-1.317252,   -0.879195,2.435437,-1.197997,
+       -1.051031,2.435437,-1.051031,   -1.036316,2.463,-1.036316,      -0.866886,2.463,-1.181225,
+       -0.866886,2.463,-1.181225,      -0.879195,2.435437,-1.197997,   -1.051031,2.435437,-1.051031,
+       -1.197997,2.435437,-0.879195,   -1.181225,2.463,-0.866886,      -1.036316,2.463,-1.036316,
+       -1.036316,2.463,-1.036316,      -1.051031,2.435437,-1.051031,   -1.197997,2.435437,-0.879195,
+       -1.317252,2.435437,-0.685331,   -1.29881,2.463,-0.675736,       -1.181225,2.463,-0.866886,
+       -1.181225,2.463,-0.866886,      -1.197997,2.435437,-0.879195,   -1.317252,2.435437,-0.685331,
+       -1.405953,2.435437,-0.472283,   -1.38627,2.463,-0.465671,       -1.29881,2.463,-0.675736,
+       -1.29881,2.463,-0.675736,       -1.317252,2.435437,-0.685331,   -1.405953,2.435437,-0.472283,
+       -1.461258,2.435437,-0.242892,   -1.4408,2.463,-0.239491,        -1.38627,2.463,-0.465671,
+       -1.38627,2.463,-0.465671,       -1.405953,2.435437,-0.472283,   -1.461258,2.435437,-0.242892,
+       -1.480325,2.435437,0,   -1.4596,2.463,0,        -1.4408,2.463,-0.239491,
+       -1.4408,2.463,-0.239491,        -1.461258,2.435437,-0.242892,   -1.480325,2.435437,0,
+       -0.24612,2.4,-1.48068,  -0.242892,2.435437,-1.461258,   0,2.435437,-1.480325,
+       0,2.435437,-1.480325,   0,2.4,-1.5,     -0.24612,2.4,-1.48068,
+       -0.47856,2.4,-1.42464,  -0.472283,2.435437,-1.405953,   -0.242892,2.435437,-1.461258,
+       -0.242892,2.435437,-1.461258,   -0.24612,2.4,-1.48068,  -0.47856,2.4,-1.42464,
+       -0.69444,2.4,-1.33476,  -0.685331,2.435437,-1.317252,   -0.472283,2.435437,-1.405953,
+       -0.472283,2.435437,-1.405953,   -0.47856,2.4,-1.42464,  -0.69444,2.4,-1.33476,
+       -0.89088,2.4,-1.21392,  -0.879195,2.435437,-1.197997,   -0.685331,2.435437,-1.317252,
+       -0.685331,2.435437,-1.317252,   -0.69444,2.4,-1.33476,  -0.89088,2.4,-1.21392,
+       -1.065,2.4,-1.065,      -1.051031,2.435437,-1.051031,   -0.879195,2.435437,-1.197997,
+       -0.879195,2.435437,-1.197997,   -0.89088,2.4,-1.21392,  -1.065,2.4,-1.065,
+       -1.21392,2.4,-0.89088,  -1.197997,2.435437,-0.879195,   -1.051031,2.435437,-1.051031,
+       -1.051031,2.435437,-1.051031,   -1.065,2.4,-1.065,      -1.21392,2.4,-0.89088,
+       -1.33476,2.4,-0.69444,  -1.317252,2.435437,-0.685331,   -1.197997,2.435437,-0.879195,
+       -1.197997,2.435437,-0.879195,   -1.21392,2.4,-0.89088,  -1.33476,2.4,-0.69444,
+       -1.42464,2.4,-0.47856,  -1.405953,2.435437,-0.472283,   -1.317252,2.435437,-0.685331,
+       -1.317252,2.435437,-0.685331,   -1.33476,2.4,-0.69444,  -1.42464,2.4,-0.47856,
+       -1.48068,2.4,-0.24612,  -1.461258,2.435437,-0.242892,   -1.405953,2.435437,-0.472283,
+       -1.405953,2.435437,-0.472283,   -1.42464,2.4,-0.47856,  -1.48068,2.4,-0.24612,
+       -1.5,2.4,0,     -1.480325,2.435437,0,   -1.461258,2.435437,-0.242892,
+       -1.461258,2.435437,-0.242892,   -1.48068,2.4,-0.24612,  -1.5,2.4,0,
+       -1.368074,2.435437,0.227403,    -1.381968,2.4,0.229712, -1.4,2.4,0,
+       -1.4,2.4,0,     -1.385925,2.435437,0,   -1.368074,2.435437,0.227403,
+       -1.316296,2.435437,0.442166,    -1.329664,2.4,0.446656, -1.381968,2.4,0.229712,
+       -1.381968,2.4,0.229712, -1.368074,2.435437,0.227403,    -1.316296,2.435437,0.442166,
+       -1.233252,2.435437,0.641628,    -1.245776,2.4,0.648144, -1.329664,2.4,0.446656,
+       -1.329664,2.4,0.446656, -1.316296,2.435437,0.442166,    -1.233252,2.435437,0.641628,
+       -1.121601,2.435437,0.823129,    -1.132992,2.4,0.831488, -1.245776,2.4,0.648144,
+       -1.245776,2.4,0.648144, -1.233252,2.435437,0.641628,    -1.121601,2.435437,0.823129,
+       -0.984007,2.435437,0.984007,    -0.994,2.4,0.994,       -1.132992,2.4,0.831488,
+       -1.132992,2.4,0.831488, -1.121601,2.435437,0.823129,    -0.984007,2.435437,0.984007,
+       -0.823129,2.435437,1.121601,    -0.831488,2.4,1.132992, -0.994,2.4,0.994,
+       -0.994,2.4,0.994,       -0.984007,2.435437,0.984007,    -0.823129,2.435437,1.121601,
+       -0.641628,2.435437,1.233252,    -0.648144,2.4,1.245776, -0.831488,2.4,1.132992,
+       -0.831488,2.4,1.132992, -0.823129,2.435437,1.121601,    -0.641628,2.435437,1.233252,
+       -0.442166,2.435437,1.316296,    -0.446656,2.4,1.329664, -0.648144,2.4,1.245776,
+       -0.648144,2.4,1.245776, -0.641628,2.435437,1.233252,    -0.442166,2.435437,1.316296,
+       -0.227403,2.435437,1.368074,    -0.229712,2.4,1.381968, -0.446656,2.4,1.329664,
+       -0.446656,2.4,1.329664, -0.442166,2.435437,1.316296,    -0.227403,2.435437,1.368074,
+       0,2.435437,1.385925,    0,2.4,1.4,      -0.229712,2.4,1.381968,
+       -0.229712,2.4,1.381968, -0.227403,2.435437,1.368074,    0,2.435437,1.385925,
+       -1.36262,2.463,0.226496,        -1.368074,2.435437,0.227403,    -1.385925,2.435437,0,
+       -1.385925,2.435437,0,   -1.3804,2.463,0,        -1.36262,2.463,0.226496,
+       -1.311049,2.463,0.440403,       -1.316296,2.435437,0.442166,    -1.368074,2.435437,0.227403,
+       -1.368074,2.435437,0.227403,    -1.36262,2.463,0.226496,        -1.311049,2.463,0.440403,
+       -1.228335,2.463,0.63907,        -1.233252,2.435437,0.641628,    -1.316296,2.435437,0.442166,
+       -1.316296,2.435437,0.442166,    -1.311049,2.463,0.440403,       -1.228335,2.463,0.63907,
+       -1.11713,2.463,0.819847,        -1.121601,2.435437,0.823129,    -1.233252,2.435437,0.641628,
+       -1.233252,2.435437,0.641628,    -1.228335,2.463,0.63907,        -1.11713,2.463,0.819847,
+       -0.980084,2.463,0.980084,       -0.984007,2.435437,0.984007,    -1.121601,2.435437,0.823129,
+       -1.121601,2.435437,0.823129,    -1.11713,2.463,0.819847,        -0.980084,2.463,0.980084,
+       -0.819847,2.463,1.11713,        -0.823129,2.435437,1.121601,    -0.984007,2.435437,0.984007,
+       -0.984007,2.435437,0.984007,    -0.980084,2.463,0.980084,       -0.819847,2.463,1.11713,
+       -0.63907,2.463,1.228335,        -0.641628,2.435437,1.233252,    -0.823129,2.435437,1.121601,
+       -0.823129,2.435437,1.121601,    -0.819847,2.463,1.11713,        -0.63907,2.463,1.228335,
+       -0.440403,2.463,1.311049,       -0.442166,2.435437,1.316296,    -0.641628,2.435437,1.233252,
+       -0.641628,2.435437,1.233252,    -0.63907,2.463,1.228335,        -0.440403,2.463,1.311049,
+       -0.226496,2.463,1.36262,        -0.227403,2.435437,1.368074,    -0.442166,2.435437,1.316296,
+       -0.442166,2.435437,1.316296,    -0.440403,2.463,1.311049,       -0.226496,2.463,1.36262,
+       0,2.463,1.3804, 0,2.435437,1.385925,    -0.227403,2.435437,1.368074,
+       -0.227403,2.435437,1.368074,    -0.226496,2.463,1.36262,        0,2.463,1.3804,
+       -1.364422,2.482687,0.226795,    -1.36262,2.463,0.226496,        -1.3804,2.463,0,
+       -1.3804,2.463,0,        -1.382225,2.482687,0,   -1.364422,2.482687,0.226795,
+       -1.312782,2.482687,0.440985,    -1.311049,2.463,0.440403,       -1.36262,2.463,0.226496,
+       -1.36262,2.463,0.226496,        -1.364422,2.482687,0.226795,    -1.312782,2.482687,0.440985,
+       -1.229959,2.482687,0.639915,    -1.228335,2.463,0.63907,        -1.311049,2.463,0.440403,
+       -1.311049,2.463,0.440403,       -1.312782,2.482687,0.440985,    -1.229959,2.482687,0.639915,
+       -1.118607,2.482687,0.820931,    -1.11713,2.463,0.819847,        -1.228335,2.463,0.63907,
+       -1.228335,2.463,0.63907,        -1.229959,2.482687,0.639915,    -1.118607,2.482687,0.820931,
+       -0.98138,2.482687,0.98138,      -0.980084,2.463,0.980084,       -1.11713,2.463,0.819847,
+       -1.11713,2.463,0.819847,        -1.118607,2.482687,0.820931,    -0.98138,2.482687,0.98138,
+       -0.820931,2.482687,1.118607,    -0.819847,2.463,1.11713,        -0.980084,2.463,0.980084,
+       -0.980084,2.463,0.980084,       -0.98138,2.482687,0.98138,      -0.820931,2.482687,1.118607,
+       -0.639915,2.482687,1.229959,    -0.63907,2.463,1.228335,        -0.819847,2.463,1.11713,
+       -0.819847,2.463,1.11713,        -0.820931,2.482687,1.118607,    -0.639915,2.482687,1.229959,
+       -0.440985,2.482687,1.312782,    -0.440403,2.463,1.311049,       -0.63907,2.463,1.228335,
+       -0.63907,2.463,1.228335,        -0.639915,2.482687,1.229959,    -0.440985,2.482687,1.312782,
+       -0.226795,2.482687,1.364422,    -0.226496,2.463,1.36262,        -0.440403,2.463,1.311049,
+       -0.440403,2.463,1.311049,       -0.440985,2.482687,1.312782,    -0.226795,2.482687,1.364422,
+       0,2.482687,1.382225,    0,2.463,1.3804, -0.226496,2.463,1.36262,
+       -0.226496,2.463,1.36262,        -0.226795,2.482687,1.364422,    0,2.482687,1.382225,
+       -1.372294,2.4945,0.228104,      -1.364422,2.482687,0.226795,    -1.382225,2.482687,0,
+       -1.382225,2.482687,0,   -1.3902,2.4945,0,       -1.372294,2.4945,0.228104,
+       -1.320356,2.4945,0.443529,      -1.312782,2.482687,0.440985,    -1.364422,2.482687,0.226795,
+       -1.364422,2.482687,0.226795,    -1.372294,2.4945,0.228104,      -1.320356,2.4945,0.443529,
+       -1.237056,2.4945,0.643607,      -1.229959,2.482687,0.639915,    -1.312782,2.482687,0.440985,
+       -1.312782,2.482687,0.440985,    -1.320356,2.4945,0.443529,      -1.237056,2.4945,0.643607,
+       -1.125061,2.4945,0.825668,      -1.118607,2.482687,0.820931,    -1.229959,2.482687,0.639915,
+       -1.229959,2.482687,0.639915,    -1.237056,2.4945,0.643607,      -1.125061,2.4945,0.825668,
+       -0.987042,2.4945,0.987042,      -0.98138,2.482687,0.98138,      -1.118607,2.482687,0.820931,
+       -1.118607,2.482687,0.820931,    -1.125061,2.4945,0.825668,      -0.987042,2.4945,0.987042,
+       -0.825668,2.4945,1.125061,      -0.820931,2.482687,1.118607,    -0.98138,2.482687,0.98138,
+       -0.98138,2.482687,0.98138,      -0.987042,2.4945,0.987042,      -0.825668,2.4945,1.125061,
+       -0.643607,2.4945,1.237056,      -0.639915,2.482687,1.229959,    -0.820931,2.482687,1.118607,
+       -0.820931,2.482687,1.118607,    -0.825668,2.4945,1.125061,      -0.643607,2.4945,1.237056,
+       -0.443529,2.4945,1.320356,      -0.440985,2.482687,1.312782,    -0.639915,2.482687,1.229959,
+       -0.639915,2.482687,1.229959,    -0.643607,2.4945,1.237056,      -0.443529,2.4945,1.320356,
+       -0.228104,2.4945,1.372294,      -0.226795,2.482687,1.364422,    -0.440985,2.482687,1.312782,
+       -0.440985,2.482687,1.312782,    -0.443529,2.4945,1.320356,      -0.228104,2.4945,1.372294,
+       0,2.4945,1.3902,        0,2.482687,1.382225,    -0.226795,2.482687,1.364422,
+       -0.226795,2.482687,1.364422,    -0.228104,2.4945,1.372294,      0,2.4945,1.3902,
+       -1.385053,2.498438,0.230225,    -1.372294,2.4945,0.228104,      -1.3902,2.4945,0,
+       -1.3902,2.4945,0,       -1.403125,2.498438,0,   -1.385053,2.498438,0.230225,
+       -1.332632,2.498438,0.447653,    -1.320356,2.4945,0.443529,      -1.372294,2.4945,0.228104,
+       -1.372294,2.4945,0.228104,      -1.385053,2.498438,0.230225,    -1.332632,2.498438,0.447653,
+       -1.248557,2.498438,0.649591,    -1.237056,2.4945,0.643607,      -1.320356,2.4945,0.443529,
+       -1.320356,2.4945,0.443529,      -1.332632,2.498438,0.447653,    -1.248557,2.498438,0.649591,
+       -1.135521,2.498438,0.833344,    -1.125061,2.4945,0.825668,      -1.237056,2.4945,0.643607,
+       -1.237056,2.4945,0.643607,      -1.248557,2.498438,0.649591,    -1.135521,2.498438,0.833344,
+       -0.996219,2.498438,0.996219,    -0.987042,2.4945,0.987042,      -1.125061,2.4945,0.825668,
+       -1.125061,2.4945,0.825668,      -1.135521,2.498438,0.833344,    -0.996219,2.498438,0.996219,
+       -0.833344,2.498438,1.135521,    -0.825668,2.4945,1.125061,      -0.987042,2.4945,0.987042,
+       -0.987042,2.4945,0.987042,      -0.996219,2.498438,0.996219,    -0.833344,2.498438,1.135521,
+       -0.649591,2.498438,1.248557,    -0.643607,2.4945,1.237056,      -0.825668,2.4945,1.125061,
+       -0.825668,2.4945,1.125061,      -0.833344,2.498438,1.135521,    -0.649591,2.498438,1.248557,
+       -0.447653,2.498438,1.332632,    -0.443529,2.4945,1.320356,      -0.643607,2.4945,1.237056,
+       -0.643607,2.4945,1.237056,      -0.649591,2.498438,1.248557,    -0.447653,2.498438,1.332632,
+       -0.230225,2.498438,1.385053,    -0.228104,2.4945,1.372294,      -0.443529,2.4945,1.320356,
+       -0.443529,2.4945,1.320356,      -0.447653,2.498438,1.332632,    -0.230225,2.498438,1.385053,
+       0,2.498438,1.403125,    0,2.4945,1.3902,        -0.228104,2.4945,1.372294,
+       -0.228104,2.4945,1.372294,      -0.230225,2.498438,1.385053,    0,2.498438,1.403125,
+       -1.401513,2.4945,0.232961,      -1.385053,2.498438,0.230225,    -1.403125,2.498438,0,
+       -1.403125,2.498438,0,   -1.4198,2.4945,0,       -1.401513,2.4945,0.232961,
+       -1.348469,2.4945,0.452973,      -1.332632,2.498438,0.447653,    -1.385053,2.498438,0.230225,
+       -1.385053,2.498438,0.230225,    -1.401513,2.4945,0.232961,      -1.348469,2.4945,0.452973,
+       -1.263395,2.4945,0.657311,      -1.248557,2.498438,0.649591,    -1.332632,2.498438,0.447653,
+       -1.332632,2.498438,0.447653,    -1.348469,2.4945,0.452973,      -1.263395,2.4945,0.657311,
+       -1.149016,2.4945,0.843248,      -1.135521,2.498438,0.833344,    -1.248557,2.498438,0.649591,
+       -1.248557,2.498438,0.649591,    -1.263395,2.4945,0.657311,      -1.149016,2.4945,0.843248,
+       -1.008058,2.4945,1.008058,      -0.996219,2.498438,0.996219,    -1.135521,2.498438,0.833344,
+       -1.135521,2.498438,0.833344,    -1.149016,2.4945,0.843248,      -1.008058,2.4945,1.008058,
+       -0.843248,2.4945,1.149016,      -0.833344,2.498438,1.135521,    -0.996219,2.498438,0.996219,
+       -0.996219,2.498438,0.996219,    -1.008058,2.4945,1.008058,      -0.843248,2.4945,1.149016,
+       -0.657311,2.4945,1.263395,      -0.649591,2.498438,1.248557,    -0.833344,2.498438,1.135521,
+       -0.833344,2.498438,1.135521,    -0.843248,2.4945,1.149016,      -0.657311,2.4945,1.263395,
+       -0.452973,2.4945,1.348469,      -0.447653,2.498438,1.332632,    -0.649591,2.498438,1.248557,
+       -0.649591,2.498438,1.248557,    -0.657311,2.4945,1.263395,      -0.452973,2.4945,1.348469,
+       -0.232961,2.4945,1.401513,      -0.230225,2.498438,1.385053,    -0.447653,2.498438,1.332632,
+       -0.447653,2.498438,1.332632,    -0.452973,2.4945,1.348469,      -0.232961,2.4945,1.401513,
+       0,2.4945,1.4198,        0,2.498438,1.403125,    -0.230225,2.498438,1.385053,
+       -0.230225,2.498438,1.385053,    -0.232961,2.4945,1.401513,      0,2.4945,1.4198,
+       -1.42049,2.482687,0.236115,     -1.401513,2.4945,0.232961,      -1.4198,2.4945,0,
+       -1.4198,2.4945,0,       -1.439025,2.482687,0,   -1.42049,2.482687,0.236115,
+       -1.366728,2.482687,0.459107,    -1.348469,2.4945,0.452973,      -1.401513,2.4945,0.232961,
+       -1.401513,2.4945,0.232961,      -1.42049,2.482687,0.236115,     -1.366728,2.482687,0.459107,
+       -1.280502,2.482687,0.666211,    -1.263395,2.4945,0.657311,      -1.348469,2.4945,0.452973,
+       -1.348469,2.4945,0.452973,      -1.366728,2.482687,0.459107,    -1.280502,2.482687,0.666211,
+       -1.164574,2.482687,0.854666,    -1.149016,2.4945,0.843248,      -1.263395,2.4945,0.657311,
+       -1.263395,2.4945,0.657311,      -1.280502,2.482687,0.666211,    -1.164574,2.482687,0.854666,
+       -1.021708,2.482687,1.021708,    -1.008058,2.4945,1.008058,      -1.149016,2.4945,0.843248,
+       -1.149016,2.4945,0.843248,      -1.164574,2.482687,0.854666,    -1.021708,2.482687,1.021708,
+       -0.854666,2.482687,1.164574,    -0.843248,2.4945,1.149016,      -1.008058,2.4945,1.008058,
+       -1.008058,2.4945,1.008058,      -1.021708,2.482687,1.021708,    -0.854666,2.482687,1.164574,
+       -0.666211,2.482687,1.280502,    -0.657311,2.4945,1.263395,      -0.843248,2.4945,1.149016,
+       -0.843248,2.4945,1.149016,      -0.854666,2.482687,1.164574,    -0.666211,2.482687,1.280502,
+       -0.459107,2.482687,1.366728,    -0.452973,2.4945,1.348469,      -0.657311,2.4945,1.263395,
+       -0.657311,2.4945,1.263395,      -0.666211,2.482687,1.280502,    -0.459107,2.482687,1.366728,
+       -0.236115,2.482687,1.42049,     -0.232961,2.4945,1.401513,      -0.452973,2.4945,1.348469,
+       -0.452973,2.4945,1.348469,      -0.459107,2.482687,1.366728,    -0.236115,2.482687,1.42049,
+       0,2.482687,1.439025,    0,2.4945,1.4198,        -0.232961,2.4945,1.401513,
+       -0.232961,2.4945,1.401513,      -0.236115,2.482687,1.42049,     0,2.482687,1.439025,
+       -1.4408,2.463,0.239491, -1.42049,2.482687,0.236115,     -1.439025,2.482687,0,
+       -1.439025,2.482687,0,   -1.4596,2.463,0,        -1.4408,2.463,0.239491,
+       -1.38627,2.463,0.465671,        -1.366728,2.482687,0.459107,    -1.42049,2.482687,0.236115,
+       -1.42049,2.482687,0.236115,     -1.4408,2.463,0.239491, -1.38627,2.463,0.465671,
+       -1.29881,2.463,0.675736,        -1.280502,2.482687,0.666211,    -1.366728,2.482687,0.459107,
+       -1.366728,2.482687,0.459107,    -1.38627,2.463,0.465671,        -1.29881,2.463,0.675736,
+       -1.181225,2.463,0.866886,       -1.164574,2.482687,0.854666,    -1.280502,2.482687,0.666211,
+       -1.280502,2.482687,0.666211,    -1.29881,2.463,0.675736,        -1.181225,2.463,0.866886,
+       -1.036316,2.463,1.036316,       -1.021708,2.482687,1.021708,    -1.164574,2.482687,0.854666,
+       -1.164574,2.482687,0.854666,    -1.181225,2.463,0.866886,       -1.036316,2.463,1.036316,
+       -0.866886,2.463,1.181225,       -0.854666,2.482687,1.164574,    -1.021708,2.482687,1.021708,
+       -1.021708,2.482687,1.021708,    -1.036316,2.463,1.036316,       -0.866886,2.463,1.181225,
+       -0.675736,2.463,1.29881,        -0.666211,2.482687,1.280502,    -0.854666,2.482687,1.164574,
+       -0.854666,2.482687,1.164574,    -0.866886,2.463,1.181225,       -0.675736,2.463,1.29881,
+       -0.465671,2.463,1.38627,        -0.459107,2.482687,1.366728,    -0.666211,2.482687,1.280502,
+       -0.666211,2.482687,1.280502,    -0.675736,2.463,1.29881,        -0.465671,2.463,1.38627,
+       -0.239491,2.463,1.4408, -0.236115,2.482687,1.42049,     -0.459107,2.482687,1.366728,
+       -0.459107,2.482687,1.366728,    -0.465671,2.463,1.38627,        -0.239491,2.463,1.4408,
+       0,2.463,1.4596, 0,2.482687,1.439025,    -0.236115,2.482687,1.42049,
+       -0.236115,2.482687,1.42049,     -0.239491,2.463,1.4408, 0,2.463,1.4596,
+       -1.461258,2.435437,0.242892,    -1.4408,2.463,0.239491, -1.4596,2.463,0,
+       -1.4596,2.463,0,        -1.480325,2.435437,0,   -1.461258,2.435437,0.242892,
+       -1.405953,2.435437,0.472283,    -1.38627,2.463,0.465671,        -1.4408,2.463,0.239491,
+       -1.4408,2.463,0.239491, -1.461258,2.435437,0.242892,    -1.405953,2.435437,0.472283,
+       -1.317252,2.435437,0.685331,    -1.29881,2.463,0.675736,        -1.38627,2.463,0.465671,
+       -1.38627,2.463,0.465671,        -1.405953,2.435437,0.472283,    -1.317252,2.435437,0.685331,
+       -1.197997,2.435437,0.879195,    -1.181225,2.463,0.866886,       -1.29881,2.463,0.675736,
+       -1.29881,2.463,0.675736,        -1.317252,2.435437,0.685331,    -1.197997,2.435437,0.879195,
+       -1.051031,2.435437,1.051031,    -1.036316,2.463,1.036316,       -1.181225,2.463,0.866886,
+       -1.181225,2.463,0.866886,       -1.197997,2.435437,0.879195,    -1.051031,2.435437,1.051031,
+       -0.879195,2.435437,1.197997,    -0.866886,2.463,1.181225,       -1.036316,2.463,1.036316,
+       -1.036316,2.463,1.036316,       -1.051031,2.435437,1.051031,    -0.879195,2.435437,1.197997,
+       -0.685331,2.435437,1.317252,    -0.675736,2.463,1.29881,        -0.866886,2.463,1.181225,
+       -0.866886,2.463,1.181225,       -0.879195,2.435437,1.197997,    -0.685331,2.435437,1.317252,
+       -0.472283,2.435437,1.405953,    -0.465671,2.463,1.38627,        -0.675736,2.463,1.29881,
+       -0.675736,2.463,1.29881,        -0.685331,2.435437,1.317252,    -0.472283,2.435437,1.405953,
+       -0.242892,2.435437,1.461258,    -0.239491,2.463,1.4408, -0.465671,2.463,1.38627,
+       -0.465671,2.463,1.38627,        -0.472283,2.435437,1.405953,    -0.242892,2.435437,1.461258,
+       0,2.435437,1.480325,    0,2.463,1.4596, -0.239491,2.463,1.4408,
+       -0.239491,2.463,1.4408, -0.242892,2.435437,1.461258,    0,2.435437,1.480325,
+       -1.48068,2.4,0.24612,   -1.461258,2.435437,0.242892,    -1.480325,2.435437,0,
+       -1.480325,2.435437,0,   -1.5,2.4,0,     -1.48068,2.4,0.24612,
+       -1.42464,2.4,0.47856,   -1.405953,2.435437,0.472283,    -1.461258,2.435437,0.242892,
+       -1.461258,2.435437,0.242892,    -1.48068,2.4,0.24612,   -1.42464,2.4,0.47856,
+       -1.33476,2.4,0.69444,   -1.317252,2.435437,0.685331,    -1.405953,2.435437,0.472283,
+       -1.405953,2.435437,0.472283,    -1.42464,2.4,0.47856,   -1.33476,2.4,0.69444,
+       -1.21392,2.4,0.89088,   -1.197997,2.435437,0.879195,    -1.317252,2.435437,0.685331,
+       -1.317252,2.435437,0.685331,    -1.33476,2.4,0.69444,   -1.21392,2.4,0.89088,
+       -1.065,2.4,1.065,       -1.051031,2.435437,1.051031,    -1.197997,2.435437,0.879195,
+       -1.197997,2.435437,0.879195,    -1.21392,2.4,0.89088,   -1.065,2.4,1.065,
+       -0.89088,2.4,1.21392,   -0.879195,2.435437,1.197997,    -1.051031,2.435437,1.051031,
+       -1.051031,2.435437,1.051031,    -1.065,2.4,1.065,       -0.89088,2.4,1.21392,
+       -0.69444,2.4,1.33476,   -0.685331,2.435437,1.317252,    -0.879195,2.435437,1.197997,
+       -0.879195,2.435437,1.197997,    -0.89088,2.4,1.21392,   -0.69444,2.4,1.33476,
+       -0.47856,2.4,1.42464,   -0.472283,2.435437,1.405953,    -0.685331,2.435437,1.317252,
+       -0.685331,2.435437,1.317252,    -0.69444,2.4,1.33476,   -0.47856,2.4,1.42464,
+       -0.24612,2.4,1.48068,   -0.242892,2.435437,1.461258,    -0.472283,2.435437,1.405953,
+       -0.472283,2.435437,1.405953,    -0.47856,2.4,1.42464,   -0.24612,2.4,1.48068,
+       0,2.4,1.5,      0,2.435437,1.480325,    -0.242892,2.435437,1.461258,
+       -0.242892,2.435437,1.461258,    -0.24612,2.4,1.48068,   0,2.4,1.5,
+       0.227403,2.435437,1.368074,     0.229712,2.4,1.381968,  0,2.4,1.4,
+       0,2.4,1.4,      0,2.435437,1.385925,    0.227403,2.435437,1.368074,
+       0.442166,2.435437,1.316296,     0.446656,2.4,1.329664,  0.229712,2.4,1.381968,
+       0.229712,2.4,1.381968,  0.227403,2.435437,1.368074,     0.442166,2.435437,1.316296,
+       0.641628,2.435437,1.233252,     0.648144,2.4,1.245776,  0.446656,2.4,1.329664,
+       0.446656,2.4,1.329664,  0.442166,2.435437,1.316296,     0.641628,2.435437,1.233252,
+       0.823129,2.435437,1.121601,     0.831488,2.4,1.132992,  0.648144,2.4,1.245776,
+       0.648144,2.4,1.245776,  0.641628,2.435437,1.233252,     0.823129,2.435437,1.121601,
+       0.984007,2.435437,0.984007,     0.994,2.4,0.994,        0.831488,2.4,1.132992,
+       0.831488,2.4,1.132992,  0.823129,2.435437,1.121601,     0.984007,2.435437,0.984007,
+       1.121601,2.435437,0.823129,     1.132992,2.4,0.831488,  0.994,2.4,0.994,
+       0.994,2.4,0.994,        0.984007,2.435437,0.984007,     1.121601,2.435437,0.823129,
+       1.233252,2.435437,0.641628,     1.245776,2.4,0.648144,  1.132992,2.4,0.831488,
+       1.132992,2.4,0.831488,  1.121601,2.435437,0.823129,     1.233252,2.435437,0.641628,
+       1.316296,2.435437,0.442166,     1.329664,2.4,0.446656,  1.245776,2.4,0.648144,
+       1.245776,2.4,0.648144,  1.233252,2.435437,0.641628,     1.316296,2.435437,0.442166,
+       1.368074,2.435437,0.227403,     1.381968,2.4,0.229712,  1.329664,2.4,0.446656,
+       1.329664,2.4,0.446656,  1.316296,2.435437,0.442166,     1.368074,2.435437,0.227403,
+       1.385925,2.435437,0,    1.4,2.4,0,      1.381968,2.4,0.229712,
+       1.381968,2.4,0.229712,  1.368074,2.435437,0.227403,     1.385925,2.435437,0,
+       0.226496,2.463,1.36262, 0.227403,2.435437,1.368074,     0,2.435437,1.385925,
+       0,2.435437,1.385925,    0,2.463,1.3804, 0.226496,2.463,1.36262,
+       0.440403,2.463,1.311049,        0.442166,2.435437,1.316296,     0.227403,2.435437,1.368074,
+       0.227403,2.435437,1.368074,     0.226496,2.463,1.36262, 0.440403,2.463,1.311049,
+       0.63907,2.463,1.228335, 0.641628,2.435437,1.233252,     0.442166,2.435437,1.316296,
+       0.442166,2.435437,1.316296,     0.440403,2.463,1.311049,        0.63907,2.463,1.228335,
+       0.819847,2.463,1.11713, 0.823129,2.435437,1.121601,     0.641628,2.435437,1.233252,
+       0.641628,2.435437,1.233252,     0.63907,2.463,1.228335, 0.819847,2.463,1.11713,
+       0.980084,2.463,0.980084,        0.984007,2.435437,0.984007,     0.823129,2.435437,1.121601,
+       0.823129,2.435437,1.121601,     0.819847,2.463,1.11713, 0.980084,2.463,0.980084,
+       1.11713,2.463,0.819847, 1.121601,2.435437,0.823129,     0.984007,2.435437,0.984007,
+       0.984007,2.435437,0.984007,     0.980084,2.463,0.980084,        1.11713,2.463,0.819847,
+       1.228335,2.463,0.63907, 1.233252,2.435437,0.641628,     1.121601,2.435437,0.823129,
+       1.121601,2.435437,0.823129,     1.11713,2.463,0.819847, 1.228335,2.463,0.63907,
+       1.311049,2.463,0.440403,        1.316296,2.435437,0.442166,     1.233252,2.435437,0.641628,
+       1.233252,2.435437,0.641628,     1.228335,2.463,0.63907, 1.311049,2.463,0.440403,
+       1.36262,2.463,0.226496, 1.368074,2.435437,0.227403,     1.316296,2.435437,0.442166,
+       1.316296,2.435437,0.442166,     1.311049,2.463,0.440403,        1.36262,2.463,0.226496,
+       1.3804,2.463,0, 1.385925,2.435437,0,    1.368074,2.435437,0.227403,
+       1.368074,2.435437,0.227403,     1.36262,2.463,0.226496, 1.3804,2.463,0,
+       0.226795,2.482687,1.364422,     0.226496,2.463,1.36262, 0,2.463,1.3804,
+       0,2.463,1.3804, 0,2.482687,1.382225,    0.226795,2.482687,1.364422,
+       0.440985,2.482687,1.312782,     0.440403,2.463,1.311049,        0.226496,2.463,1.36262,
+       0.226496,2.463,1.36262, 0.226795,2.482687,1.364422,     0.440985,2.482687,1.312782,
+       0.639915,2.482687,1.229959,     0.63907,2.463,1.228335, 0.440403,2.463,1.311049,
+       0.440403,2.463,1.311049,        0.440985,2.482687,1.312782,     0.639915,2.482687,1.229959,
+       0.820931,2.482687,1.118607,     0.819847,2.463,1.11713, 0.63907,2.463,1.228335,
+       0.63907,2.463,1.228335, 0.639915,2.482687,1.229959,     0.820931,2.482687,1.118607,
+       0.98138,2.482687,0.98138,       0.980084,2.463,0.980084,        0.819847,2.463,1.11713,
+       0.819847,2.463,1.11713, 0.820931,2.482687,1.118607,     0.98138,2.482687,0.98138,
+       1.118607,2.482687,0.820931,     1.11713,2.463,0.819847, 0.980084,2.463,0.980084,
+       0.980084,2.463,0.980084,        0.98138,2.482687,0.98138,       1.118607,2.482687,0.820931,
+       1.229959,2.482687,0.639915,     1.228335,2.463,0.63907, 1.11713,2.463,0.819847,
+       1.11713,2.463,0.819847, 1.118607,2.482687,0.820931,     1.229959,2.482687,0.639915,
+       1.312782,2.482687,0.440985,     1.311049,2.463,0.440403,        1.228335,2.463,0.63907,
+       1.228335,2.463,0.63907, 1.229959,2.482687,0.639915,     1.312782,2.482687,0.440985,
+       1.364422,2.482687,0.226795,     1.36262,2.463,0.226496, 1.311049,2.463,0.440403,
+       1.311049,2.463,0.440403,        1.312782,2.482687,0.440985,     1.364422,2.482687,0.226795,
+       1.382225,2.482687,0,    1.3804,2.463,0, 1.36262,2.463,0.226496,
+       1.36262,2.463,0.226496, 1.364422,2.482687,0.226795,     1.382225,2.482687,0,
+       0.228104,2.4945,1.372294,       0.226795,2.482687,1.364422,     0,2.482687,1.382225,
+       0,2.482687,1.382225,    0,2.4945,1.3902,        0.228104,2.4945,1.372294,
+       0.443529,2.4945,1.320356,       0.440985,2.482687,1.312782,     0.226795,2.482687,1.364422,
+       0.226795,2.482687,1.364422,     0.228104,2.4945,1.372294,       0.443529,2.4945,1.320356,
+       0.643607,2.4945,1.237056,       0.639915,2.482687,1.229959,     0.440985,2.482687,1.312782,
+       0.440985,2.482687,1.312782,     0.443529,2.4945,1.320356,       0.643607,2.4945,1.237056,
+       0.825668,2.4945,1.125061,       0.820931,2.482687,1.118607,     0.639915,2.482687,1.229959,
+       0.639915,2.482687,1.229959,     0.643607,2.4945,1.237056,       0.825668,2.4945,1.125061,
+       0.987042,2.4945,0.987042,       0.98138,2.482687,0.98138,       0.820931,2.482687,1.118607,
+       0.820931,2.482687,1.118607,     0.825668,2.4945,1.125061,       0.987042,2.4945,0.987042,
+       1.125061,2.4945,0.825668,       1.118607,2.482687,0.820931,     0.98138,2.482687,0.98138,
+       0.98138,2.482687,0.98138,       0.987042,2.4945,0.987042,       1.125061,2.4945,0.825668,
+       1.237056,2.4945,0.643607,       1.229959,2.482687,0.639915,     1.118607,2.482687,0.820931,
+       1.118607,2.482687,0.820931,     1.125061,2.4945,0.825668,       1.237056,2.4945,0.643607,
+       1.320356,2.4945,0.443529,       1.312782,2.482687,0.440985,     1.229959,2.482687,0.639915,
+       1.229959,2.482687,0.639915,     1.237056,2.4945,0.643607,       1.320356,2.4945,0.443529,
+       1.372294,2.4945,0.228104,       1.364422,2.482687,0.226795,     1.312782,2.482687,0.440985,
+       1.312782,2.482687,0.440985,     1.320356,2.4945,0.443529,       1.372294,2.4945,0.228104,
+       1.3902,2.4945,0,        1.382225,2.482687,0,    1.364422,2.482687,0.226795,
+       1.364422,2.482687,0.226795,     1.372294,2.4945,0.228104,       1.3902,2.4945,0,
+       0.230225,2.498438,1.385053,     0.228104,2.4945,1.372294,       0,2.4945,1.3902,
+       0,2.4945,1.3902,        0,2.498438,1.403125,    0.230225,2.498438,1.385053,
+       0.447653,2.498438,1.332632,     0.443529,2.4945,1.320356,       0.228104,2.4945,1.372294,
+       0.228104,2.4945,1.372294,       0.230225,2.498438,1.385053,     0.447653,2.498438,1.332632,
+       0.649591,2.498438,1.248557,     0.643607,2.4945,1.237056,       0.443529,2.4945,1.320356,
+       0.443529,2.4945,1.320356,       0.447653,2.498438,1.332632,     0.649591,2.498438,1.248557,
+       0.833344,2.498438,1.135521,     0.825668,2.4945,1.125061,       0.643607,2.4945,1.237056,
+       0.643607,2.4945,1.237056,       0.649591,2.498438,1.248557,     0.833344,2.498438,1.135521,
+       0.996219,2.498438,0.996219,     0.987042,2.4945,0.987042,       0.825668,2.4945,1.125061,
+       0.825668,2.4945,1.125061,       0.833344,2.498438,1.135521,     0.996219,2.498438,0.996219,
+       1.135521,2.498438,0.833344,     1.125061,2.4945,0.825668,       0.987042,2.4945,0.987042,
+       0.987042,2.4945,0.987042,       0.996219,2.498438,0.996219,     1.135521,2.498438,0.833344,
+       1.248557,2.498438,0.649591,     1.237056,2.4945,0.643607,       1.125061,2.4945,0.825668,
+       1.125061,2.4945,0.825668,       1.135521,2.498438,0.833344,     1.248557,2.498438,0.649591,
+       1.332632,2.498438,0.447653,     1.320356,2.4945,0.443529,       1.237056,2.4945,0.643607,
+       1.237056,2.4945,0.643607,       1.248557,2.498438,0.649591,     1.332632,2.498438,0.447653,
+       1.385053,2.498438,0.230225,     1.372294,2.4945,0.228104,       1.320356,2.4945,0.443529,
+       1.320356,2.4945,0.443529,       1.332632,2.498438,0.447653,     1.385053,2.498438,0.230225,
+       1.403125,2.498438,0,    1.3902,2.4945,0,        1.372294,2.4945,0.228104,
+       1.372294,2.4945,0.228104,       1.385053,2.498438,0.230225,     1.403125,2.498438,0,
+       0.232961,2.4945,1.401513,       0.230225,2.498438,1.385053,     0,2.498438,1.403125,
+       0,2.498438,1.403125,    0,2.4945,1.4198,        0.232961,2.4945,1.401513,
+       0.452973,2.4945,1.348469,       0.447653,2.498438,1.332632,     0.230225,2.498438,1.385053,
+       0.230225,2.498438,1.385053,     0.232961,2.4945,1.401513,       0.452973,2.4945,1.348469,
+       0.657311,2.4945,1.263395,       0.649591,2.498438,1.248557,     0.447653,2.498438,1.332632,
+       0.447653,2.498438,1.332632,     0.452973,2.4945,1.348469,       0.657311,2.4945,1.263395,
+       0.843248,2.4945,1.149016,       0.833344,2.498438,1.135521,     0.649591,2.498438,1.248557,
+       0.649591,2.498438,1.248557,     0.657311,2.4945,1.263395,       0.843248,2.4945,1.149016,
+       1.008058,2.4945,1.008058,       0.996219,2.498438,0.996219,     0.833344,2.498438,1.135521,
+       0.833344,2.498438,1.135521,     0.843248,2.4945,1.149016,       1.008058,2.4945,1.008058,
+       1.149016,2.4945,0.843248,       1.135521,2.498438,0.833344,     0.996219,2.498438,0.996219,
+       0.996219,2.498438,0.996219,     1.008058,2.4945,1.008058,       1.149016,2.4945,0.843248,
+       1.263395,2.4945,0.657311,       1.248557,2.498438,0.649591,     1.135521,2.498438,0.833344,
+       1.135521,2.498438,0.833344,     1.149016,2.4945,0.843248,       1.263395,2.4945,0.657311,
+       1.348469,2.4945,0.452973,       1.332632,2.498438,0.447653,     1.248557,2.498438,0.649591,
+       1.248557,2.498438,0.649591,     1.263395,2.4945,0.657311,       1.348469,2.4945,0.452973,
+       1.401513,2.4945,0.232961,       1.385053,2.498438,0.230225,     1.332632,2.498438,0.447653,
+       1.332632,2.498438,0.447653,     1.348469,2.4945,0.452973,       1.401513,2.4945,0.232961,
+       1.4198,2.4945,0,        1.403125,2.498438,0,    1.385053,2.498438,0.230225,
+       1.385053,2.498438,0.230225,     1.401513,2.4945,0.232961,       1.4198,2.4945,0,
+       0.236115,2.482687,1.42049,      0.232961,2.4945,1.401513,       0,2.4945,1.4198,
+       0,2.4945,1.4198,        0,2.482687,1.439025,    0.236115,2.482687,1.42049,
+       0.459107,2.482687,1.366728,     0.452973,2.4945,1.348469,       0.232961,2.4945,1.401513,
+       0.232961,2.4945,1.401513,       0.236115,2.482687,1.42049,      0.459107,2.482687,1.366728,
+       0.666211,2.482687,1.280502,     0.657311,2.4945,1.263395,       0.452973,2.4945,1.348469,
+       0.452973,2.4945,1.348469,       0.459107,2.482687,1.366728,     0.666211,2.482687,1.280502,
+       0.854666,2.482687,1.164574,     0.843248,2.4945,1.149016,       0.657311,2.4945,1.263395,
+       0.657311,2.4945,1.263395,       0.666211,2.482687,1.280502,     0.854666,2.482687,1.164574,
+       1.021708,2.482687,1.021708,     1.008058,2.4945,1.008058,       0.843248,2.4945,1.149016,
+       0.843248,2.4945,1.149016,       0.854666,2.482687,1.164574,     1.021708,2.482687,1.021708,
+       1.164574,2.482687,0.854666,     1.149016,2.4945,0.843248,       1.008058,2.4945,1.008058,
+       1.008058,2.4945,1.008058,       1.021708,2.482687,1.021708,     1.164574,2.482687,0.854666,
+       1.280502,2.482687,0.666211,     1.263395,2.4945,0.657311,       1.149016,2.4945,0.843248,
+       1.149016,2.4945,0.843248,       1.164574,2.482687,0.854666,     1.280502,2.482687,0.666211,
+       1.366728,2.482687,0.459107,     1.348469,2.4945,0.452973,       1.263395,2.4945,0.657311,
+       1.263395,2.4945,0.657311,       1.280502,2.482687,0.666211,     1.366728,2.482687,0.459107,
+       1.42049,2.482687,0.236115,      1.401513,2.4945,0.232961,       1.348469,2.4945,0.452973,
+       1.348469,2.4945,0.452973,       1.366728,2.482687,0.459107,     1.42049,2.482687,0.236115,
+       1.439025,2.482687,0,    1.4198,2.4945,0,        1.401513,2.4945,0.232961,
+       1.401513,2.4945,0.232961,       1.42049,2.482687,0.236115,      1.439025,2.482687,0,
+       0.239491,2.463,1.4408,  0.236115,2.482687,1.42049,      0,2.482687,1.439025,
+       0,2.482687,1.439025,    0,2.463,1.4596, 0.239491,2.463,1.4408,
+       0.465671,2.463,1.38627, 0.459107,2.482687,1.366728,     0.236115,2.482687,1.42049,
+       0.236115,2.482687,1.42049,      0.239491,2.463,1.4408,  0.465671,2.463,1.38627,
+       0.675736,2.463,1.29881, 0.666211,2.482687,1.280502,     0.459107,2.482687,1.366728,
+       0.459107,2.482687,1.366728,     0.465671,2.463,1.38627, 0.675736,2.463,1.29881,
+       0.866886,2.463,1.181225,        0.854666,2.482687,1.164574,     0.666211,2.482687,1.280502,
+       0.666211,2.482687,1.280502,     0.675736,2.463,1.29881, 0.866886,2.463,1.181225,
+       1.036316,2.463,1.036316,        1.021708,2.482687,1.021708,     0.854666,2.482687,1.164574,
+       0.854666,2.482687,1.164574,     0.866886,2.463,1.181225,        1.036316,2.463,1.036316,
+       1.181225,2.463,0.866886,        1.164574,2.482687,0.854666,     1.021708,2.482687,1.021708,
+       1.021708,2.482687,1.021708,     1.036316,2.463,1.036316,        1.181225,2.463,0.866886,
+       1.29881,2.463,0.675736, 1.280502,2.482687,0.666211,     1.164574,2.482687,0.854666,
+       1.164574,2.482687,0.854666,     1.181225,2.463,0.866886,        1.29881,2.463,0.675736,
+       1.38627,2.463,0.465671, 1.366728,2.482687,0.459107,     1.280502,2.482687,0.666211,
+       1.280502,2.482687,0.666211,     1.29881,2.463,0.675736, 1.38627,2.463,0.465671,
+       1.4408,2.463,0.239491,  1.42049,2.482687,0.236115,      1.366728,2.482687,0.459107,
+       1.366728,2.482687,0.459107,     1.38627,2.463,0.465671, 1.4408,2.463,0.239491,
+       1.4596,2.463,0, 1.439025,2.482687,0,    1.42049,2.482687,0.236115,
+       1.42049,2.482687,0.236115,      1.4408,2.463,0.239491,  1.4596,2.463,0,
+       0.242892,2.435437,1.461258,     0.239491,2.463,1.4408,  0,2.463,1.4596,
+       0,2.463,1.4596, 0,2.435437,1.480325,    0.242892,2.435437,1.461258,
+       0.472283,2.435437,1.405953,     0.465671,2.463,1.38627, 0.239491,2.463,1.4408,
+       0.239491,2.463,1.4408,  0.242892,2.435437,1.461258,     0.472283,2.435437,1.405953,
+       0.685331,2.435437,1.317252,     0.675736,2.463,1.29881, 0.465671,2.463,1.38627,
+       0.465671,2.463,1.38627, 0.472283,2.435437,1.405953,     0.685331,2.435437,1.317252,
+       0.879195,2.435437,1.197997,     0.866886,2.463,1.181225,        0.675736,2.463,1.29881,
+       0.675736,2.463,1.29881, 0.685331,2.435437,1.317252,     0.879195,2.435437,1.197997,
+       1.051031,2.435437,1.051031,     1.036316,2.463,1.036316,        0.866886,2.463,1.181225,
+       0.866886,2.463,1.181225,        0.879195,2.435437,1.197997,     1.051031,2.435437,1.051031,
+       1.197997,2.435437,0.879195,     1.181225,2.463,0.866886,        1.036316,2.463,1.036316,
+       1.036316,2.463,1.036316,        1.051031,2.435437,1.051031,     1.197997,2.435437,0.879195,
+       1.317252,2.435437,0.685331,     1.29881,2.463,0.675736, 1.181225,2.463,0.866886,
+       1.181225,2.463,0.866886,        1.197997,2.435437,0.879195,     1.317252,2.435437,0.685331,
+       1.405953,2.435437,0.472283,     1.38627,2.463,0.465671, 1.29881,2.463,0.675736,
+       1.29881,2.463,0.675736, 1.317252,2.435437,0.685331,     1.405953,2.435437,0.472283,
+       1.461258,2.435437,0.242892,     1.4408,2.463,0.239491,  1.38627,2.463,0.465671,
+       1.38627,2.463,0.465671, 1.405953,2.435437,0.472283,     1.461258,2.435437,0.242892,
+       1.480325,2.435437,0,    1.4596,2.463,0, 1.4408,2.463,0.239491,
+       1.4408,2.463,0.239491,  1.461258,2.435437,0.242892,     1.480325,2.435437,0,
+       0.24612,2.4,1.48068,    0.242892,2.435437,1.461258,     0,2.435437,1.480325,
+       0,2.435437,1.480325,    0,2.4,1.5,      0.24612,2.4,1.48068,
+       0.47856,2.4,1.42464,    0.472283,2.435437,1.405953,     0.242892,2.435437,1.461258,
+       0.242892,2.435437,1.461258,     0.24612,2.4,1.48068,    0.47856,2.4,1.42464,
+       0.69444,2.4,1.33476,    0.685331,2.435437,1.317252,     0.472283,2.435437,1.405953,
+       0.472283,2.435437,1.405953,     0.47856,2.4,1.42464,    0.69444,2.4,1.33476,
+       0.89088,2.4,1.21392,    0.879195,2.435437,1.197997,     0.685331,2.435437,1.317252,
+       0.685331,2.435437,1.317252,     0.69444,2.4,1.33476,    0.89088,2.4,1.21392,
+       1.065,2.4,1.065,        1.051031,2.435437,1.051031,     0.879195,2.435437,1.197997,
+       0.879195,2.435437,1.197997,     0.89088,2.4,1.21392,    1.065,2.4,1.065,
+       1.21392,2.4,0.89088,    1.197997,2.435437,0.879195,     1.051031,2.435437,1.051031,
+       1.051031,2.435437,1.051031,     1.065,2.4,1.065,        1.21392,2.4,0.89088,
+       1.33476,2.4,0.69444,    1.317252,2.435437,0.685331,     1.197997,2.435437,0.879195,
+       1.197997,2.435437,0.879195,     1.21392,2.4,0.89088,    1.33476,2.4,0.69444,
+       1.42464,2.4,0.47856,    1.405953,2.435437,0.472283,     1.317252,2.435437,0.685331,
+       1.317252,2.435437,0.685331,     1.33476,2.4,0.69444,    1.42464,2.4,0.47856,
+       1.48068,2.4,0.24612,    1.461258,2.435437,0.242892,     1.405953,2.435437,0.472283,
+       1.405953,2.435437,0.472283,     1.42464,2.4,0.47856,    1.48068,2.4,0.24612,
+       1.5,2.4,0,      1.480325,2.435437,0,    1.461258,2.435437,0.242892,
+       1.461258,2.435437,0.242892,     1.48068,2.4,0.24612,    1.5,2.4,0,
+       1.554467,2.242575,-0.258385,    1.48068,2.4,-0.24612,   1.5,2.4,0,
+       1.5,2.4,0,      1.57475,2.242575,0,     1.554467,2.242575,-0.258385,
+       1.495635,2.242575,-0.502408,    1.42464,2.4,-0.47856,   1.48068,2.4,-0.24612,
+       1.48068,2.4,-0.24612,   1.554467,2.242575,-0.258385,    1.495635,2.242575,-0.502408,
+       1.401276,2.242575,-0.729046,    1.33476,2.4,-0.69444,   1.42464,2.4,-0.47856,
+       1.42464,2.4,-0.47856,   1.495635,2.242575,-0.502408,    1.401276,2.242575,-0.729046,
+       1.274414,2.242575,-0.935276,    1.21392,2.4,-0.89088,   1.33476,2.4,-0.69444,
+       1.33476,2.4,-0.69444,   1.401276,2.242575,-0.729046,    1.274414,2.242575,-0.935276,
+       1.118073,2.242575,-1.118073,    1.065,2.4,-1.065,       1.21392,2.4,-0.89088,
+       1.21392,2.4,-0.89088,   1.274414,2.242575,-0.935276,    1.118073,2.242575,-1.118073,
+       0.935276,2.242575,-1.274414,    0.89088,2.4,-1.21392,   1.065,2.4,-1.065,
+       1.065,2.4,-1.065,       1.118073,2.242575,-1.118073,    0.935276,2.242575,-1.274414,
+       0.729046,2.242575,-1.401276,    0.69444,2.4,-1.33476,   0.89088,2.4,-1.21392,
+       0.89088,2.4,-1.21392,   0.935276,2.242575,-1.274414,    0.729046,2.242575,-1.401276,
+       0.502408,2.242575,-1.495635,    0.47856,2.4,-1.42464,   0.69444,2.4,-1.33476,
+       0.69444,2.4,-1.33476,   0.729046,2.242575,-1.401276,    0.502408,2.242575,-1.495635,
+       0.258385,2.242575,-1.554467,    0.24612,2.4,-1.48068,   0.47856,2.4,-1.42464,
+       0.47856,2.4,-1.42464,   0.502408,2.242575,-1.495635,    0.258385,2.242575,-1.554467,
+       0,2.242575,-1.57475,    0,2.4,-1.5,     0.24612,2.4,-1.48068,
+       0.24612,2.4,-1.48068,   0.258385,2.242575,-1.554467,    0,2.242575,-1.57475,
+       1.626774,2.0856,-0.270404,      1.554467,2.242575,-0.258385,    1.57475,2.242575,0,
+       1.57475,2.242575,0,     1.648,2.0856,0, 1.626774,2.0856,-0.270404,
+       1.565204,2.0856,-0.525778,      1.495635,2.242575,-0.502408,    1.554467,2.242575,-0.258385,
+       1.554467,2.242575,-0.258385,    1.626774,2.0856,-0.270404,      1.565204,2.0856,-0.525778,
+       1.466456,2.0856,-0.762958,      1.401276,2.242575,-0.729046,    1.495635,2.242575,-0.502408,
+       1.495635,2.242575,-0.502408,    1.565204,2.0856,-0.525778,      1.466456,2.0856,-0.762958,
+       1.333693,2.0856,-0.97878,       1.274414,2.242575,-0.935276,    1.401276,2.242575,-0.729046,
+       1.401276,2.242575,-0.729046,    1.466456,2.0856,-0.762958,      1.333693,2.0856,-0.97878,
+       1.17008,2.0856,-1.17008,        1.118073,2.242575,-1.118073,    1.274414,2.242575,-0.935276,
+       1.274414,2.242575,-0.935276,    1.333693,2.0856,-0.97878,       1.17008,2.0856,-1.17008,
+       0.97878,2.0856,-1.333693,       0.935276,2.242575,-1.274414,    1.118073,2.242575,-1.118073,
+       1.118073,2.242575,-1.118073,    1.17008,2.0856,-1.17008,        0.97878,2.0856,-1.333693,
+       0.762958,2.0856,-1.466456,      0.729046,2.242575,-1.401276,    0.935276,2.242575,-1.274414,
+       0.935276,2.242575,-1.274414,    0.97878,2.0856,-1.333693,       0.762958,2.0856,-1.466456,
+       0.525778,2.0856,-1.565204,      0.502408,2.242575,-1.495635,    0.729046,2.242575,-1.401276,
+       0.729046,2.242575,-1.401276,    0.762958,2.0856,-1.466456,      0.525778,2.0856,-1.565204,
+       0.270404,2.0856,-1.626774,      0.258385,2.242575,-1.554467,    0.502408,2.242575,-1.495635,
+       0.502408,2.242575,-1.495635,    0.525778,2.0856,-1.565204,      0.270404,2.0856,-1.626774,
+       0,2.0856,-1.648,        0,2.242575,-1.57475,    0.258385,2.242575,-1.554467,
+       0.258385,2.242575,-1.554467,    0.270404,2.0856,-1.626774,      0,2.0856,-1.648,
+       1.696119,1.929525,-0.28193,     1.626774,2.0856,-0.270404,      1.648,2.0856,0,
+       1.648,2.0856,0, 1.71825,1.929525,0,     1.696119,1.929525,-0.28193,
+       1.631925,1.929525,-0.54819,     1.565204,2.0856,-0.525778,      1.626774,2.0856,-0.270404,
+       1.626774,2.0856,-0.270404,      1.696119,1.929525,-0.28193,     1.631925,1.929525,-0.54819,
+       1.528968,1.929525,-0.795481,    1.466456,2.0856,-0.762958,      1.565204,2.0856,-0.525778,
+       1.565204,2.0856,-0.525778,      1.631925,1.929525,-0.54819,     1.528968,1.929525,-0.795481,
+       1.390545,1.929525,-1.020503,    1.333693,2.0856,-0.97878,       1.466456,2.0856,-0.762958,
+       1.466456,2.0856,-0.762958,      1.528968,1.929525,-0.795481,    1.390545,1.929525,-1.020503,
+       1.219958,1.929525,-1.219958,    1.17008,2.0856,-1.17008,        1.333693,2.0856,-0.97878,
+       1.333693,2.0856,-0.97878,       1.390545,1.929525,-1.020503,    1.219958,1.929525,-1.219958,
+       1.020503,1.929525,-1.390545,    0.97878,2.0856,-1.333693,       1.17008,2.0856,-1.17008,
+       1.17008,2.0856,-1.17008,        1.219958,1.929525,-1.219958,    1.020503,1.929525,-1.390545,
+       0.795481,1.929525,-1.528968,    0.762958,2.0856,-1.466456,      0.97878,2.0856,-1.333693,
+       0.97878,2.0856,-1.333693,       1.020503,1.929525,-1.390545,    0.795481,1.929525,-1.528968,
+       0.54819,1.929525,-1.631925,     0.525778,2.0856,-1.565204,      0.762958,2.0856,-1.466456,
+       0.762958,2.0856,-1.466456,      0.795481,1.929525,-1.528968,    0.54819,1.929525,-1.631925,
+       0.28193,1.929525,-1.696119,     0.270404,2.0856,-1.626774,      0.525778,2.0856,-1.565204,
+       0.525778,2.0856,-1.565204,      0.54819,1.929525,-1.631925,     0.28193,1.929525,-1.696119,
+       0,1.929525,-1.71825,    0,2.0856,-1.648,        0.270404,2.0856,-1.626774,
+       0.270404,2.0856,-1.626774,      0.28193,1.929525,-1.696119,     0,1.929525,-1.71825,
+       1.761022,1.7748,-0.292719,      1.696119,1.929525,-0.28193,     1.71825,1.929525,0,
+       1.71825,1.929525,0,     1.784,1.7748,0, 1.761022,1.7748,-0.292719,
+       1.694372,1.7748,-0.569167,      1.631925,1.929525,-0.54819,     1.696119,1.929525,-0.28193,
+       1.696119,1.929525,-0.28193,     1.761022,1.7748,-0.292719,      1.694372,1.7748,-0.569167,
+       1.587475,1.7748,-0.825921,      1.528968,1.929525,-0.795481,    1.631925,1.929525,-0.54819,
+       1.631925,1.929525,-0.54819,     1.694372,1.7748,-0.569167,      1.587475,1.7748,-0.825921,
+       1.443756,1.7748,-1.059553,      1.390545,1.929525,-1.020503,    1.528968,1.929525,-0.795481,
+       1.528968,1.929525,-0.795481,    1.587475,1.7748,-0.825921,      1.443756,1.7748,-1.059553,
+       1.26664,1.7748,-1.26664,        1.219958,1.929525,-1.219958,    1.390545,1.929525,-1.020503,
+       1.390545,1.929525,-1.020503,    1.443756,1.7748,-1.059553,      1.26664,1.7748,-1.26664,
+       1.059553,1.7748,-1.443756,      1.020503,1.929525,-1.390545,    1.219958,1.929525,-1.219958,
+       1.219958,1.929525,-1.219958,    1.26664,1.7748,-1.26664,        1.059553,1.7748,-1.443756,
+       0.825921,1.7748,-1.587475,      0.795481,1.929525,-1.528968,    1.020503,1.929525,-1.390545,
+       1.020503,1.929525,-1.390545,    1.059553,1.7748,-1.443756,      0.825921,1.7748,-1.587475,
+       0.569167,1.7748,-1.694372,      0.54819,1.929525,-1.631925,     0.795481,1.929525,-1.528968,
+       0.795481,1.929525,-1.528968,    0.825921,1.7748,-1.587475,      0.569167,1.7748,-1.694372,
+       0.292719,1.7748,-1.761022,      0.28193,1.929525,-1.696119,     0.54819,1.929525,-1.631925,
+       0.54819,1.929525,-1.631925,     0.569167,1.7748,-1.694372,      0.292719,1.7748,-1.761022,
+       0,1.7748,-1.784,        0,1.929525,-1.71825,    0.28193,1.929525,-1.696119,
+       0.28193,1.929525,-1.696119,     0.292719,1.7748,-1.761022,      0,1.7748,-1.784,
+       1.820003,1.621875,-0.302523,    1.761022,1.7748,-0.292719,      1.784,1.7748,0,
+       1.784,1.7748,0, 1.84375,1.621875,0,     1.820003,1.621875,-0.302523,
+       1.75112,1.621875,-0.58823,      1.694372,1.7748,-0.569167,      1.761022,1.7748,-0.292719,
+       1.761022,1.7748,-0.292719,      1.820003,1.621875,-0.302523,    1.75112,1.621875,-0.58823,
+       1.640643,1.621875,-0.853583,    1.587475,1.7748,-0.825921,      1.694372,1.7748,-0.569167,
+       1.694372,1.7748,-0.569167,      1.75112,1.621875,-0.58823,      1.640643,1.621875,-0.853583,
+       1.49211,1.621875,-1.09504,      1.443756,1.7748,-1.059553,      1.587475,1.7748,-0.825921,
+       1.587475,1.7748,-0.825921,      1.640643,1.621875,-0.853583,    1.49211,1.621875,-1.09504,
+       1.309063,1.621875,-1.309063,    1.26664,1.7748,-1.26664,        1.443756,1.7748,-1.059553,
+       1.443756,1.7748,-1.059553,      1.49211,1.621875,-1.09504,      1.309063,1.621875,-1.309063,
+       1.09504,1.621875,-1.49211,      1.059553,1.7748,-1.443756,      1.26664,1.7748,-1.26664,
+       1.26664,1.7748,-1.26664,        1.309063,1.621875,-1.309063,    1.09504,1.621875,-1.49211,
+       0.853583,1.621875,-1.640643,    0.825921,1.7748,-1.587475,      1.059553,1.7748,-1.443756,
+       1.059553,1.7748,-1.443756,      1.09504,1.621875,-1.49211,      0.853583,1.621875,-1.640643,
+       0.58823,1.621875,-1.75112,      0.569167,1.7748,-1.694372,      0.825921,1.7748,-1.587475,
+       0.825921,1.7748,-1.587475,      0.853583,1.621875,-1.640643,    0.58823,1.621875,-1.75112,
+       0.302522,1.621875,-1.820003,    0.292719,1.7748,-1.761022,      0.569167,1.7748,-1.694372,
+       0.569167,1.7748,-1.694372,      0.58823,1.621875,-1.75112,      0.302522,1.621875,-1.820003,
+       0,1.621875,-1.84375,    0,1.7748,-1.784,        0.292719,1.7748,-1.761022,
+       0.292719,1.7748,-1.761022,      0.302522,1.621875,-1.820003,    0,1.621875,-1.84375,
+       1.87158,1.4712,-0.311096,       1.820003,1.621875,-0.302523,    1.84375,1.621875,0,
+       1.84375,1.621875,0,     1.896,1.4712,0, 1.87158,1.4712,-0.311096,
+       1.800745,1.4712,-0.6049,        1.75112,1.621875,-0.58823,      1.820003,1.621875,-0.302523,
+       1.820003,1.621875,-0.302523,    1.87158,1.4712,-0.311096,       1.800745,1.4712,-0.6049,
+       1.687137,1.4712,-0.877772,      1.640643,1.621875,-0.853583,    1.75112,1.621875,-0.58823,
+       1.75112,1.621875,-0.58823,      1.800745,1.4712,-0.6049,        1.687137,1.4712,-0.877772,
+       1.534395,1.4712,-1.126072,      1.49211,1.621875,-1.09504,      1.640643,1.621875,-0.853583,
+       1.640643,1.621875,-0.853583,    1.687137,1.4712,-0.877772,      1.534395,1.4712,-1.126072,
+       1.34616,1.4712,-1.34616,        1.309063,1.621875,-1.309063,    1.49211,1.621875,-1.09504,
+       1.49211,1.621875,-1.09504,      1.534395,1.4712,-1.126072,      1.34616,1.4712,-1.34616,
+       1.126072,1.4712,-1.534395,      1.09504,1.621875,-1.49211,      1.309063,1.621875,-1.309063,
+       1.309063,1.621875,-1.309063,    1.34616,1.4712,-1.34616,        1.126072,1.4712,-1.534395,
+       0.877772,1.4712,-1.687137,      0.853583,1.621875,-1.640643,    1.09504,1.621875,-1.49211,
+       1.09504,1.621875,-1.49211,      1.126072,1.4712,-1.534395,      0.877772,1.4712,-1.687137,
+       0.6049,1.4712,-1.800745,        0.58823,1.621875,-1.75112,      0.853583,1.621875,-1.640643,
+       0.853583,1.621875,-1.640643,    0.877772,1.4712,-1.687137,      0.6049,1.4712,-1.800745,
+       0.311096,1.4712,-1.87158,       0.302522,1.621875,-1.820003,    0.58823,1.621875,-1.75112,
+       0.58823,1.621875,-1.75112,      0.6049,1.4712,-1.800745,        0.311096,1.4712,-1.87158,
+       0,1.4712,-1.896,        0,1.621875,-1.84375,    0.302522,1.621875,-1.820003,
+       0.302522,1.621875,-1.820003,    0.311096,1.4712,-1.87158,       0,1.4712,-1.896,
+       1.914272,1.323225,-0.318192,    1.87158,1.4712,-0.311096,       1.896,1.4712,0,
+       1.896,1.4712,0, 1.93925,1.323225,0,     1.914272,1.323225,-0.318192,
+       1.841822,1.323225,-0.618698,    1.800745,1.4712,-0.6049,        1.87158,1.4712,-0.311096,
+       1.87158,1.4712,-0.311096,       1.914272,1.323225,-0.318192,    1.841822,1.323225,-0.618698,
+       1.725622,1.323225,-0.897795,    1.687137,1.4712,-0.877772,      1.800745,1.4712,-0.6049,
+       1.800745,1.4712,-0.6049,        1.841822,1.323225,-0.618698,    1.725622,1.323225,-0.897795,
+       1.569396,1.323225,-1.151759,    1.534395,1.4712,-1.126072,      1.687137,1.4712,-0.877772,
+       1.687137,1.4712,-0.877772,      1.725622,1.323225,-0.897795,    1.569396,1.323225,-1.151759,
+       1.376867,1.323225,-1.376868,    1.34616,1.4712,-1.34616,        1.534395,1.4712,-1.126072,
+       1.534395,1.4712,-1.126072,      1.569396,1.323225,-1.151759,    1.376867,1.323225,-1.376868,
+       1.151759,1.323225,-1.569396,    1.126072,1.4712,-1.534395,      1.34616,1.4712,-1.34616,
+       1.34616,1.4712,-1.34616,        1.376867,1.323225,-1.376868,    1.151759,1.323225,-1.569396,
+       0.897795,1.323225,-1.725622,    0.877772,1.4712,-1.687137,      1.126072,1.4712,-1.534395,
+       1.126072,1.4712,-1.534395,      1.151759,1.323225,-1.569396,    0.897795,1.323225,-1.725622,
+       0.618698,1.323225,-1.841822,    0.6049,1.4712,-1.800745,        0.877772,1.4712,-1.687137,
+       0.877772,1.4712,-1.687137,      0.897795,1.323225,-1.725622,    0.618698,1.323225,-1.841822,
+       0.318192,1.323225,-1.914272,    0.311096,1.4712,-1.87158,       0.6049,1.4712,-1.800745,
+       0.6049,1.4712,-1.800745,        0.618698,1.323225,-1.841822,    0.318192,1.323225,-1.914272,
+       0,1.323225,-1.93925,    0,1.4712,-1.896,        0.311096,1.4712,-1.87158,
+       0.311096,1.4712,-1.87158,       0.318192,1.323225,-1.914272,    0,1.323225,-1.93925,
+       1.946601,1.1784,-0.323566,      1.914272,1.323225,-0.318192,    1.93925,1.323225,0,
+       1.93925,1.323225,0,     1.972,1.1784,0, 1.946601,1.1784,-0.323566,
+       1.872927,1.1784,-0.629147,      1.841822,1.323225,-0.618698,    1.914272,1.323225,-0.318192,
+       1.914272,1.323225,-0.318192,    1.946601,1.1784,-0.323566,      1.872927,1.1784,-0.629147,
+       1.754764,1.1784,-0.912957,      1.725622,1.323225,-0.897795,    1.841822,1.323225,-0.618698,
+       1.841822,1.323225,-0.618698,    1.872927,1.1784,-0.629147,      1.754764,1.1784,-0.912957,
+       1.5959,1.1784,-1.17121, 1.569396,1.323225,-1.151759,    1.725622,1.323225,-0.897795,
+       1.725622,1.323225,-0.897795,    1.754764,1.1784,-0.912957,      1.5959,1.1784,-1.17121,
+       1.40012,1.1784,-1.40012,        1.376867,1.323225,-1.376868,    1.569396,1.323225,-1.151759,
+       1.569396,1.323225,-1.151759,    1.5959,1.1784,-1.17121, 1.40012,1.1784,-1.40012,
+       1.17121,1.1784,-1.5959, 1.151759,1.323225,-1.569396,    1.376867,1.323225,-1.376868,
+       1.376867,1.323225,-1.376868,    1.40012,1.1784,-1.40012,        1.17121,1.1784,-1.5959,
+       0.912957,1.1784,-1.754764,      0.897795,1.323225,-1.725622,    1.151759,1.323225,-1.569396,
+       1.151759,1.323225,-1.569396,    1.17121,1.1784,-1.5959, 0.912957,1.1784,-1.754764,
+       0.629147,1.1784,-1.872927,      0.618698,1.323225,-1.841822,    0.897795,1.323225,-1.725622,
+       0.897795,1.323225,-1.725622,    0.912957,1.1784,-1.754764,      0.629147,1.1784,-1.872927,
+       0.323566,1.1784,-1.946601,      0.318192,1.323225,-1.914272,    0.618698,1.323225,-1.841822,
+       0.618698,1.323225,-1.841822,    0.629147,1.1784,-1.872927,      0.323566,1.1784,-1.946601,
+       0,1.1784,-1.972,        0,1.323225,-1.93925,    0.318192,1.323225,-1.914272,
+       0.318192,1.323225,-1.914272,    0.323566,1.1784,-1.946601,      0,1.1784,-1.972,
+       1.967083,1.037175,-0.32697,     1.946601,1.1784,-0.323566,      1.972,1.1784,0,
+       1.972,1.1784,0, 1.99275,1.037175,0,     1.967083,1.037175,-0.32697,
+       1.892634,1.037175,-0.635767,    1.872927,1.1784,-0.629147,      1.946601,1.1784,-0.323566,
+       1.946601,1.1784,-0.323566,      1.967083,1.037175,-0.32697,     1.892634,1.037175,-0.635767,
+       1.773229,1.037175,-0.922564,    1.754764,1.1784,-0.912957,      1.872927,1.1784,-0.629147,
+       1.872927,1.1784,-0.629147,      1.892634,1.037175,-0.635767,    1.773229,1.037175,-0.922564,
+       1.612693,1.037175,-1.183534,    1.5959,1.1784,-1.17121, 1.754764,1.1784,-0.912957,
+       1.754764,1.1784,-0.912957,      1.773229,1.037175,-0.922564,    1.612693,1.037175,-1.183534,
+       1.414853,1.037175,-1.414853,    1.40012,1.1784,-1.40012,        1.5959,1.1784,-1.17121,
+       1.5959,1.1784,-1.17121, 1.612693,1.037175,-1.183534,    1.414853,1.037175,-1.414853,
+       1.183534,1.037175,-1.612693,    1.17121,1.1784,-1.5959, 1.40012,1.1784,-1.40012,
+       1.40012,1.1784,-1.40012,        1.414853,1.037175,-1.414853,    1.183534,1.037175,-1.612693,
+       0.922564,1.037175,-1.773229,    0.912957,1.1784,-1.754764,      1.17121,1.1784,-1.5959,
+       1.17121,1.1784,-1.5959, 1.183534,1.037175,-1.612693,    0.922564,1.037175,-1.773229,
+       0.635767,1.037175,-1.892634,    0.629147,1.1784,-1.872927,      0.912957,1.1784,-1.754764,
+       0.912957,1.1784,-1.754764,      0.922564,1.037175,-1.773229,    0.635767,1.037175,-1.892634,
+       0.32697,1.037175,-1.967083,     0.323566,1.1784,-1.946601,      0.629147,1.1784,-1.872927,
+       0.629147,1.1784,-1.872927,      0.635767,1.037175,-1.892634,    0.32697,1.037175,-1.967083,
+       0,1.037175,-1.99275,    0,1.1784,-1.972,        0.323566,1.1784,-1.946601,
+       0.323566,1.1784,-1.946601,      0.32697,1.037175,-1.967083,     0,1.037175,-1.99275,
+       1.97424,0.9,-0.32816,   1.967083,1.037175,-0.32697,     1.99275,1.037175,0,
+       1.99275,1.037175,0,     2,0.9,0,        1.97424,0.9,-0.32816,
+       1.89952,0.9,-0.63808,   1.892634,1.037175,-0.635767,    1.967083,1.037175,-0.32697,
+       1.967083,1.037175,-0.32697,     1.97424,0.9,-0.32816,   1.89952,0.9,-0.63808,
+       1.77968,0.9,-0.92592,   1.773229,1.037175,-0.922564,    1.892634,1.037175,-0.635767,
+       1.892634,1.037175,-0.635767,    1.89952,0.9,-0.63808,   1.77968,0.9,-0.92592,
+       1.61856,0.9,-1.18784,   1.612693,1.037175,-1.183534,    1.773229,1.037175,-0.922564,
+       1.773229,1.037175,-0.922564,    1.77968,0.9,-0.92592,   1.61856,0.9,-1.18784,
+       1.42,0.9,-1.42, 1.414853,1.037175,-1.414853,    1.612693,1.037175,-1.183534,
+       1.612693,1.037175,-1.183534,    1.61856,0.9,-1.18784,   1.42,0.9,-1.42,
+       1.18784,0.9,-1.61856,   1.183534,1.037175,-1.612693,    1.414853,1.037175,-1.414853,
+       1.414853,1.037175,-1.414853,    1.42,0.9,-1.42, 1.18784,0.9,-1.61856,
+       0.92592,0.9,-1.77968,   0.922564,1.037175,-1.773229,    1.183534,1.037175,-1.612693,
+       1.183534,1.037175,-1.612693,    1.18784,0.9,-1.61856,   0.92592,0.9,-1.77968,
+       0.63808,0.9,-1.89952,   0.635767,1.037175,-1.892634,    0.922564,1.037175,-1.773229,
+       0.922564,1.037175,-1.773229,    0.92592,0.9,-1.77968,   0.63808,0.9,-1.89952,
+       0.32816,0.9,-1.97424,   0.32697,1.037175,-1.967083,     0.635767,1.037175,-1.892634,
+       0.635767,1.037175,-1.892634,    0.63808,0.9,-1.89952,   0.32816,0.9,-1.97424,
+       0,0.9,-2,       0,1.037175,-1.99275,    0.32697,1.037175,-1.967083,
+       0.32697,1.037175,-1.967083,     0.32816,0.9,-1.97424,   0,0.9,-2,
+       -0.258385,2.242575,-1.554467,   -0.24612,2.4,-1.48068,  0,2.4,-1.5,
+       0,2.4,-1.5,     0,2.242575,-1.57475,    -0.258385,2.242575,-1.554467,
+       -0.502408,2.242575,-1.495635,   -0.47856,2.4,-1.42464,  -0.24612,2.4,-1.48068,
+       -0.24612,2.4,-1.48068,  -0.258385,2.242575,-1.554467,   -0.502408,2.242575,-1.495635,
+       -0.729046,2.242575,-1.401276,   -0.69444,2.4,-1.33476,  -0.47856,2.4,-1.42464,
+       -0.47856,2.4,-1.42464,  -0.502408,2.242575,-1.495635,   -0.729046,2.242575,-1.401276,
+       -0.935276,2.242575,-1.274414,   -0.89088,2.4,-1.21392,  -0.69444,2.4,-1.33476,
+       -0.69444,2.4,-1.33476,  -0.729046,2.242575,-1.401276,   -0.935276,2.242575,-1.274414,
+       -1.118073,2.242575,-1.118073,   -1.065,2.4,-1.065,      -0.89088,2.4,-1.21392,
+       -0.89088,2.4,-1.21392,  -0.935276,2.242575,-1.274414,   -1.118073,2.242575,-1.118073,
+       -1.274414,2.242575,-0.935276,   -1.21392,2.4,-0.89088,  -1.065,2.4,-1.065,
+       -1.065,2.4,-1.065,      -1.118073,2.242575,-1.118073,   -1.274414,2.242575,-0.935276,
+       -1.401276,2.242575,-0.729046,   -1.33476,2.4,-0.69444,  -1.21392,2.4,-0.89088,
+       -1.21392,2.4,-0.89088,  -1.274414,2.242575,-0.935276,   -1.401276,2.242575,-0.729046,
+       -1.495635,2.242575,-0.502408,   -1.42464,2.4,-0.47856,  -1.33476,2.4,-0.69444,
+       -1.33476,2.4,-0.69444,  -1.401276,2.242575,-0.729046,   -1.495635,2.242575,-0.502408,
+       -1.554467,2.242575,-0.258385,   -1.48068,2.4,-0.24612,  -1.42464,2.4,-0.47856,
+       -1.42464,2.4,-0.47856,  -1.495635,2.242575,-0.502408,   -1.554467,2.242575,-0.258385,
+       -1.57475,2.242575,0,    -1.5,2.4,0,     -1.48068,2.4,-0.24612,
+       -1.48068,2.4,-0.24612,  -1.554467,2.242575,-0.258385,   -1.57475,2.242575,0,
+       -0.270404,2.0856,-1.626774,     -0.258385,2.242575,-1.554467,   0,2.242575,-1.57475,
+       0,2.242575,-1.57475,    0,2.0856,-1.648,        -0.270404,2.0856,-1.626774,
+       -0.525778,2.0856,-1.565204,     -0.502408,2.242575,-1.495635,   -0.258385,2.242575,-1.554467,
+       -0.258385,2.242575,-1.554467,   -0.270404,2.0856,-1.626774,     -0.525778,2.0856,-1.565204,
+       -0.762958,2.0856,-1.466456,     -0.729046,2.242575,-1.401276,   -0.502408,2.242575,-1.495635,
+       -0.502408,2.242575,-1.495635,   -0.525778,2.0856,-1.565204,     -0.762958,2.0856,-1.466456,
+       -0.97878,2.0856,-1.333693,      -0.935276,2.242575,-1.274414,   -0.729046,2.242575,-1.401276,
+       -0.729046,2.242575,-1.401276,   -0.762958,2.0856,-1.466456,     -0.97878,2.0856,-1.333693,
+       -1.17008,2.0856,-1.17008,       -1.118073,2.242575,-1.118073,   -0.935276,2.242575,-1.274414,
+       -0.935276,2.242575,-1.274414,   -0.97878,2.0856,-1.333693,      -1.17008,2.0856,-1.17008,
+       -1.333693,2.0856,-0.97878,      -1.274414,2.242575,-0.935276,   -1.118073,2.242575,-1.118073,
+       -1.118073,2.242575,-1.118073,   -1.17008,2.0856,-1.17008,       -1.333693,2.0856,-0.97878,
+       -1.466456,2.0856,-0.762958,     -1.401276,2.242575,-0.729046,   -1.274414,2.242575,-0.935276,
+       -1.274414,2.242575,-0.935276,   -1.333693,2.0856,-0.97878,      -1.466456,2.0856,-0.762958,
+       -1.565204,2.0856,-0.525778,     -1.495635,2.242575,-0.502408,   -1.401276,2.242575,-0.729046,
+       -1.401276,2.242575,-0.729046,   -1.466456,2.0856,-0.762958,     -1.565204,2.0856,-0.525778,
+       -1.626774,2.0856,-0.270404,     -1.554467,2.242575,-0.258385,   -1.495635,2.242575,-0.502408,
+       -1.495635,2.242575,-0.502408,   -1.565204,2.0856,-0.525778,     -1.626774,2.0856,-0.270404,
+       -1.648,2.0856,0,        -1.57475,2.242575,0,    -1.554467,2.242575,-0.258385,
+       -1.554467,2.242575,-0.258385,   -1.626774,2.0856,-0.270404,     -1.648,2.0856,0,
+       -0.28193,1.929525,-1.696119,    -0.270404,2.0856,-1.626774,     0,2.0856,-1.648,
+       0,2.0856,-1.648,        0,1.929525,-1.71825,    -0.28193,1.929525,-1.696119,
+       -0.54819,1.929525,-1.631925,    -0.525778,2.0856,-1.565204,     -0.270404,2.0856,-1.626774,
+       -0.270404,2.0856,-1.626774,     -0.28193,1.929525,-1.696119,    -0.54819,1.929525,-1.631925,
+       -0.795481,1.929525,-1.528968,   -0.762958,2.0856,-1.466456,     -0.525778,2.0856,-1.565204,
+       -0.525778,2.0856,-1.565204,     -0.54819,1.929525,-1.631925,    -0.795481,1.929525,-1.528968,
+       -1.020503,1.929525,-1.390545,   -0.97878,2.0856,-1.333693,      -0.762958,2.0856,-1.466456,
+       -0.762958,2.0856,-1.466456,     -0.795481,1.929525,-1.528968,   -1.020503,1.929525,-1.390545,
+       -1.219958,1.929525,-1.219958,   -1.17008,2.0856,-1.17008,       -0.97878,2.0856,-1.333693,
+       -0.97878,2.0856,-1.333693,      -1.020503,1.929525,-1.390545,   -1.219958,1.929525,-1.219958,
+       -1.390545,1.929525,-1.020503,   -1.333693,2.0856,-0.97878,      -1.17008,2.0856,-1.17008,
+       -1.17008,2.0856,-1.17008,       -1.219958,1.929525,-1.219958,   -1.390545,1.929525,-1.020503,
+       -1.528968,1.929525,-0.795481,   -1.466456,2.0856,-0.762958,     -1.333693,2.0856,-0.97878,
+       -1.333693,2.0856,-0.97878,      -1.390545,1.929525,-1.020503,   -1.528968,1.929525,-0.795481,
+       -1.631925,1.929525,-0.54819,    -1.565204,2.0856,-0.525778,     -1.466456,2.0856,-0.762958,
+       -1.466456,2.0856,-0.762958,     -1.528968,1.929525,-0.795481,   -1.631925,1.929525,-0.54819,
+       -1.696119,1.929525,-0.28193,    -1.626774,2.0856,-0.270404,     -1.565204,2.0856,-0.525778,
+       -1.565204,2.0856,-0.525778,     -1.631925,1.929525,-0.54819,    -1.696119,1.929525,-0.28193,
+       -1.71825,1.929525,0,    -1.648,2.0856,0,        -1.626774,2.0856,-0.270404,
+       -1.626774,2.0856,-0.270404,     -1.696119,1.929525,-0.28193,    -1.71825,1.929525,0,
+       -0.292719,1.7748,-1.761022,     -0.28193,1.929525,-1.696119,    0,1.929525,-1.71825,
+       0,1.929525,-1.71825,    0,1.7748,-1.784,        -0.292719,1.7748,-1.761022,
+       -0.569167,1.7748,-1.694372,     -0.54819,1.929525,-1.631925,    -0.28193,1.929525,-1.696119,
+       -0.28193,1.929525,-1.696119,    -0.292719,1.7748,-1.761022,     -0.569167,1.7748,-1.694372,
+       -0.825921,1.7748,-1.587475,     -0.795481,1.929525,-1.528968,   -0.54819,1.929525,-1.631925,
+       -0.54819,1.929525,-1.631925,    -0.569167,1.7748,-1.694372,     -0.825921,1.7748,-1.587475,
+       -1.059553,1.7748,-1.443756,     -1.020503,1.929525,-1.390545,   -0.795481,1.929525,-1.528968,
+       -0.795481,1.929525,-1.528968,   -0.825921,1.7748,-1.587475,     -1.059553,1.7748,-1.443756,
+       -1.26664,1.7748,-1.26664,       -1.219958,1.929525,-1.219958,   -1.020503,1.929525,-1.390545,
+       -1.020503,1.929525,-1.390545,   -1.059553,1.7748,-1.443756,     -1.26664,1.7748,-1.26664,
+       -1.443756,1.7748,-1.059553,     -1.390545,1.929525,-1.020503,   -1.219958,1.929525,-1.219958,
+       -1.219958,1.929525,-1.219958,   -1.26664,1.7748,-1.26664,       -1.443756,1.7748,-1.059553,
+       -1.587475,1.7748,-0.825921,     -1.528968,1.929525,-0.795481,   -1.390545,1.929525,-1.020503,
+       -1.390545,1.929525,-1.020503,   -1.443756,1.7748,-1.059553,     -1.587475,1.7748,-0.825921,
+       -1.694372,1.7748,-0.569167,     -1.631925,1.929525,-0.54819,    -1.528968,1.929525,-0.795481,
+       -1.528968,1.929525,-0.795481,   -1.587475,1.7748,-0.825921,     -1.694372,1.7748,-0.569167,
+       -1.761022,1.7748,-0.292719,     -1.696119,1.929525,-0.28193,    -1.631925,1.929525,-0.54819,
+       -1.631925,1.929525,-0.54819,    -1.694372,1.7748,-0.569167,     -1.761022,1.7748,-0.292719,
+       -1.784,1.7748,0,        -1.71825,1.929525,0,    -1.696119,1.929525,-0.28193,
+       -1.696119,1.929525,-0.28193,    -1.761022,1.7748,-0.292719,     -1.784,1.7748,0,
+       -0.302523,1.621875,-1.820003,   -0.292719,1.7748,-1.761022,     0,1.7748,-1.784,
+       0,1.7748,-1.784,        0,1.621875,-1.84375,    -0.302523,1.621875,-1.820003,
+       -0.58823,1.621875,-1.75112,     -0.569167,1.7748,-1.694372,     -0.292719,1.7748,-1.761022,
+       -0.292719,1.7748,-1.761022,     -0.302523,1.621875,-1.820003,   -0.58823,1.621875,-1.75112,
+       -0.853583,1.621875,-1.640643,   -0.825921,1.7748,-1.587475,     -0.569167,1.7748,-1.694372,
+       -0.569167,1.7748,-1.694372,     -0.58823,1.621875,-1.75112,     -0.853583,1.621875,-1.640643,
+       -1.09504,1.621875,-1.49211,     -1.059553,1.7748,-1.443756,     -0.825921,1.7748,-1.587475,
+       -0.825921,1.7748,-1.587475,     -0.853583,1.621875,-1.640643,   -1.09504,1.621875,-1.49211,
+       -1.309063,1.621875,-1.309063,   -1.26664,1.7748,-1.26664,       -1.059553,1.7748,-1.443756,
+       -1.059553,1.7748,-1.443756,     -1.09504,1.621875,-1.49211,     -1.309063,1.621875,-1.309063,
+       -1.49211,1.621875,-1.09504,     -1.443756,1.7748,-1.059553,     -1.26664,1.7748,-1.26664,
+       -1.26664,1.7748,-1.26664,       -1.309063,1.621875,-1.309063,   -1.49211,1.621875,-1.09504,
+       -1.640643,1.621875,-0.853583,   -1.587475,1.7748,-0.825921,     -1.443756,1.7748,-1.059553,
+       -1.443756,1.7748,-1.059553,     -1.49211,1.621875,-1.09504,     -1.640643,1.621875,-0.853583,
+       -1.75112,1.621875,-0.58823,     -1.694372,1.7748,-0.569167,     -1.587475,1.7748,-0.825921,
+       -1.587475,1.7748,-0.825921,     -1.640643,1.621875,-0.853583,   -1.75112,1.621875,-0.58823,
+       -1.820003,1.621875,-0.302522,   -1.761022,1.7748,-0.292719,     -1.694372,1.7748,-0.569167,
+       -1.694372,1.7748,-0.569167,     -1.75112,1.621875,-0.58823,     -1.820003,1.621875,-0.302522,
+       -1.84375,1.621875,0,    -1.784,1.7748,0,        -1.761022,1.7748,-0.292719,
+       -1.761022,1.7748,-0.292719,     -1.820003,1.621875,-0.302522,   -1.84375,1.621875,0,
+       -0.311096,1.4712,-1.87158,      -0.302523,1.621875,-1.820003,   0,1.621875,-1.84375,
+       0,1.621875,-1.84375,    0,1.4712,-1.896,        -0.311096,1.4712,-1.87158,
+       -0.6049,1.4712,-1.800745,       -0.58823,1.621875,-1.75112,     -0.302523,1.621875,-1.820003,
+       -0.302523,1.621875,-1.820003,   -0.311096,1.4712,-1.87158,      -0.6049,1.4712,-1.800745,
+       -0.877772,1.4712,-1.687137,     -0.853583,1.621875,-1.640643,   -0.58823,1.621875,-1.75112,
+       -0.58823,1.621875,-1.75112,     -0.6049,1.4712,-1.800745,       -0.877772,1.4712,-1.687137,
+       -1.126072,1.4712,-1.534395,     -1.09504,1.621875,-1.49211,     -0.853583,1.621875,-1.640643,
+       -0.853583,1.621875,-1.640643,   -0.877772,1.4712,-1.687137,     -1.126072,1.4712,-1.534395,
+       -1.34616,1.4712,-1.34616,       -1.309063,1.621875,-1.309063,   -1.09504,1.621875,-1.49211,
+       -1.09504,1.621875,-1.49211,     -1.126072,1.4712,-1.534395,     -1.34616,1.4712,-1.34616,
+       -1.534395,1.4712,-1.126072,     -1.49211,1.621875,-1.09504,     -1.309063,1.621875,-1.309063,
+       -1.309063,1.621875,-1.309063,   -1.34616,1.4712,-1.34616,       -1.534395,1.4712,-1.126072,
+       -1.687137,1.4712,-0.877772,     -1.640643,1.621875,-0.853583,   -1.49211,1.621875,-1.09504,
+       -1.49211,1.621875,-1.09504,     -1.534395,1.4712,-1.126072,     -1.687137,1.4712,-0.877772,
+       -1.800745,1.4712,-0.6049,       -1.75112,1.621875,-0.58823,     -1.640643,1.621875,-0.853583,
+       -1.640643,1.621875,-0.853583,   -1.687137,1.4712,-0.877772,     -1.800745,1.4712,-0.6049,
+       -1.87158,1.4712,-0.311096,      -1.820003,1.621875,-0.302522,   -1.75112,1.621875,-0.58823,
+       -1.75112,1.621875,-0.58823,     -1.800745,1.4712,-0.6049,       -1.87158,1.4712,-0.311096,
+       -1.896,1.4712,0,        -1.84375,1.621875,0,    -1.820003,1.621875,-0.302522,
+       -1.820003,1.621875,-0.302522,   -1.87158,1.4712,-0.311096,      -1.896,1.4712,0,
+       -0.318192,1.323225,-1.914272,   -0.311096,1.4712,-1.87158,      0,1.4712,-1.896,
+       0,1.4712,-1.896,        0,1.323225,-1.93925,    -0.318192,1.323225,-1.914272,
+       -0.618698,1.323225,-1.841822,   -0.6049,1.4712,-1.800745,       -0.311096,1.4712,-1.87158,
+       -0.311096,1.4712,-1.87158,      -0.318192,1.323225,-1.914272,   -0.618698,1.323225,-1.841822,
+       -0.897795,1.323225,-1.725622,   -0.877772,1.4712,-1.687137,     -0.6049,1.4712,-1.800745,
+       -0.6049,1.4712,-1.800745,       -0.618698,1.323225,-1.841822,   -0.897795,1.323225,-1.725622,
+       -1.151759,1.323225,-1.569396,   -1.126072,1.4712,-1.534395,     -0.877772,1.4712,-1.687137,
+       -0.877772,1.4712,-1.687137,     -0.897795,1.323225,-1.725622,   -1.151759,1.323225,-1.569396,
+       -1.376868,1.323225,-1.376867,   -1.34616,1.4712,-1.34616,       -1.126072,1.4712,-1.534395,
+       -1.126072,1.4712,-1.534395,     -1.151759,1.323225,-1.569396,   -1.376868,1.323225,-1.376867,
+       -1.569396,1.323225,-1.151759,   -1.534395,1.4712,-1.126072,     -1.34616,1.4712,-1.34616,
+       -1.34616,1.4712,-1.34616,       -1.376868,1.323225,-1.376867,   -1.569396,1.323225,-1.151759,
+       -1.725622,1.323225,-0.897795,   -1.687137,1.4712,-0.877772,     -1.534395,1.4712,-1.126072,
+       -1.534395,1.4712,-1.126072,     -1.569396,1.323225,-1.151759,   -1.725622,1.323225,-0.897795,
+       -1.841822,1.323225,-0.618698,   -1.800745,1.4712,-0.6049,       -1.687137,1.4712,-0.877772,
+       -1.687137,1.4712,-0.877772,     -1.725622,1.323225,-0.897795,   -1.841822,1.323225,-0.618698,
+       -1.914272,1.323225,-0.318192,   -1.87158,1.4712,-0.311096,      -1.800745,1.4712,-0.6049,
+       -1.800745,1.4712,-0.6049,       -1.841822,1.323225,-0.618698,   -1.914272,1.323225,-0.318192,
+       -1.93925,1.323225,0,    -1.896,1.4712,0,        -1.87158,1.4712,-0.311096,
+       -1.87158,1.4712,-0.311096,      -1.914272,1.323225,-0.318192,   -1.93925,1.323225,0,
+       -0.323566,1.1784,-1.946601,     -0.318192,1.323225,-1.914272,   0,1.323225,-1.93925,
+       0,1.323225,-1.93925,    0,1.1784,-1.972,        -0.323566,1.1784,-1.946601,
+       -0.629147,1.1784,-1.872927,     -0.618698,1.323225,-1.841822,   -0.318192,1.323225,-1.914272,
+       -0.318192,1.323225,-1.914272,   -0.323566,1.1784,-1.946601,     -0.629147,1.1784,-1.872927,
+       -0.912957,1.1784,-1.754764,     -0.897795,1.323225,-1.725622,   -0.618698,1.323225,-1.841822,
+       -0.618698,1.323225,-1.841822,   -0.629147,1.1784,-1.872927,     -0.912957,1.1784,-1.754764,
+       -1.17121,1.1784,-1.5959,        -1.151759,1.323225,-1.569396,   -0.897795,1.323225,-1.725622,
+       -0.897795,1.323225,-1.725622,   -0.912957,1.1784,-1.754764,     -1.17121,1.1784,-1.5959,
+       -1.40012,1.1784,-1.40012,       -1.376868,1.323225,-1.376867,   -1.151759,1.323225,-1.569396,
+       -1.151759,1.323225,-1.569396,   -1.17121,1.1784,-1.5959,        -1.40012,1.1784,-1.40012,
+       -1.5959,1.1784,-1.17121,        -1.569396,1.323225,-1.151759,   -1.376868,1.323225,-1.376867,
+       -1.376868,1.323225,-1.376867,   -1.40012,1.1784,-1.40012,       -1.5959,1.1784,-1.17121,
+       -1.754764,1.1784,-0.912957,     -1.725622,1.323225,-0.897795,   -1.569396,1.323225,-1.151759,
+       -1.569396,1.323225,-1.151759,   -1.5959,1.1784,-1.17121,        -1.754764,1.1784,-0.912957,
+       -1.872927,1.1784,-0.629147,     -1.841822,1.323225,-0.618698,   -1.725622,1.323225,-0.897795,
+       -1.725622,1.323225,-0.897795,   -1.754764,1.1784,-0.912957,     -1.872927,1.1784,-0.629147,
+       -1.946601,1.1784,-0.323566,     -1.914272,1.323225,-0.318192,   -1.841822,1.323225,-0.618698,
+       -1.841822,1.323225,-0.618698,   -1.872927,1.1784,-0.629147,     -1.946601,1.1784,-0.323566,
+       -1.972,1.1784,0,        -1.93925,1.323225,0,    -1.914272,1.323225,-0.318192,
+       -1.914272,1.323225,-0.318192,   -1.946601,1.1784,-0.323566,     -1.972,1.1784,0,
+       -0.32697,1.037175,-1.967083,    -0.323566,1.1784,-1.946601,     0,1.1784,-1.972,
+       0,1.1784,-1.972,        0,1.037175,-1.99275,    -0.32697,1.037175,-1.967083,
+       -0.635767,1.037175,-1.892634,   -0.629147,1.1784,-1.872927,     -0.323566,1.1784,-1.946601,
+       -0.323566,1.1784,-1.946601,     -0.32697,1.037175,-1.967083,    -0.635767,1.037175,-1.892634,
+       -0.922564,1.037175,-1.773229,   -0.912957,1.1784,-1.754764,     -0.629147,1.1784,-1.872927,
+       -0.629147,1.1784,-1.872927,     -0.635767,1.037175,-1.892634,   -0.922564,1.037175,-1.773229,
+       -1.183534,1.037175,-1.612693,   -1.17121,1.1784,-1.5959,        -0.912957,1.1784,-1.754764,
+       -0.912957,1.1784,-1.754764,     -0.922564,1.037175,-1.773229,   -1.183534,1.037175,-1.612693,
+       -1.414853,1.037175,-1.414853,   -1.40012,1.1784,-1.40012,       -1.17121,1.1784,-1.5959,
+       -1.17121,1.1784,-1.5959,        -1.183534,1.037175,-1.612693,   -1.414853,1.037175,-1.414853,
+       -1.612693,1.037175,-1.183534,   -1.5959,1.1784,-1.17121,        -1.40012,1.1784,-1.40012,
+       -1.40012,1.1784,-1.40012,       -1.414853,1.037175,-1.414853,   -1.612693,1.037175,-1.183534,
+       -1.773229,1.037175,-0.922564,   -1.754764,1.1784,-0.912957,     -1.5959,1.1784,-1.17121,
+       -1.5959,1.1784,-1.17121,        -1.612693,1.037175,-1.183534,   -1.773229,1.037175,-0.922564,
+       -1.892634,1.037175,-0.635767,   -1.872927,1.1784,-0.629147,     -1.754764,1.1784,-0.912957,
+       -1.754764,1.1784,-0.912957,     -1.773229,1.037175,-0.922564,   -1.892634,1.037175,-0.635767,
+       -1.967083,1.037175,-0.32697,    -1.946601,1.1784,-0.323566,     -1.872927,1.1784,-0.629147,
+       -1.872927,1.1784,-0.629147,     -1.892634,1.037175,-0.635767,   -1.967083,1.037175,-0.32697,
+       -1.99275,1.037175,0,    -1.972,1.1784,0,        -1.946601,1.1784,-0.323566,
+       -1.946601,1.1784,-0.323566,     -1.967083,1.037175,-0.32697,    -1.99275,1.037175,0,
+       -0.32816,0.9,-1.97424,  -0.32697,1.037175,-1.967083,    0,1.037175,-1.99275,
+       0,1.037175,-1.99275,    0,0.9,-2,       -0.32816,0.9,-1.97424,
+       -0.63808,0.9,-1.89952,  -0.635767,1.037175,-1.892634,   -0.32697,1.037175,-1.967083,
+       -0.32697,1.037175,-1.967083,    -0.32816,0.9,-1.97424,  -0.63808,0.9,-1.89952,
+       -0.92592,0.9,-1.77968,  -0.922564,1.037175,-1.773229,   -0.635767,1.037175,-1.892634,
+       -0.635767,1.037175,-1.892634,   -0.63808,0.9,-1.89952,  -0.92592,0.9,-1.77968,
+       -1.18784,0.9,-1.61856,  -1.183534,1.037175,-1.612693,   -0.922564,1.037175,-1.773229,
+       -0.922564,1.037175,-1.773229,   -0.92592,0.9,-1.77968,  -1.18784,0.9,-1.61856,
+       -1.42,0.9,-1.42,        -1.414853,1.037175,-1.414853,   -1.183534,1.037175,-1.612693,
+       -1.183534,1.037175,-1.612693,   -1.18784,0.9,-1.61856,  -1.42,0.9,-1.42,
+       -1.61856,0.9,-1.18784,  -1.612693,1.037175,-1.183534,   -1.414853,1.037175,-1.414853,
+       -1.414853,1.037175,-1.414853,   -1.42,0.9,-1.42,        -1.61856,0.9,-1.18784,
+       -1.77968,0.9,-0.92592,  -1.773229,1.037175,-0.922564,   -1.612693,1.037175,-1.183534,
+       -1.612693,1.037175,-1.183534,   -1.61856,0.9,-1.18784,  -1.77968,0.9,-0.92592,
+       -1.89952,0.9,-0.63808,  -1.892634,1.037175,-0.635767,   -1.773229,1.037175,-0.922564,
+       -1.773229,1.037175,-0.922564,   -1.77968,0.9,-0.92592,  -1.89952,0.9,-0.63808,
+       -1.97424,0.9,-0.32816,  -1.967083,1.037175,-0.32697,    -1.892634,1.037175,-0.635767,
+       -1.892634,1.037175,-0.635767,   -1.89952,0.9,-0.63808,  -1.97424,0.9,-0.32816,
+       -2,0.9,0,       -1.99275,1.037175,0,    -1.967083,1.037175,-0.32697,
+       -1.967083,1.037175,-0.32697,    -1.97424,0.9,-0.32816,  -2,0.9,0,
+       -1.554467,2.242575,0.258385,    -1.48068,2.4,0.24612,   -1.5,2.4,0,
+       -1.5,2.4,0,     -1.57475,2.242575,0,    -1.554467,2.242575,0.258385,
+       -1.495635,2.242575,0.502408,    -1.42464,2.4,0.47856,   -1.48068,2.4,0.24612,
+       -1.48068,2.4,0.24612,   -1.554467,2.242575,0.258385,    -1.495635,2.242575,0.502408,
+       -1.401276,2.242575,0.729046,    -1.33476,2.4,0.69444,   -1.42464,2.4,0.47856,
+       -1.42464,2.4,0.47856,   -1.495635,2.242575,0.502408,    -1.401276,2.242575,0.729046,
+       -1.274414,2.242575,0.935276,    -1.21392,2.4,0.89088,   -1.33476,2.4,0.69444,
+       -1.33476,2.4,0.69444,   -1.401276,2.242575,0.729046,    -1.274414,2.242575,0.935276,
+       -1.118073,2.242575,1.118073,    -1.065,2.4,1.065,       -1.21392,2.4,0.89088,
+       -1.21392,2.4,0.89088,   -1.274414,2.242575,0.935276,    -1.118073,2.242575,1.118073,
+       -0.935276,2.242575,1.274414,    -0.89088,2.4,1.21392,   -1.065,2.4,1.065,
+       -1.065,2.4,1.065,       -1.118073,2.242575,1.118073,    -0.935276,2.242575,1.274414,
+       -0.729046,2.242575,1.401276,    -0.69444,2.4,1.33476,   -0.89088,2.4,1.21392,
+       -0.89088,2.4,1.21392,   -0.935276,2.242575,1.274414,    -0.729046,2.242575,1.401276,
+       -0.502408,2.242575,1.495635,    -0.47856,2.4,1.42464,   -0.69444,2.4,1.33476,
+       -0.69444,2.4,1.33476,   -0.729046,2.242575,1.401276,    -0.502408,2.242575,1.495635,
+       -0.258385,2.242575,1.554467,    -0.24612,2.4,1.48068,   -0.47856,2.4,1.42464,
+       -0.47856,2.4,1.42464,   -0.502408,2.242575,1.495635,    -0.258385,2.242575,1.554467,
+       0,2.242575,1.57475,     0,2.4,1.5,      -0.24612,2.4,1.48068,
+       -0.24612,2.4,1.48068,   -0.258385,2.242575,1.554467,    0,2.242575,1.57475,
+       -1.626774,2.0856,0.270404,      -1.554467,2.242575,0.258385,    -1.57475,2.242575,0,
+       -1.57475,2.242575,0,    -1.648,2.0856,0,        -1.626774,2.0856,0.270404,
+       -1.565204,2.0856,0.525778,      -1.495635,2.242575,0.502408,    -1.554467,2.242575,0.258385,
+       -1.554467,2.242575,0.258385,    -1.626774,2.0856,0.270404,      -1.565204,2.0856,0.525778,
+       -1.466456,2.0856,0.762958,      -1.401276,2.242575,0.729046,    -1.495635,2.242575,0.502408,
+       -1.495635,2.242575,0.502408,    -1.565204,2.0856,0.525778,      -1.466456,2.0856,0.762958,
+       -1.333693,2.0856,0.97878,       -1.274414,2.242575,0.935276,    -1.401276,2.242575,0.729046,
+       -1.401276,2.242575,0.729046,    -1.466456,2.0856,0.762958,      -1.333693,2.0856,0.97878,
+       -1.17008,2.0856,1.17008,        -1.118073,2.242575,1.118073,    -1.274414,2.242575,0.935276,
+       -1.274414,2.242575,0.935276,    -1.333693,2.0856,0.97878,       -1.17008,2.0856,1.17008,
+       -0.97878,2.0856,1.333693,       -0.935276,2.242575,1.274414,    -1.118073,2.242575,1.118073,
+       -1.118073,2.242575,1.118073,    -1.17008,2.0856,1.17008,        -0.97878,2.0856,1.333693,
+       -0.762958,2.0856,1.466456,      -0.729046,2.242575,1.401276,    -0.935276,2.242575,1.274414,
+       -0.935276,2.242575,1.274414,    -0.97878,2.0856,1.333693,       -0.762958,2.0856,1.466456,
+       -0.525778,2.0856,1.565204,      -0.502408,2.242575,1.495635,    -0.729046,2.242575,1.401276,
+       -0.729046,2.242575,1.401276,    -0.762958,2.0856,1.466456,      -0.525778,2.0856,1.565204,
+       -0.270404,2.0856,1.626774,      -0.258385,2.242575,1.554467,    -0.502408,2.242575,1.495635,
+       -0.502408,2.242575,1.495635,    -0.525778,2.0856,1.565204,      -0.270404,2.0856,1.626774,
+       0,2.0856,1.648, 0,2.242575,1.57475,     -0.258385,2.242575,1.554467,
+       -0.258385,2.242575,1.554467,    -0.270404,2.0856,1.626774,      0,2.0856,1.648,
+       -1.696119,1.929525,0.28193,     -1.626774,2.0856,0.270404,      -1.648,2.0856,0,
+       -1.648,2.0856,0,        -1.71825,1.929525,0,    -1.696119,1.929525,0.28193,
+       -1.631925,1.929525,0.54819,     -1.565204,2.0856,0.525778,      -1.626774,2.0856,0.270404,
+       -1.626774,2.0856,0.270404,      -1.696119,1.929525,0.28193,     -1.631925,1.929525,0.54819,
+       -1.528968,1.929525,0.795481,    -1.466456,2.0856,0.762958,      -1.565204,2.0856,0.525778,
+       -1.565204,2.0856,0.525778,      -1.631925,1.929525,0.54819,     -1.528968,1.929525,0.795481,
+       -1.390545,1.929525,1.020503,    -1.333693,2.0856,0.97878,       -1.466456,2.0856,0.762958,
+       -1.466456,2.0856,0.762958,      -1.528968,1.929525,0.795481,    -1.390545,1.929525,1.020503,
+       -1.219958,1.929525,1.219958,    -1.17008,2.0856,1.17008,        -1.333693,2.0856,0.97878,
+       -1.333693,2.0856,0.97878,       -1.390545,1.929525,1.020503,    -1.219958,1.929525,1.219958,
+       -1.020503,1.929525,1.390545,    -0.97878,2.0856,1.333693,       -1.17008,2.0856,1.17008,
+       -1.17008,2.0856,1.17008,        -1.219958,1.929525,1.219958,    -1.020503,1.929525,1.390545,
+       -0.795481,1.929525,1.528968,    -0.762958,2.0856,1.466456,      -0.97878,2.0856,1.333693,
+       -0.97878,2.0856,1.333693,       -1.020503,1.929525,1.390545,    -0.795481,1.929525,1.528968,
+       -0.54819,1.929525,1.631925,     -0.525778,2.0856,1.565204,      -0.762958,2.0856,1.466456,
+       -0.762958,2.0856,1.466456,      -0.795481,1.929525,1.528968,    -0.54819,1.929525,1.631925,
+       -0.28193,1.929525,1.696119,     -0.270404,2.0856,1.626774,      -0.525778,2.0856,1.565204,
+       -0.525778,2.0856,1.565204,      -0.54819,1.929525,1.631925,     -0.28193,1.929525,1.696119,
+       0,1.929525,1.71825,     0,2.0856,1.648, -0.270404,2.0856,1.626774,
+       -0.270404,2.0856,1.626774,      -0.28193,1.929525,1.696119,     0,1.929525,1.71825,
+       -1.761022,1.7748,0.292719,      -1.696119,1.929525,0.28193,     -1.71825,1.929525,0,
+       -1.71825,1.929525,0,    -1.784,1.7748,0,        -1.761022,1.7748,0.292719,
+       -1.694372,1.7748,0.569167,      -1.631925,1.929525,0.54819,     -1.696119,1.929525,0.28193,
+       -1.696119,1.929525,0.28193,     -1.761022,1.7748,0.292719,      -1.694372,1.7748,0.569167,
+       -1.587475,1.7748,0.825921,      -1.528968,1.929525,0.795481,    -1.631925,1.929525,0.54819,
+       -1.631925,1.929525,0.54819,     -1.694372,1.7748,0.569167,      -1.587475,1.7748,0.825921,
+       -1.443756,1.7748,1.059553,      -1.390545,1.929525,1.020503,    -1.528968,1.929525,0.795481,
+       -1.528968,1.929525,0.795481,    -1.587475,1.7748,0.825921,      -1.443756,1.7748,1.059553,
+       -1.26664,1.7748,1.26664,        -1.219958,1.929525,1.219958,    -1.390545,1.929525,1.020503,
+       -1.390545,1.929525,1.020503,    -1.443756,1.7748,1.059553,      -1.26664,1.7748,1.26664,
+       -1.059553,1.7748,1.443756,      -1.020503,1.929525,1.390545,    -1.219958,1.929525,1.219958,
+       -1.219958,1.929525,1.219958,    -1.26664,1.7748,1.26664,        -1.059553,1.7748,1.443756,
+       -0.825921,1.7748,1.587475,      -0.795481,1.929525,1.528968,    -1.020503,1.929525,1.390545,
+       -1.020503,1.929525,1.390545,    -1.059553,1.7748,1.443756,      -0.825921,1.7748,1.587475,
+       -0.569167,1.7748,1.694372,      -0.54819,1.929525,1.631925,     -0.795481,1.929525,1.528968,
+       -0.795481,1.929525,1.528968,    -0.825921,1.7748,1.587475,      -0.569167,1.7748,1.694372,
+       -0.292719,1.7748,1.761022,      -0.28193,1.929525,1.696119,     -0.54819,1.929525,1.631925,
+       -0.54819,1.929525,1.631925,     -0.569167,1.7748,1.694372,      -0.292719,1.7748,1.761022,
+       0,1.7748,1.784, 0,1.929525,1.71825,     -0.28193,1.929525,1.696119,
+       -0.28193,1.929525,1.696119,     -0.292719,1.7748,1.761022,      0,1.7748,1.784,
+       -1.820003,1.621875,0.302523,    -1.761022,1.7748,0.292719,      -1.784,1.7748,0,
+       -1.784,1.7748,0,        -1.84375,1.621875,0,    -1.820003,1.621875,0.302523,
+       -1.75112,1.621875,0.58823,      -1.694372,1.7748,0.569167,      -1.761022,1.7748,0.292719,
+       -1.761022,1.7748,0.292719,      -1.820003,1.621875,0.302523,    -1.75112,1.621875,0.58823,
+       -1.640643,1.621875,0.853583,    -1.587475,1.7748,0.825921,      -1.694372,1.7748,0.569167,
+       -1.694372,1.7748,0.569167,      -1.75112,1.621875,0.58823,      -1.640643,1.621875,0.853583,
+       -1.49211,1.621875,1.09504,      -1.443756,1.7748,1.059553,      -1.587475,1.7748,0.825921,
+       -1.587475,1.7748,0.825921,      -1.640643,1.621875,0.853583,    -1.49211,1.621875,1.09504,
+       -1.309063,1.621875,1.309063,    -1.26664,1.7748,1.26664,        -1.443756,1.7748,1.059553,
+       -1.443756,1.7748,1.059553,      -1.49211,1.621875,1.09504,      -1.309063,1.621875,1.309063,
+       -1.09504,1.621875,1.49211,      -1.059553,1.7748,1.443756,      -1.26664,1.7748,1.26664,
+       -1.26664,1.7748,1.26664,        -1.309063,1.621875,1.309063,    -1.09504,1.621875,1.49211,
+       -0.853583,1.621875,1.640643,    -0.825921,1.7748,1.587475,      -1.059553,1.7748,1.443756,
+       -1.059553,1.7748,1.443756,      -1.09504,1.621875,1.49211,      -0.853583,1.621875,1.640643,
+       -0.58823,1.621875,1.75112,      -0.569167,1.7748,1.694372,      -0.825921,1.7748,1.587475,
+       -0.825921,1.7748,1.587475,      -0.853583,1.621875,1.640643,    -0.58823,1.621875,1.75112,
+       -0.302522,1.621875,1.820003,    -0.292719,1.7748,1.761022,      -0.569167,1.7748,1.694372,
+       -0.569167,1.7748,1.694372,      -0.58823,1.621875,1.75112,      -0.302522,1.621875,1.820003,
+       0,1.621875,1.84375,     0,1.7748,1.784, -0.292719,1.7748,1.761022,
+       -0.292719,1.7748,1.761022,      -0.302522,1.621875,1.820003,    0,1.621875,1.84375,
+       -1.87158,1.4712,0.311096,       -1.820003,1.621875,0.302523,    -1.84375,1.621875,0,
+       -1.84375,1.621875,0,    -1.896,1.4712,0,        -1.87158,1.4712,0.311096,
+       -1.800745,1.4712,0.6049,        -1.75112,1.621875,0.58823,      -1.820003,1.621875,0.302523,
+       -1.820003,1.621875,0.302523,    -1.87158,1.4712,0.311096,       -1.800745,1.4712,0.6049,
+       -1.687137,1.4712,0.877772,      -1.640643,1.621875,0.853583,    -1.75112,1.621875,0.58823,
+       -1.75112,1.621875,0.58823,      -1.800745,1.4712,0.6049,        -1.687137,1.4712,0.877772,
+       -1.534395,1.4712,1.126072,      -1.49211,1.621875,1.09504,      -1.640643,1.621875,0.853583,
+       -1.640643,1.621875,0.853583,    -1.687137,1.4712,0.877772,      -1.534395,1.4712,1.126072,
+       -1.34616,1.4712,1.34616,        -1.309063,1.621875,1.309063,    -1.49211,1.621875,1.09504,
+       -1.49211,1.621875,1.09504,      -1.534395,1.4712,1.126072,      -1.34616,1.4712,1.34616,
+       -1.126072,1.4712,1.534395,      -1.09504,1.621875,1.49211,      -1.309063,1.621875,1.309063,
+       -1.309063,1.621875,1.309063,    -1.34616,1.4712,1.34616,        -1.126072,1.4712,1.534395,
+       -0.877772,1.4712,1.687137,      -0.853583,1.621875,1.640643,    -1.09504,1.621875,1.49211,
+       -1.09504,1.621875,1.49211,      -1.126072,1.4712,1.534395,      -0.877772,1.4712,1.687137,
+       -0.6049,1.4712,1.800745,        -0.58823,1.621875,1.75112,      -0.853583,1.621875,1.640643,
+       -0.853583,1.621875,1.640643,    -0.877772,1.4712,1.687137,      -0.6049,1.4712,1.800745,
+       -0.311096,1.4712,1.87158,       -0.302522,1.621875,1.820003,    -0.58823,1.621875,1.75112,
+       -0.58823,1.621875,1.75112,      -0.6049,1.4712,1.800745,        -0.311096,1.4712,1.87158,
+       0,1.4712,1.896, 0,1.621875,1.84375,     -0.302522,1.621875,1.820003,
+       -0.302522,1.621875,1.820003,    -0.311096,1.4712,1.87158,       0,1.4712,1.896,
+       -1.914272,1.323225,0.318192,    -1.87158,1.4712,0.311096,       -1.896,1.4712,0,
+       -1.896,1.4712,0,        -1.93925,1.323225,0,    -1.914272,1.323225,0.318192,
+       -1.841822,1.323225,0.618698,    -1.800745,1.4712,0.6049,        -1.87158,1.4712,0.311096,
+       -1.87158,1.4712,0.311096,       -1.914272,1.323225,0.318192,    -1.841822,1.323225,0.618698,
+       -1.725622,1.323225,0.897795,    -1.687137,1.4712,0.877772,      -1.800745,1.4712,0.6049,
+       -1.800745,1.4712,0.6049,        -1.841822,1.323225,0.618698,    -1.725622,1.323225,0.897795,
+       -1.569396,1.323225,1.151759,    -1.534395,1.4712,1.126072,      -1.687137,1.4712,0.877772,
+       -1.687137,1.4712,0.877772,      -1.725622,1.323225,0.897795,    -1.569396,1.323225,1.151759,
+       -1.376867,1.323225,1.376868,    -1.34616,1.4712,1.34616,        -1.534395,1.4712,1.126072,
+       -1.534395,1.4712,1.126072,      -1.569396,1.323225,1.151759,    -1.376867,1.323225,1.376868,
+       -1.151759,1.323225,1.569396,    -1.126072,1.4712,1.534395,      -1.34616,1.4712,1.34616,
+       -1.34616,1.4712,1.34616,        -1.376867,1.323225,1.376868,    -1.151759,1.323225,1.569396,
+       -0.897795,1.323225,1.725622,    -0.877772,1.4712,1.687137,      -1.126072,1.4712,1.534395,
+       -1.126072,1.4712,1.534395,      -1.151759,1.323225,1.569396,    -0.897795,1.323225,1.725622,
+       -0.618698,1.323225,1.841822,    -0.6049,1.4712,1.800745,        -0.877772,1.4712,1.687137,
+       -0.877772,1.4712,1.687137,      -0.897795,1.323225,1.725622,    -0.618698,1.323225,1.841822,
+       -0.318192,1.323225,1.914272,    -0.311096,1.4712,1.87158,       -0.6049,1.4712,1.800745,
+       -0.6049,1.4712,1.800745,        -0.618698,1.323225,1.841822,    -0.318192,1.323225,1.914272,
+       0,1.323225,1.93925,     0,1.4712,1.896, -0.311096,1.4712,1.87158,
+       -0.311096,1.4712,1.87158,       -0.318192,1.323225,1.914272,    0,1.323225,1.93925,
+       -1.946601,1.1784,0.323566,      -1.914272,1.323225,0.318192,    -1.93925,1.323225,0,
+       -1.93925,1.323225,0,    -1.972,1.1784,0,        -1.946601,1.1784,0.323566,
+       -1.872927,1.1784,0.629147,      -1.841822,1.323225,0.618698,    -1.914272,1.323225,0.318192,
+       -1.914272,1.323225,0.318192,    -1.946601,1.1784,0.323566,      -1.872927,1.1784,0.629147,
+       -1.754764,1.1784,0.912957,      -1.725622,1.323225,0.897795,    -1.841822,1.323225,0.618698,
+       -1.841822,1.323225,0.618698,    -1.872927,1.1784,0.629147,      -1.754764,1.1784,0.912957,
+       -1.5959,1.1784,1.17121, -1.569396,1.323225,1.151759,    -1.725622,1.323225,0.897795,
+       -1.725622,1.323225,0.897795,    -1.754764,1.1784,0.912957,      -1.5959,1.1784,1.17121,
+       -1.40012,1.1784,1.40012,        -1.376867,1.323225,1.376868,    -1.569396,1.323225,1.151759,
+       -1.569396,1.323225,1.151759,    -1.5959,1.1784,1.17121, -1.40012,1.1784,1.40012,
+       -1.17121,1.1784,1.5959, -1.151759,1.323225,1.569396,    -1.376867,1.323225,1.376868,
+       -1.376867,1.323225,1.376868,    -1.40012,1.1784,1.40012,        -1.17121,1.1784,1.5959,
+       -0.912957,1.1784,1.754764,      -0.897795,1.323225,1.725622,    -1.151759,1.323225,1.569396,
+       -1.151759,1.323225,1.569396,    -1.17121,1.1784,1.5959, -0.912957,1.1784,1.754764,
+       -0.629147,1.1784,1.872927,      -0.618698,1.323225,1.841822,    -0.897795,1.323225,1.725622,
+       -0.897795,1.323225,1.725622,    -0.912957,1.1784,1.754764,      -0.629147,1.1784,1.872927,
+       -0.323566,1.1784,1.946601,      -0.318192,1.323225,1.914272,    -0.618698,1.323225,1.841822,
+       -0.618698,1.323225,1.841822,    -0.629147,1.1784,1.872927,      -0.323566,1.1784,1.946601,
+       0,1.1784,1.972, 0,1.323225,1.93925,     -0.318192,1.323225,1.914272,
+       -0.318192,1.323225,1.914272,    -0.323566,1.1784,1.946601,      0,1.1784,1.972,
+       -1.967083,1.037175,0.32697,     -1.946601,1.1784,0.323566,      -1.972,1.1784,0,
+       -1.972,1.1784,0,        -1.99275,1.037175,0,    -1.967083,1.037175,0.32697,
+       -1.892634,1.037175,0.635767,    -1.872927,1.1784,0.629147,      -1.946601,1.1784,0.323566,
+       -1.946601,1.1784,0.323566,      -1.967083,1.037175,0.32697,     -1.892634,1.037175,0.635767,
+       -1.773229,1.037175,0.922564,    -1.754764,1.1784,0.912957,      -1.872927,1.1784,0.629147,
+       -1.872927,1.1784,0.629147,      -1.892634,1.037175,0.635767,    -1.773229,1.037175,0.922564,
+       -1.612693,1.037175,1.183534,    -1.5959,1.1784,1.17121, -1.754764,1.1784,0.912957,
+       -1.754764,1.1784,0.912957,      -1.773229,1.037175,0.922564,    -1.612693,1.037175,1.183534,
+       -1.414853,1.037175,1.414853,    -1.40012,1.1784,1.40012,        -1.5959,1.1784,1.17121,
+       -1.5959,1.1784,1.17121, -1.612693,1.037175,1.183534,    -1.414853,1.037175,1.414853,
+       -1.183534,1.037175,1.612693,    -1.17121,1.1784,1.5959, -1.40012,1.1784,1.40012,
+       -1.40012,1.1784,1.40012,        -1.414853,1.037175,1.414853,    -1.183534,1.037175,1.612693,
+       -0.922564,1.037175,1.773229,    -0.912957,1.1784,1.754764,      -1.17121,1.1784,1.5959,
+       -1.17121,1.1784,1.5959, -1.183534,1.037175,1.612693,    -0.922564,1.037175,1.773229,
+       -0.635767,1.037175,1.892634,    -0.629147,1.1784,1.872927,      -0.912957,1.1784,1.754764,
+       -0.912957,1.1784,1.754764,      -0.922564,1.037175,1.773229,    -0.635767,1.037175,1.892634,
+       -0.32697,1.037175,1.967083,     -0.323566,1.1784,1.946601,      -0.629147,1.1784,1.872927,
+       -0.629147,1.1784,1.872927,      -0.635767,1.037175,1.892634,    -0.32697,1.037175,1.967083,
+       0,1.037175,1.99275,     0,1.1784,1.972, -0.323566,1.1784,1.946601,
+       -0.323566,1.1784,1.946601,      -0.32697,1.037175,1.967083,     0,1.037175,1.99275,
+       -1.97424,0.9,0.32816,   -1.967083,1.037175,0.32697,     -1.99275,1.037175,0,
+       -1.99275,1.037175,0,    -2,0.9,0,       -1.97424,0.9,0.32816,
+       -1.89952,0.9,0.63808,   -1.892634,1.037175,0.635767,    -1.967083,1.037175,0.32697,
+       -1.967083,1.037175,0.32697,     -1.97424,0.9,0.32816,   -1.89952,0.9,0.63808,
+       -1.77968,0.9,0.92592,   -1.773229,1.037175,0.922564,    -1.892634,1.037175,0.635767,
+       -1.892634,1.037175,0.635767,    -1.89952,0.9,0.63808,   -1.77968,0.9,0.92592,
+       -1.61856,0.9,1.18784,   -1.612693,1.037175,1.183534,    -1.773229,1.037175,0.922564,
+       -1.773229,1.037175,0.922564,    -1.77968,0.9,0.92592,   -1.61856,0.9,1.18784,
+       -1.42,0.9,1.42, -1.414853,1.037175,1.414853,    -1.612693,1.037175,1.183534,
+       -1.612693,1.037175,1.183534,    -1.61856,0.9,1.18784,   -1.42,0.9,1.42,
+       -1.18784,0.9,1.61856,   -1.183534,1.037175,1.612693,    -1.414853,1.037175,1.414853,
+       -1.414853,1.037175,1.414853,    -1.42,0.9,1.42, -1.18784,0.9,1.61856,
+       -0.92592,0.9,1.77968,   -0.922564,1.037175,1.773229,    -1.183534,1.037175,1.612693,
+       -1.183534,1.037175,1.612693,    -1.18784,0.9,1.61856,   -0.92592,0.9,1.77968,
+       -0.63808,0.9,1.89952,   -0.635767,1.037175,1.892634,    -0.922564,1.037175,1.773229,
+       -0.922564,1.037175,1.773229,    -0.92592,0.9,1.77968,   -0.63808,0.9,1.89952,
+       -0.32816,0.9,1.97424,   -0.32697,1.037175,1.967083,     -0.635767,1.037175,1.892634,
+       -0.635767,1.037175,1.892634,    -0.63808,0.9,1.89952,   -0.32816,0.9,1.97424,
+       0,0.9,2,        0,1.037175,1.99275,     -0.32697,1.037175,1.967083,
+       -0.32697,1.037175,1.967083,     -0.32816,0.9,1.97424,   0,0.9,2,
+       0.258385,2.242575,1.554467,     0.24612,2.4,1.48068,    0,2.4,1.5,
+       0,2.4,1.5,      0,2.242575,1.57475,     0.258385,2.242575,1.554467,
+       0.502408,2.242575,1.495635,     0.47856,2.4,1.42464,    0.24612,2.4,1.48068,
+       0.24612,2.4,1.48068,    0.258385,2.242575,1.554467,     0.502408,2.242575,1.495635,
+       0.729046,2.242575,1.401276,     0.69444,2.4,1.33476,    0.47856,2.4,1.42464,
+       0.47856,2.4,1.42464,    0.502408,2.242575,1.495635,     0.729046,2.242575,1.401276,
+       0.935276,2.242575,1.274414,     0.89088,2.4,1.21392,    0.69444,2.4,1.33476,
+       0.69444,2.4,1.33476,    0.729046,2.242575,1.401276,     0.935276,2.242575,1.274414,
+       1.118073,2.242575,1.118073,     1.065,2.4,1.065,        0.89088,2.4,1.21392,
+       0.89088,2.4,1.21392,    0.935276,2.242575,1.274414,     1.118073,2.242575,1.118073,
+       1.274414,2.242575,0.935276,     1.21392,2.4,0.89088,    1.065,2.4,1.065,
+       1.065,2.4,1.065,        1.118073,2.242575,1.118073,     1.274414,2.242575,0.935276,
+       1.401276,2.242575,0.729046,     1.33476,2.4,0.69444,    1.21392,2.4,0.89088,
+       1.21392,2.4,0.89088,    1.274414,2.242575,0.935276,     1.401276,2.242575,0.729046,
+       1.495635,2.242575,0.502408,     1.42464,2.4,0.47856,    1.33476,2.4,0.69444,
+       1.33476,2.4,0.69444,    1.401276,2.242575,0.729046,     1.495635,2.242575,0.502408,
+       1.554467,2.242575,0.258385,     1.48068,2.4,0.24612,    1.42464,2.4,0.47856,
+       1.42464,2.4,0.47856,    1.495635,2.242575,0.502408,     1.554467,2.242575,0.258385,
+       1.57475,2.242575,0,     1.5,2.4,0,      1.48068,2.4,0.24612,
+       1.48068,2.4,0.24612,    1.554467,2.242575,0.258385,     1.57475,2.242575,0,
+       0.270404,2.0856,1.626774,       0.258385,2.242575,1.554467,     0,2.242575,1.57475,
+       0,2.242575,1.57475,     0,2.0856,1.648, 0.270404,2.0856,1.626774,
+       0.525778,2.0856,1.565204,       0.502408,2.242575,1.495635,     0.258385,2.242575,1.554467,
+       0.258385,2.242575,1.554467,     0.270404,2.0856,1.626774,       0.525778,2.0856,1.565204,
+       0.762958,2.0856,1.466456,       0.729046,2.242575,1.401276,     0.502408,2.242575,1.495635,
+       0.502408,2.242575,1.495635,     0.525778,2.0856,1.565204,       0.762958,2.0856,1.466456,
+       0.97878,2.0856,1.333693,        0.935276,2.242575,1.274414,     0.729046,2.242575,1.401276,
+       0.729046,2.242575,1.401276,     0.762958,2.0856,1.466456,       0.97878,2.0856,1.333693,
+       1.17008,2.0856,1.17008, 1.118073,2.242575,1.118073,     0.935276,2.242575,1.274414,
+       0.935276,2.242575,1.274414,     0.97878,2.0856,1.333693,        1.17008,2.0856,1.17008,
+       1.333693,2.0856,0.97878,        1.274414,2.242575,0.935276,     1.118073,2.242575,1.118073,
+       1.118073,2.242575,1.118073,     1.17008,2.0856,1.17008, 1.333693,2.0856,0.97878,
+       1.466456,2.0856,0.762958,       1.401276,2.242575,0.729046,     1.274414,2.242575,0.935276,
+       1.274414,2.242575,0.935276,     1.333693,2.0856,0.97878,        1.466456,2.0856,0.762958,
+       1.565204,2.0856,0.525778,       1.495635,2.242575,0.502408,     1.401276,2.242575,0.729046,
+       1.401276,2.242575,0.729046,     1.466456,2.0856,0.762958,       1.565204,2.0856,0.525778,
+       1.626774,2.0856,0.270404,       1.554467,2.242575,0.258385,     1.495635,2.242575,0.502408,
+       1.495635,2.242575,0.502408,     1.565204,2.0856,0.525778,       1.626774,2.0856,0.270404,
+       1.648,2.0856,0, 1.57475,2.242575,0,     1.554467,2.242575,0.258385,
+       1.554467,2.242575,0.258385,     1.626774,2.0856,0.270404,       1.648,2.0856,0,
+       0.28193,1.929525,1.696119,      0.270404,2.0856,1.626774,       0,2.0856,1.648,
+       0,2.0856,1.648, 0,1.929525,1.71825,     0.28193,1.929525,1.696119,
+       0.54819,1.929525,1.631925,      0.525778,2.0856,1.565204,       0.270404,2.0856,1.626774,
+       0.270404,2.0856,1.626774,       0.28193,1.929525,1.696119,      0.54819,1.929525,1.631925,
+       0.795481,1.929525,1.528968,     0.762958,2.0856,1.466456,       0.525778,2.0856,1.565204,
+       0.525778,2.0856,1.565204,       0.54819,1.929525,1.631925,      0.795481,1.929525,1.528968,
+       1.020503,1.929525,1.390545,     0.97878,2.0856,1.333693,        0.762958,2.0856,1.466456,
+       0.762958,2.0856,1.466456,       0.795481,1.929525,1.528968,     1.020503,1.929525,1.390545,
+       1.219958,1.929525,1.219958,     1.17008,2.0856,1.17008, 0.97878,2.0856,1.333693,
+       0.97878,2.0856,1.333693,        1.020503,1.929525,1.390545,     1.219958,1.929525,1.219958,
+       1.390545,1.929525,1.020503,     1.333693,2.0856,0.97878,        1.17008,2.0856,1.17008,
+       1.17008,2.0856,1.17008, 1.219958,1.929525,1.219958,     1.390545,1.929525,1.020503,
+       1.528968,1.929525,0.795481,     1.466456,2.0856,0.762958,       1.333693,2.0856,0.97878,
+       1.333693,2.0856,0.97878,        1.390545,1.929525,1.020503,     1.528968,1.929525,0.795481,
+       1.631925,1.929525,0.54819,      1.565204,2.0856,0.525778,       1.466456,2.0856,0.762958,
+       1.466456,2.0856,0.762958,       1.528968,1.929525,0.795481,     1.631925,1.929525,0.54819,
+       1.696119,1.929525,0.28193,      1.626774,2.0856,0.270404,       1.565204,2.0856,0.525778,
+       1.565204,2.0856,0.525778,       1.631925,1.929525,0.54819,      1.696119,1.929525,0.28193,
+       1.71825,1.929525,0,     1.648,2.0856,0, 1.626774,2.0856,0.270404,
+       1.626774,2.0856,0.270404,       1.696119,1.929525,0.28193,      1.71825,1.929525,0,
+       0.292719,1.7748,1.761022,       0.28193,1.929525,1.696119,      0,1.929525,1.71825,
+       0,1.929525,1.71825,     0,1.7748,1.784, 0.292719,1.7748,1.761022,
+       0.569167,1.7748,1.694372,       0.54819,1.929525,1.631925,      0.28193,1.929525,1.696119,
+       0.28193,1.929525,1.696119,      0.292719,1.7748,1.761022,       0.569167,1.7748,1.694372,
+       0.825921,1.7748,1.587475,       0.795481,1.929525,1.528968,     0.54819,1.929525,1.631925,
+       0.54819,1.929525,1.631925,      0.569167,1.7748,1.694372,       0.825921,1.7748,1.587475,
+       1.059553,1.7748,1.443756,       1.020503,1.929525,1.390545,     0.795481,1.929525,1.528968,
+       0.795481,1.929525,1.528968,     0.825921,1.7748,1.587475,       1.059553,1.7748,1.443756,
+       1.26664,1.7748,1.26664, 1.219958,1.929525,1.219958,     1.020503,1.929525,1.390545,
+       1.020503,1.929525,1.390545,     1.059553,1.7748,1.443756,       1.26664,1.7748,1.26664,
+       1.443756,1.7748,1.059553,       1.390545,1.929525,1.020503,     1.219958,1.929525,1.219958,
+       1.219958,1.929525,1.219958,     1.26664,1.7748,1.26664, 1.443756,1.7748,1.059553,
+       1.587475,1.7748,0.825921,       1.528968,1.929525,0.795481,     1.390545,1.929525,1.020503,
+       1.390545,1.929525,1.020503,     1.443756,1.7748,1.059553,       1.587475,1.7748,0.825921,
+       1.694372,1.7748,0.569167,       1.631925,1.929525,0.54819,      1.528968,1.929525,0.795481,
+       1.528968,1.929525,0.795481,     1.587475,1.7748,0.825921,       1.694372,1.7748,0.569167,
+       1.761022,1.7748,0.292719,       1.696119,1.929525,0.28193,      1.631925,1.929525,0.54819,
+       1.631925,1.929525,0.54819,      1.694372,1.7748,0.569167,       1.761022,1.7748,0.292719,
+       1.784,1.7748,0, 1.71825,1.929525,0,     1.696119,1.929525,0.28193,
+       1.696119,1.929525,0.28193,      1.761022,1.7748,0.292719,       1.784,1.7748,0,
+       0.302523,1.621875,1.820003,     0.292719,1.7748,1.761022,       0,1.7748,1.784,
+       0,1.7748,1.784, 0,1.621875,1.84375,     0.302523,1.621875,1.820003,
+       0.58823,1.621875,1.75112,       0.569167,1.7748,1.694372,       0.292719,1.7748,1.761022,
+       0.292719,1.7748,1.761022,       0.302523,1.621875,1.820003,     0.58823,1.621875,1.75112,
+       0.853583,1.621875,1.640643,     0.825921,1.7748,1.587475,       0.569167,1.7748,1.694372,
+       0.569167,1.7748,1.694372,       0.58823,1.621875,1.75112,       0.853583,1.621875,1.640643,
+       1.09504,1.621875,1.49211,       1.059553,1.7748,1.443756,       0.825921,1.7748,1.587475,
+       0.825921,1.7748,1.587475,       0.853583,1.621875,1.640643,     1.09504,1.621875,1.49211,
+       1.309063,1.621875,1.309063,     1.26664,1.7748,1.26664, 1.059553,1.7748,1.443756,
+       1.059553,1.7748,1.443756,       1.09504,1.621875,1.49211,       1.309063,1.621875,1.309063,
+       1.49211,1.621875,1.09504,       1.443756,1.7748,1.059553,       1.26664,1.7748,1.26664,
+       1.26664,1.7748,1.26664, 1.309063,1.621875,1.309063,     1.49211,1.621875,1.09504,
+       1.640643,1.621875,0.853583,     1.587475,1.7748,0.825921,       1.443756,1.7748,1.059553,
+       1.443756,1.7748,1.059553,       1.49211,1.621875,1.09504,       1.640643,1.621875,0.853583,
+       1.75112,1.621875,0.58823,       1.694372,1.7748,0.569167,       1.587475,1.7748,0.825921,
+       1.587475,1.7748,0.825921,       1.640643,1.621875,0.853583,     1.75112,1.621875,0.58823,
+       1.820003,1.621875,0.302522,     1.761022,1.7748,0.292719,       1.694372,1.7748,0.569167,
+       1.694372,1.7748,0.569167,       1.75112,1.621875,0.58823,       1.820003,1.621875,0.302522,
+       1.84375,1.621875,0,     1.784,1.7748,0, 1.761022,1.7748,0.292719,
+       1.761022,1.7748,0.292719,       1.820003,1.621875,0.302522,     1.84375,1.621875,0,
+       0.311096,1.4712,1.87158,        0.302523,1.621875,1.820003,     0,1.621875,1.84375,
+       0,1.621875,1.84375,     0,1.4712,1.896, 0.311096,1.4712,1.87158,
+       0.6049,1.4712,1.800745, 0.58823,1.621875,1.75112,       0.302523,1.621875,1.820003,
+       0.302523,1.621875,1.820003,     0.311096,1.4712,1.87158,        0.6049,1.4712,1.800745,
+       0.877772,1.4712,1.687137,       0.853583,1.621875,1.640643,     0.58823,1.621875,1.75112,
+       0.58823,1.621875,1.75112,       0.6049,1.4712,1.800745, 0.877772,1.4712,1.687137,
+       1.126072,1.4712,1.534395,       1.09504,1.621875,1.49211,       0.853583,1.621875,1.640643,
+       0.853583,1.621875,1.640643,     0.877772,1.4712,1.687137,       1.126072,1.4712,1.534395,
+       1.34616,1.4712,1.34616, 1.309063,1.621875,1.309063,     1.09504,1.621875,1.49211,
+       1.09504,1.621875,1.49211,       1.126072,1.4712,1.534395,       1.34616,1.4712,1.34616,
+       1.534395,1.4712,1.126072,       1.49211,1.621875,1.09504,       1.309063,1.621875,1.309063,
+       1.309063,1.621875,1.309063,     1.34616,1.4712,1.34616, 1.534395,1.4712,1.126072,
+       1.687137,1.4712,0.877772,       1.640643,1.621875,0.853583,     1.49211,1.621875,1.09504,
+       1.49211,1.621875,1.09504,       1.534395,1.4712,1.126072,       1.687137,1.4712,0.877772,
+       1.800745,1.4712,0.6049, 1.75112,1.621875,0.58823,       1.640643,1.621875,0.853583,
+       1.640643,1.621875,0.853583,     1.687137,1.4712,0.877772,       1.800745,1.4712,0.6049,
+       1.87158,1.4712,0.311096,        1.820003,1.621875,0.302522,     1.75112,1.621875,0.58823,
+       1.75112,1.621875,0.58823,       1.800745,1.4712,0.6049, 1.87158,1.4712,0.311096,
+       1.896,1.4712,0, 1.84375,1.621875,0,     1.820003,1.621875,0.302522,
+       1.820003,1.621875,0.302522,     1.87158,1.4712,0.311096,        1.896,1.4712,0,
+       0.318192,1.323225,1.914272,     0.311096,1.4712,1.87158,        0,1.4712,1.896,
+       0,1.4712,1.896, 0,1.323225,1.93925,     0.318192,1.323225,1.914272,
+       0.618698,1.323225,1.841822,     0.6049,1.4712,1.800745, 0.311096,1.4712,1.87158,
+       0.311096,1.4712,1.87158,        0.318192,1.323225,1.914272,     0.618698,1.323225,1.841822,
+       0.897795,1.323225,1.725622,     0.877772,1.4712,1.687137,       0.6049,1.4712,1.800745,
+       0.6049,1.4712,1.800745, 0.618698,1.323225,1.841822,     0.897795,1.323225,1.725622,
+       1.151759,1.323225,1.569396,     1.126072,1.4712,1.534395,       0.877772,1.4712,1.687137,
+       0.877772,1.4712,1.687137,       0.897795,1.323225,1.725622,     1.151759,1.323225,1.569396,
+       1.376868,1.323225,1.376867,     1.34616,1.4712,1.34616, 1.126072,1.4712,1.534395,
+       1.126072,1.4712,1.534395,       1.151759,1.323225,1.569396,     1.376868,1.323225,1.376867,
+       1.569396,1.323225,1.151759,     1.534395,1.4712,1.126072,       1.34616,1.4712,1.34616,
+       1.34616,1.4712,1.34616, 1.376868,1.323225,1.376867,     1.569396,1.323225,1.151759,
+       1.725622,1.323225,0.897795,     1.687137,1.4712,0.877772,       1.534395,1.4712,1.126072,
+       1.534395,1.4712,1.126072,       1.569396,1.323225,1.151759,     1.725622,1.323225,0.897795,
+       1.841822,1.323225,0.618698,     1.800745,1.4712,0.6049, 1.687137,1.4712,0.877772,
+       1.687137,1.4712,0.877772,       1.725622,1.323225,0.897795,     1.841822,1.323225,0.618698,
+       1.914272,1.323225,0.318192,     1.87158,1.4712,0.311096,        1.800745,1.4712,0.6049,
+       1.800745,1.4712,0.6049, 1.841822,1.323225,0.618698,     1.914272,1.323225,0.318192,
+       1.93925,1.323225,0,     1.896,1.4712,0, 1.87158,1.4712,0.311096,
+       1.87158,1.4712,0.311096,        1.914272,1.323225,0.318192,     1.93925,1.323225,0,
+       0.323566,1.1784,1.946601,       0.318192,1.323225,1.914272,     0,1.323225,1.93925,
+       0,1.323225,1.93925,     0,1.1784,1.972, 0.323566,1.1784,1.946601,
+       0.629147,1.1784,1.872927,       0.618698,1.323225,1.841822,     0.318192,1.323225,1.914272,
+       0.318192,1.323225,1.914272,     0.323566,1.1784,1.946601,       0.629147,1.1784,1.872927,
+       0.912957,1.1784,1.754764,       0.897795,1.323225,1.725622,     0.618698,1.323225,1.841822,
+       0.618698,1.323225,1.841822,     0.629147,1.1784,1.872927,       0.912957,1.1784,1.754764,
+       1.17121,1.1784,1.5959,  1.151759,1.323225,1.569396,     0.897795,1.323225,1.725622,
+       0.897795,1.323225,1.725622,     0.912957,1.1784,1.754764,       1.17121,1.1784,1.5959,
+       1.40012,1.1784,1.40012, 1.376868,1.323225,1.376867,     1.151759,1.323225,1.569396,
+       1.151759,1.323225,1.569396,     1.17121,1.1784,1.5959,  1.40012,1.1784,1.40012,
+       1.5959,1.1784,1.17121,  1.569396,1.323225,1.151759,     1.376868,1.323225,1.376867,
+       1.376868,1.323225,1.376867,     1.40012,1.1784,1.40012, 1.5959,1.1784,1.17121,
+       1.754764,1.1784,0.912957,       1.725622,1.323225,0.897795,     1.569396,1.323225,1.151759,
+       1.569396,1.323225,1.151759,     1.5959,1.1784,1.17121,  1.754764,1.1784,0.912957,
+       1.872927,1.1784,0.629147,       1.841822,1.323225,0.618698,     1.725622,1.323225,0.897795,
+       1.725622,1.323225,0.897795,     1.754764,1.1784,0.912957,       1.872927,1.1784,0.629147,
+       1.946601,1.1784,0.323566,       1.914272,1.323225,0.318192,     1.841822,1.323225,0.618698,
+       1.841822,1.323225,0.618698,     1.872927,1.1784,0.629147,       1.946601,1.1784,0.323566,
+       1.972,1.1784,0, 1.93925,1.323225,0,     1.914272,1.323225,0.318192,
+       1.914272,1.323225,0.318192,     1.946601,1.1784,0.323566,       1.972,1.1784,0,
+       0.32697,1.037175,1.967083,      0.323566,1.1784,1.946601,       0,1.1784,1.972,
+       0,1.1784,1.972, 0,1.037175,1.99275,     0.32697,1.037175,1.967083,
+       0.635767,1.037175,1.892634,     0.629147,1.1784,1.872927,       0.323566,1.1784,1.946601,
+       0.323566,1.1784,1.946601,       0.32697,1.037175,1.967083,      0.635767,1.037175,1.892634,
+       0.922564,1.037175,1.773229,     0.912957,1.1784,1.754764,       0.629147,1.1784,1.872927,
+       0.629147,1.1784,1.872927,       0.635767,1.037175,1.892634,     0.922564,1.037175,1.773229,
+       1.183534,1.037175,1.612693,     1.17121,1.1784,1.5959,  0.912957,1.1784,1.754764,
+       0.912957,1.1784,1.754764,       0.922564,1.037175,1.773229,     1.183534,1.037175,1.612693,
+       1.414853,1.037175,1.414853,     1.40012,1.1784,1.40012, 1.17121,1.1784,1.5959,
+       1.17121,1.1784,1.5959,  1.183534,1.037175,1.612693,     1.414853,1.037175,1.414853,
+       1.612693,1.037175,1.183534,     1.5959,1.1784,1.17121,  1.40012,1.1784,1.40012,
+       1.40012,1.1784,1.40012, 1.414853,1.037175,1.414853,     1.612693,1.037175,1.183534,
+       1.773229,1.037175,0.922564,     1.754764,1.1784,0.912957,       1.5959,1.1784,1.17121,
+       1.5959,1.1784,1.17121,  1.612693,1.037175,1.183534,     1.773229,1.037175,0.922564,
+       1.892634,1.037175,0.635767,     1.872927,1.1784,0.629147,       1.754764,1.1784,0.912957,
+       1.754764,1.1784,0.912957,       1.773229,1.037175,0.922564,     1.892634,1.037175,0.635767,
+       1.967083,1.037175,0.32697,      1.946601,1.1784,0.323566,       1.872927,1.1784,0.629147,
+       1.872927,1.1784,0.629147,       1.892634,1.037175,0.635767,     1.967083,1.037175,0.32697,
+       1.99275,1.037175,0,     1.972,1.1784,0, 1.946601,1.1784,0.323566,
+       1.946601,1.1784,0.323566,       1.967083,1.037175,0.32697,      1.99275,1.037175,0,
+       0.32816,0.9,1.97424,    0.32697,1.037175,1.967083,      0,1.037175,1.99275,
+       0,1.037175,1.99275,     0,0.9,2,        0.32816,0.9,1.97424,
+       0.63808,0.9,1.89952,    0.635767,1.037175,1.892634,     0.32697,1.037175,1.967083,
+       0.32697,1.037175,1.967083,      0.32816,0.9,1.97424,    0.63808,0.9,1.89952,
+       0.92592,0.9,1.77968,    0.922564,1.037175,1.773229,     0.635767,1.037175,1.892634,
+       0.635767,1.037175,1.892634,     0.63808,0.9,1.89952,    0.92592,0.9,1.77968,
+       1.18784,0.9,1.61856,    1.183534,1.037175,1.612693,     0.922564,1.037175,1.773229,
+       0.922564,1.037175,1.773229,     0.92592,0.9,1.77968,    1.18784,0.9,1.61856,
+       1.42,0.9,1.42,  1.414853,1.037175,1.414853,     1.183534,1.037175,1.612693,
+       1.183534,1.037175,1.612693,     1.18784,0.9,1.61856,    1.42,0.9,1.42,
+       1.61856,0.9,1.18784,    1.612693,1.037175,1.183534,     1.414853,1.037175,1.414853,
+       1.414853,1.037175,1.414853,     1.42,0.9,1.42,  1.61856,0.9,1.18784,
+       1.77968,0.9,0.92592,    1.773229,1.037175,0.922564,     1.612693,1.037175,1.183534,
+       1.612693,1.037175,1.183534,     1.61856,0.9,1.18784,    1.77968,0.9,0.92592,
+       1.89952,0.9,0.63808,    1.892634,1.037175,0.635767,     1.773229,1.037175,0.922564,
+       1.773229,1.037175,0.922564,     1.77968,0.9,0.92592,    1.89952,0.9,0.63808,
+       1.97424,0.9,0.32816,    1.967083,1.037175,0.32697,      1.892634,1.037175,0.635767,
+       1.892634,1.037175,0.635767,     1.89952,0.9,0.63808,    1.97424,0.9,0.32816,
+       2,0.9,0,        1.99275,1.037175,0,     1.967083,1.037175,0.32697,
+       1.967083,1.037175,0.32697,      1.97424,0.9,0.32816,    2,0.9,0,
+       1.96042,0.771675,-0.325863,     1.97424,0.9,-0.32816,   2,0.9,0,
+       2,0.9,0,        1.986,0.771675,0,       1.96042,0.771675,-0.325863,
+       1.886223,0.771675,-0.633613,    1.89952,0.9,-0.63808,   1.97424,0.9,-0.32816,
+       1.97424,0.9,-0.32816,   1.96042,0.771675,-0.325863,     1.886223,0.771675,-0.633613,
+       1.767222,0.771675,-0.919439,    1.77968,0.9,-0.92592,   1.89952,0.9,-0.63808,
+       1.89952,0.9,-0.63808,   1.886223,0.771675,-0.633613,    1.767222,0.771675,-0.919439,
+       1.60723,0.771675,-1.179525,     1.61856,0.9,-1.18784,   1.77968,0.9,-0.92592,
+       1.77968,0.9,-0.92592,   1.767222,0.771675,-0.919439,    1.60723,0.771675,-1.179525,
+       1.41006,0.771675,-1.41006,      1.42,0.9,-1.42, 1.61856,0.9,-1.18784,
+       1.61856,0.9,-1.18784,   1.60723,0.771675,-1.179525,     1.41006,0.771675,-1.41006,
+       1.179525,0.771675,-1.60723,     1.18784,0.9,-1.61856,   1.42,0.9,-1.42,
+       1.42,0.9,-1.42, 1.41006,0.771675,-1.41006,      1.179525,0.771675,-1.60723,
+       0.919439,0.771675,-1.767222,    0.92592,0.9,-1.77968,   1.18784,0.9,-1.61856,
+       1.18784,0.9,-1.61856,   1.179525,0.771675,-1.60723,     0.919439,0.771675,-1.767222,
+       0.633613,0.771675,-1.886223,    0.63808,0.9,-1.89952,   0.92592,0.9,-1.77968,
+       0.92592,0.9,-1.77968,   0.919439,0.771675,-1.767222,    0.633613,0.771675,-1.886223,
+       0.325863,0.771675,-1.96042,     0.32816,0.9,-1.97424,   0.63808,0.9,-1.89952,
+       0.63808,0.9,-1.89952,   0.633613,0.771675,-1.886223,    0.325863,0.771675,-1.96042,
+       0,0.771675,-1.986,      0,0.9,-2,       0.32816,0.9,-1.97424,
+       0.32816,0.9,-1.97424,   0.325863,0.771675,-1.96042,     0,0.771675,-1.986,
+       1.92291,0.6564,-0.319628,       1.96042,0.771675,-0.325863,     1.986,0.771675,0,
+       1.986,0.771675,0,       1.948,0.6564,0, 1.92291,0.6564,-0.319628,
+       1.850132,0.6564,-0.62149,       1.886223,0.771675,-0.633613,    1.96042,0.771675,-0.325863,
+       1.96042,0.771675,-0.325863,     1.92291,0.6564,-0.319628,       1.850132,0.6564,-0.62149,
+       1.733408,0.6564,-0.901846,      1.767222,0.771675,-0.919439,    1.886223,0.771675,-0.633613,
+       1.886223,0.771675,-0.633613,    1.850132,0.6564,-0.62149,       1.733408,0.6564,-0.901846,
+       1.576477,0.6564,-1.156956,      1.60723,0.771675,-1.179525,     1.767222,0.771675,-0.919439,
+       1.767222,0.771675,-0.919439,    1.733408,0.6564,-0.901846,      1.576477,0.6564,-1.156956,
+       1.38308,0.6564,-1.38308,        1.41006,0.771675,-1.41006,      1.60723,0.771675,-1.179525,
+       1.60723,0.771675,-1.179525,     1.576477,0.6564,-1.156956,      1.38308,0.6564,-1.38308,
+       1.156956,0.6564,-1.576477,      1.179525,0.771675,-1.60723,     1.41006,0.771675,-1.41006,
+       1.41006,0.771675,-1.41006,      1.38308,0.6564,-1.38308,        1.156956,0.6564,-1.576477,
+       0.901846,0.6564,-1.733408,      0.919439,0.771675,-1.767222,    1.179525,0.771675,-1.60723,
+       1.179525,0.771675,-1.60723,     1.156956,0.6564,-1.576477,      0.901846,0.6564,-1.733408,
+       0.62149,0.6564,-1.850132,       0.633613,0.771675,-1.886223,    0.919439,0.771675,-1.767222,
+       0.919439,0.771675,-1.767222,    0.901846,0.6564,-1.733408,      0.62149,0.6564,-1.850132,
+       0.319628,0.6564,-1.92291,       0.325863,0.771675,-1.96042,     0.633613,0.771675,-1.886223,
+       0.633613,0.771675,-1.886223,    0.62149,0.6564,-1.850132,       0.319628,0.6564,-1.92291,
+       0,0.6564,-1.948,        0,0.771675,-1.986,      0.325863,0.771675,-1.96042,
+       0.325863,0.771675,-1.96042,     0.319628,0.6564,-1.92291,       0,0.6564,-1.948,
+       1.867631,0.553725,-0.310439,    1.92291,0.6564,-0.319628,       1.948,0.6564,0,
+       1.948,0.6564,0, 1.892,0.553725,0,       1.867631,0.553725,-0.310439,
+       1.796946,0.553725,-0.603624,    1.850132,0.6564,-0.62149,       1.92291,0.6564,-0.319628,
+       1.92291,0.6564,-0.319628,       1.867631,0.553725,-0.310439,    1.796946,0.553725,-0.603624,
+       1.683577,0.553725,-0.87592,     1.733408,0.6564,-0.901846,      1.850132,0.6564,-0.62149,
+       1.850132,0.6564,-0.62149,       1.796946,0.553725,-0.603624,    1.683577,0.553725,-0.87592,
+       1.531158,0.553725,-1.123697,    1.576477,0.6564,-1.156956,      1.733408,0.6564,-0.901846,
+       1.733408,0.6564,-0.901846,      1.683577,0.553725,-0.87592,     1.531158,0.553725,-1.123697,
+       1.34332,0.553725,-1.34332,      1.38308,0.6564,-1.38308,        1.576477,0.6564,-1.156956,
+       1.576477,0.6564,-1.156956,      1.531158,0.553725,-1.123697,    1.34332,0.553725,-1.34332,
+       1.123697,0.553725,-1.531158,    1.156956,0.6564,-1.576477,      1.38308,0.6564,-1.38308,
+       1.38308,0.6564,-1.38308,        1.34332,0.553725,-1.34332,      1.123697,0.553725,-1.531158,
+       0.87592,0.553725,-1.683577,     0.901846,0.6564,-1.733408,      1.156956,0.6564,-1.576477,
+       1.156956,0.6564,-1.576477,      1.123697,0.553725,-1.531158,    0.87592,0.553725,-1.683577,
+       0.603624,0.553725,-1.796946,    0.62149,0.6564,-1.850132,       0.901846,0.6564,-1.733408,
+       0.901846,0.6564,-1.733408,      0.87592,0.553725,-1.683577,     0.603624,0.553725,-1.796946,
+       0.310439,0.553725,-1.867631,    0.319628,0.6564,-1.92291,       0.62149,0.6564,-1.850132,
+       0.62149,0.6564,-1.850132,       0.603624,0.553725,-1.796946,    0.310439,0.553725,-1.867631,
+       0,0.553725,-1.892,      0,0.6564,-1.948,        0.319628,0.6564,-1.92291,
+       0.319628,0.6564,-1.92291,       0.310439,0.553725,-1.867631,    0,0.553725,-1.892,
+       1.800507,0.4632,-0.299282,      1.867631,0.553725,-0.310439,    1.892,0.553725,0,
+       1.892,0.553725,0,       1.824,0.4632,0, 1.800507,0.4632,-0.299282,
+       1.732362,0.4632,-0.581929,      1.796946,0.553725,-0.603624,    1.867631,0.553725,-0.310439,
+       1.867631,0.553725,-0.310439,    1.800507,0.4632,-0.299282,      1.732362,0.4632,-0.581929,
+       1.623068,0.4632,-0.844439,      1.683577,0.553725,-0.87592,     1.796946,0.553725,-0.603624,
+       1.796946,0.553725,-0.603624,    1.732362,0.4632,-0.581929,      1.623068,0.4632,-0.844439,
+       1.476127,0.4632,-1.08331,       1.531158,0.553725,-1.123697,    1.683577,0.553725,-0.87592,
+       1.683577,0.553725,-0.87592,     1.623068,0.4632,-0.844439,      1.476127,0.4632,-1.08331,
+       1.29504,0.4632,-1.29504,        1.34332,0.553725,-1.34332,      1.531158,0.553725,-1.123697,
+       1.531158,0.553725,-1.123697,    1.476127,0.4632,-1.08331,       1.29504,0.4632,-1.29504,
+       1.08331,0.4632,-1.476127,       1.123697,0.553725,-1.531158,    1.34332,0.553725,-1.34332,
+       1.34332,0.553725,-1.34332,      1.29504,0.4632,-1.29504,        1.08331,0.4632,-1.476127,
+       0.844439,0.4632,-1.623068,      0.87592,0.553725,-1.683577,     1.123697,0.553725,-1.531158,
+       1.123697,0.553725,-1.531158,    1.08331,0.4632,-1.476127,       0.844439,0.4632,-1.623068,
+       0.581929,0.4632,-1.732362,      0.603624,0.553725,-1.796946,    0.87592,0.553725,-1.683577,
+       0.87592,0.553725,-1.683577,     0.844439,0.4632,-1.623068,      0.581929,0.4632,-1.732362,
+       0.299282,0.4632,-1.800507,      0.310439,0.553725,-1.867631,    0.603624,0.553725,-1.796946,
+       0.603624,0.553725,-1.796946,    0.581929,0.4632,-1.732362,      0.299282,0.4632,-1.800507,
+       0,0.4632,-1.824,        0,0.553725,-1.892,      0.310439,0.553725,-1.867631,
+       0.310439,0.553725,-1.867631,    0.299282,0.4632,-1.800507,      0,0.4632,-1.824,
+       1.72746,0.384375,-0.28714,      1.800507,0.4632,-0.299282,      1.824,0.4632,0,
+       1.824,0.4632,0, 1.75,0.384375,0,        1.72746,0.384375,-0.28714,
+       1.66208,0.384375,-0.55832,      1.732362,0.4632,-0.581929,      1.800507,0.4632,-0.299282,
+       1.800507,0.4632,-0.299282,      1.72746,0.384375,-0.28714,      1.66208,0.384375,-0.55832,
+       1.55722,0.384375,-0.81018,      1.623068,0.4632,-0.844439,      1.732362,0.4632,-0.581929,
+       1.732362,0.4632,-0.581929,      1.66208,0.384375,-0.55832,      1.55722,0.384375,-0.81018,
+       1.41624,0.384375,-1.03936,      1.476127,0.4632,-1.08331,       1.623068,0.4632,-0.844439,
+       1.623068,0.4632,-0.844439,      1.55722,0.384375,-0.81018,      1.41624,0.384375,-1.03936,
+       1.2425,0.384375,-1.2425,        1.29504,0.4632,-1.29504,        1.476127,0.4632,-1.08331,
+       1.476127,0.4632,-1.08331,       1.41624,0.384375,-1.03936,      1.2425,0.384375,-1.2425,
+       1.03936,0.384375,-1.41624,      1.08331,0.4632,-1.476127,       1.29504,0.4632,-1.29504,
+       1.29504,0.4632,-1.29504,        1.2425,0.384375,-1.2425,        1.03936,0.384375,-1.41624,
+       0.81018,0.384375,-1.55722,      0.844439,0.4632,-1.623068,      1.08331,0.4632,-1.476127,
+       1.08331,0.4632,-1.476127,       1.03936,0.384375,-1.41624,      0.81018,0.384375,-1.55722,
+       0.55832,0.384375,-1.66208,      0.581929,0.4632,-1.732362,      0.844439,0.4632,-1.623068,
+       0.844439,0.4632,-1.623068,      0.81018,0.384375,-1.55722,      0.55832,0.384375,-1.66208,
+       0.28714,0.384375,-1.72746,      0.299282,0.4632,-1.800507,      0.581929,0.4632,-1.732362,
+       0.581929,0.4632,-1.732362,      0.55832,0.384375,-1.66208,      0.28714,0.384375,-1.72746,
+       0,0.384375,-1.75,       0,0.4632,-1.824,        0.299282,0.4632,-1.800507,
+       0.299282,0.4632,-1.800507,      0.28714,0.384375,-1.72746,      0,0.384375,-1.75,
+       1.654413,0.3168,-0.274998,      1.72746,0.384375,-0.28714,      1.75,0.384375,0,
+       1.75,0.384375,0,        1.676,0.3168,0, 1.654413,0.3168,-0.274998,
+       1.591798,0.3168,-0.534711,      1.66208,0.384375,-0.55832,      1.72746,0.384375,-0.28714,
+       1.72746,0.384375,-0.28714,      1.654413,0.3168,-0.274998,      1.591798,0.3168,-0.534711,
+       1.491372,0.3168,-0.775921,      1.55722,0.384375,-0.81018,      1.66208,0.384375,-0.55832,
+       1.66208,0.384375,-0.55832,      1.591798,0.3168,-0.534711,      1.491372,0.3168,-0.775921,
+       1.356353,0.3168,-0.99541,       1.41624,0.384375,-1.03936,      1.55722,0.384375,-0.81018,
+       1.55722,0.384375,-0.81018,      1.491372,0.3168,-0.775921,      1.356353,0.3168,-0.99541,
+       1.18996,0.3168,-1.18996,        1.2425,0.384375,-1.2425,        1.41624,0.384375,-1.03936,
+       1.41624,0.384375,-1.03936,      1.356353,0.3168,-0.99541,       1.18996,0.3168,-1.18996,
+       0.99541,0.3168,-1.356353,       1.03936,0.384375,-1.41624,      1.2425,0.384375,-1.2425,
+       1.2425,0.384375,-1.2425,        1.18996,0.3168,-1.18996,        0.99541,0.3168,-1.356353,
+       0.775921,0.3168,-1.491372,      0.81018,0.384375,-1.55722,      1.03936,0.384375,-1.41624,
+       1.03936,0.384375,-1.41624,      0.99541,0.3168,-1.356353,       0.775921,0.3168,-1.491372,
+       0.534711,0.3168,-1.591798,      0.55832,0.384375,-1.66208,      0.81018,0.384375,-1.55722,
+       0.81018,0.384375,-1.55722,      0.775921,0.3168,-1.491372,      0.534711,0.3168,-1.591798,
+       0.274998,0.3168,-1.654413,      0.28714,0.384375,-1.72746,      0.55832,0.384375,-1.66208,
+       0.55832,0.384375,-1.66208,      0.534711,0.3168,-1.591798,      0.274998,0.3168,-1.654413,
+       0,0.3168,-1.676,        0,0.384375,-1.75,       0.28714,0.384375,-1.72746,
+       0.28714,0.384375,-1.72746,      0.274998,0.3168,-1.654413,      0,0.3168,-1.676,
+       1.587289,0.260025,-0.263841,    1.654413,0.3168,-0.274998,      1.676,0.3168,0,
+       1.676,0.3168,0, 1.608,0.260025,0,       1.587289,0.260025,-0.263841,
+       1.527214,0.260025,-0.513016,    1.591798,0.3168,-0.534711,      1.654413,0.3168,-0.274998,
+       1.654413,0.3168,-0.274998,      1.587289,0.260025,-0.263841,    1.527214,0.260025,-0.513016,
+       1.430863,0.260025,-0.74444,     1.491372,0.3168,-0.775921,      1.591798,0.3168,-0.534711,
+       1.591798,0.3168,-0.534711,      1.527214,0.260025,-0.513016,    1.430863,0.260025,-0.74444,
+       1.301322,0.260025,-0.955023,    1.356353,0.3168,-0.99541,       1.491372,0.3168,-0.775921,
+       1.491372,0.3168,-0.775921,      1.430863,0.260025,-0.74444,     1.301322,0.260025,-0.955023,
+       1.14168,0.260025,-1.14168,      1.18996,0.3168,-1.18996,        1.356353,0.3168,-0.99541,
+       1.356353,0.3168,-0.99541,       1.301322,0.260025,-0.955023,    1.14168,0.260025,-1.14168,
+       0.955023,0.260025,-1.301322,    0.99541,0.3168,-1.356353,       1.18996,0.3168,-1.18996,
+       1.18996,0.3168,-1.18996,        1.14168,0.260025,-1.14168,      0.955023,0.260025,-1.301322,
+       0.74444,0.260025,-1.430863,     0.775921,0.3168,-1.491372,      0.99541,0.3168,-1.356353,
+       0.99541,0.3168,-1.356353,       0.955023,0.260025,-1.301322,    0.74444,0.260025,-1.430863,
+       0.513016,0.260025,-1.527214,    0.534711,0.3168,-1.591798,      0.775921,0.3168,-1.491372,
+       0.775921,0.3168,-1.491372,      0.74444,0.260025,-1.430863,     0.513016,0.260025,-1.527214,
+       0.263841,0.260025,-1.587289,    0.274998,0.3168,-1.654413,      0.534711,0.3168,-1.591798,
+       0.534711,0.3168,-1.591798,      0.513016,0.260025,-1.527214,    0.263841,0.260025,-1.587289,
+       0,0.260025,-1.608,      0,0.3168,-1.676,        0.274998,0.3168,-1.654413,
+       0.274998,0.3168,-1.654413,      0.263841,0.260025,-1.587289,    0,0.260025,-1.608,
+       1.53201,0.2136,-0.254652,       1.587289,0.260025,-0.263841,    1.608,0.260025,0,
+       1.608,0.260025,0,       1.552,0.2136,0, 1.53201,0.2136,-0.254652,
+       1.474028,0.2136,-0.49515,       1.527214,0.260025,-0.513016,    1.587289,0.260025,-0.263841,
+       1.587289,0.260025,-0.263841,    1.53201,0.2136,-0.254652,       1.474028,0.2136,-0.49515,
+       1.381032,0.2136,-0.718514,      1.430863,0.260025,-0.74444,     1.527214,0.260025,-0.513016,
+       1.527214,0.260025,-0.513016,    1.474028,0.2136,-0.49515,       1.381032,0.2136,-0.718514,
+       1.256003,0.2136,-0.921764,      1.301322,0.260025,-0.955023,    1.430863,0.260025,-0.74444,
+       1.430863,0.260025,-0.74444,     1.381032,0.2136,-0.718514,      1.256003,0.2136,-0.921764,
+       1.10192,0.2136,-1.10192,        1.14168,0.260025,-1.14168,      1.301322,0.260025,-0.955023,
+       1.301322,0.260025,-0.955023,    1.256003,0.2136,-0.921764,      1.10192,0.2136,-1.10192,
+       0.921764,0.2136,-1.256003,      0.955023,0.260025,-1.301322,    1.14168,0.260025,-1.14168,
+       1.14168,0.260025,-1.14168,      1.10192,0.2136,-1.10192,        0.921764,0.2136,-1.256003,
+       0.718514,0.2136,-1.381032,      0.74444,0.260025,-1.430863,     0.955023,0.260025,-1.301322,
+       0.955023,0.260025,-1.301322,    0.921764,0.2136,-1.256003,      0.718514,0.2136,-1.381032,
+       0.49515,0.2136,-1.474028,       0.513016,0.260025,-1.527214,    0.74444,0.260025,-1.430863,
+       0.74444,0.260025,-1.430863,     0.718514,0.2136,-1.381032,      0.49515,0.2136,-1.474028,
+       0.254652,0.2136,-1.53201,       0.263841,0.260025,-1.587289,    0.513016,0.260025,-1.527214,
+       0.513016,0.260025,-1.527214,    0.49515,0.2136,-1.474028,       0.254652,0.2136,-1.53201,
+       0,0.2136,-1.552,        0,0.260025,-1.608,      0.263841,0.260025,-1.587289,
+       0.263841,0.260025,-1.587289,    0.254652,0.2136,-1.53201,       0,0.2136,-1.552,
+       1.4945,0.177075,-0.248417,      1.53201,0.2136,-0.254652,       1.552,0.2136,0,
+       1.552,0.2136,0, 1.514,0.177075,0,       1.4945,0.177075,-0.248417,
+       1.437937,0.177075,-0.483027,    1.474028,0.2136,-0.49515,       1.53201,0.2136,-0.254652,
+       1.53201,0.2136,-0.254652,       1.4945,0.177075,-0.248417,      1.437937,0.177075,-0.483027,
+       1.347218,0.177075,-0.700921,    1.381032,0.2136,-0.718514,      1.474028,0.2136,-0.49515,
+       1.474028,0.2136,-0.49515,       1.437937,0.177075,-0.483027,    1.347218,0.177075,-0.700921,
+       1.22525,0.177075,-0.899195,     1.256003,0.2136,-0.921764,      1.381032,0.2136,-0.718514,
+       1.381032,0.2136,-0.718514,      1.347218,0.177075,-0.700921,    1.22525,0.177075,-0.899195,
+       1.07494,0.177075,-1.07494,      1.10192,0.2136,-1.10192,        1.256003,0.2136,-0.921764,
+       1.256003,0.2136,-0.921764,      1.22525,0.177075,-0.899195,     1.07494,0.177075,-1.07494,
+       0.899195,0.177075,-1.22525,     0.921764,0.2136,-1.256003,      1.10192,0.2136,-1.10192,
+       1.10192,0.2136,-1.10192,        1.07494,0.177075,-1.07494,      0.899195,0.177075,-1.22525,
+       0.700921,0.177075,-1.347218,    0.718514,0.2136,-1.381032,      0.921764,0.2136,-1.256003,
+       0.921764,0.2136,-1.256003,      0.899195,0.177075,-1.22525,     0.700921,0.177075,-1.347218,
+       0.483027,0.177075,-1.437937,    0.49515,0.2136,-1.474028,       0.718514,0.2136,-1.381032,
+       0.718514,0.2136,-1.381032,      0.700921,0.177075,-1.347218,    0.483027,0.177075,-1.437937,
+       0.248417,0.177075,-1.4945,      0.254652,0.2136,-1.53201,       0.49515,0.2136,-1.474028,
+       0.49515,0.2136,-1.474028,       0.483027,0.177075,-1.437937,    0.248417,0.177075,-1.4945,
+       0,0.177075,-1.514,      0,0.2136,-1.552,        0.254652,0.2136,-1.53201,
+       0.254652,0.2136,-1.53201,       0.248417,0.177075,-1.4945,      0,0.177075,-1.514,
+       1.48068,0.15,-0.24612,  1.4945,0.177075,-0.248417,      1.514,0.177075,0,
+       1.514,0.177075,0,       1.5,0.15,0,     1.48068,0.15,-0.24612,
+       1.42464,0.15,-0.47856,  1.437937,0.177075,-0.483027,    1.4945,0.177075,-0.248417,
+       1.4945,0.177075,-0.248417,      1.48068,0.15,-0.24612,  1.42464,0.15,-0.47856,
+       1.33476,0.15,-0.69444,  1.347218,0.177075,-0.700921,    1.437937,0.177075,-0.483027,
+       1.437937,0.177075,-0.483027,    1.42464,0.15,-0.47856,  1.33476,0.15,-0.69444,
+       1.21392,0.15,-0.89088,  1.22525,0.177075,-0.899195,     1.347218,0.177075,-0.700921,
+       1.347218,0.177075,-0.700921,    1.33476,0.15,-0.69444,  1.21392,0.15,-0.89088,
+       1.065,0.15,-1.065,      1.07494,0.177075,-1.07494,      1.22525,0.177075,-0.899195,
+       1.22525,0.177075,-0.899195,     1.21392,0.15,-0.89088,  1.065,0.15,-1.065,
+       0.89088,0.15,-1.21392,  0.899195,0.177075,-1.22525,     1.07494,0.177075,-1.07494,
+       1.07494,0.177075,-1.07494,      1.065,0.15,-1.065,      0.89088,0.15,-1.21392,
+       0.69444,0.15,-1.33476,  0.700921,0.177075,-1.347218,    0.899195,0.177075,-1.22525,
+       0.899195,0.177075,-1.22525,     0.89088,0.15,-1.21392,  0.69444,0.15,-1.33476,
+       0.47856,0.15,-1.42464,  0.483027,0.177075,-1.437937,    0.700921,0.177075,-1.347218,
+       0.700921,0.177075,-1.347218,    0.69444,0.15,-1.33476,  0.47856,0.15,-1.42464,
+       0.24612,0.15,-1.48068,  0.248417,0.177075,-1.4945,      0.483027,0.177075,-1.437937,
+       0.483027,0.177075,-1.437937,    0.47856,0.15,-1.42464,  0.24612,0.15,-1.48068,
+       0,0.15,-1.5,    0,0.177075,-1.514,      0.248417,0.177075,-1.4945,
+       0.248417,0.177075,-1.4945,      0.24612,0.15,-1.48068,  0,0.15,-1.5,
+       -0.325863,0.771675,-1.96042,    -0.32816,0.9,-1.97424,  0,0.9,-2,
+       0,0.9,-2,       0,0.771675,-1.986,      -0.325863,0.771675,-1.96042,
+       -0.633613,0.771675,-1.886223,   -0.63808,0.9,-1.89952,  -0.32816,0.9,-1.97424,
+       -0.32816,0.9,-1.97424,  -0.325863,0.771675,-1.96042,    -0.633613,0.771675,-1.886223,
+       -0.919439,0.771675,-1.767222,   -0.92592,0.9,-1.77968,  -0.63808,0.9,-1.89952,
+       -0.63808,0.9,-1.89952,  -0.633613,0.771675,-1.886223,   -0.919439,0.771675,-1.767222,
+       -1.179525,0.771675,-1.60723,    -1.18784,0.9,-1.61856,  -0.92592,0.9,-1.77968,
+       -0.92592,0.9,-1.77968,  -0.919439,0.771675,-1.767222,   -1.179525,0.771675,-1.60723,
+       -1.41006,0.771675,-1.41006,     -1.42,0.9,-1.42,        -1.18784,0.9,-1.61856,
+       -1.18784,0.9,-1.61856,  -1.179525,0.771675,-1.60723,    -1.41006,0.771675,-1.41006,
+       -1.60723,0.771675,-1.179525,    -1.61856,0.9,-1.18784,  -1.42,0.9,-1.42,
+       -1.42,0.9,-1.42,        -1.41006,0.771675,-1.41006,     -1.60723,0.771675,-1.179525,
+       -1.767222,0.771675,-0.919439,   -1.77968,0.9,-0.92592,  -1.61856,0.9,-1.18784,
+       -1.61856,0.9,-1.18784,  -1.60723,0.771675,-1.179525,    -1.767222,0.771675,-0.919439,
+       -1.886223,0.771675,-0.633613,   -1.89952,0.9,-0.63808,  -1.77968,0.9,-0.92592,
+       -1.77968,0.9,-0.92592,  -1.767222,0.771675,-0.919439,   -1.886223,0.771675,-0.633613,
+       -1.96042,0.771675,-0.325863,    -1.97424,0.9,-0.32816,  -1.89952,0.9,-0.63808,
+       -1.89952,0.9,-0.63808,  -1.886223,0.771675,-0.633613,   -1.96042,0.771675,-0.325863,
+       -1.986,0.771675,0,      -2,0.9,0,       -1.97424,0.9,-0.32816,
+       -1.97424,0.9,-0.32816,  -1.96042,0.771675,-0.325863,    -1.986,0.771675,0,
+       -0.319628,0.6564,-1.92291,      -0.325863,0.771675,-1.96042,    0,0.771675,-1.986,
+       0,0.771675,-1.986,      0,0.6564,-1.948,        -0.319628,0.6564,-1.92291,
+       -0.62149,0.6564,-1.850132,      -0.633613,0.771675,-1.886223,   -0.325863,0.771675,-1.96042,
+       -0.325863,0.771675,-1.96042,    -0.319628,0.6564,-1.92291,      -0.62149,0.6564,-1.850132,
+       -0.901846,0.6564,-1.733408,     -0.919439,0.771675,-1.767222,   -0.633613,0.771675,-1.886223,
+       -0.633613,0.771675,-1.886223,   -0.62149,0.6564,-1.850132,      -0.901846,0.6564,-1.733408,
+       -1.156956,0.6564,-1.576477,     -1.179525,0.771675,-1.60723,    -0.919439,0.771675,-1.767222,
+       -0.919439,0.771675,-1.767222,   -0.901846,0.6564,-1.733408,     -1.156956,0.6564,-1.576477,
+       -1.38308,0.6564,-1.38308,       -1.41006,0.771675,-1.41006,     -1.179525,0.771675,-1.60723,
+       -1.179525,0.771675,-1.60723,    -1.156956,0.6564,-1.576477,     -1.38308,0.6564,-1.38308,
+       -1.576477,0.6564,-1.156956,     -1.60723,0.771675,-1.179525,    -1.41006,0.771675,-1.41006,
+       -1.41006,0.771675,-1.41006,     -1.38308,0.6564,-1.38308,       -1.576477,0.6564,-1.156956,
+       -1.733408,0.6564,-0.901846,     -1.767222,0.771675,-0.919439,   -1.60723,0.771675,-1.179525,
+       -1.60723,0.771675,-1.179525,    -1.576477,0.6564,-1.156956,     -1.733408,0.6564,-0.901846,
+       -1.850132,0.6564,-0.62149,      -1.886223,0.771675,-0.633613,   -1.767222,0.771675,-0.919439,
+       -1.767222,0.771675,-0.919439,   -1.733408,0.6564,-0.901846,     -1.850132,0.6564,-0.62149,
+       -1.92291,0.6564,-0.319628,      -1.96042,0.771675,-0.325863,    -1.886223,0.771675,-0.633613,
+       -1.886223,0.771675,-0.633613,   -1.850132,0.6564,-0.62149,      -1.92291,0.6564,-0.319628,
+       -1.948,0.6564,0,        -1.986,0.771675,0,      -1.96042,0.771675,-0.325863,
+       -1.96042,0.771675,-0.325863,    -1.92291,0.6564,-0.319628,      -1.948,0.6564,0,
+       -0.310439,0.553725,-1.867631,   -0.319628,0.6564,-1.92291,      0,0.6564,-1.948,
+       0,0.6564,-1.948,        0,0.553725,-1.892,      -0.310439,0.553725,-1.867631,
+       -0.603624,0.553725,-1.796946,   -0.62149,0.6564,-1.850132,      -0.319628,0.6564,-1.92291,
+       -0.319628,0.6564,-1.92291,      -0.310439,0.553725,-1.867631,   -0.603624,0.553725,-1.796946,
+       -0.87592,0.553725,-1.683577,    -0.901846,0.6564,-1.733408,     -0.62149,0.6564,-1.850132,
+       -0.62149,0.6564,-1.850132,      -0.603624,0.553725,-1.796946,   -0.87592,0.553725,-1.683577,
+       -1.123697,0.553725,-1.531158,   -1.156956,0.6564,-1.576477,     -0.901846,0.6564,-1.733408,
+       -0.901846,0.6564,-1.733408,     -0.87592,0.553725,-1.683577,    -1.123697,0.553725,-1.531158,
+       -1.34332,0.553725,-1.34332,     -1.38308,0.6564,-1.38308,       -1.156956,0.6564,-1.576477,
+       -1.156956,0.6564,-1.576477,     -1.123697,0.553725,-1.531158,   -1.34332,0.553725,-1.34332,
+       -1.531158,0.553725,-1.123697,   -1.576477,0.6564,-1.156956,     -1.38308,0.6564,-1.38308,
+       -1.38308,0.6564,-1.38308,       -1.34332,0.553725,-1.34332,     -1.531158,0.553725,-1.123697,
+       -1.683577,0.553725,-0.87592,    -1.733408,0.6564,-0.901846,     -1.576477,0.6564,-1.156956,
+       -1.576477,0.6564,-1.156956,     -1.531158,0.553725,-1.123697,   -1.683577,0.553725,-0.87592,
+       -1.796946,0.553725,-0.603624,   -1.850132,0.6564,-0.62149,      -1.733408,0.6564,-0.901846,
+       -1.733408,0.6564,-0.901846,     -1.683577,0.553725,-0.87592,    -1.796946,0.553725,-0.603624,
+       -1.867631,0.553725,-0.310439,   -1.92291,0.6564,-0.319628,      -1.850132,0.6564,-0.62149,
+       -1.850132,0.6564,-0.62149,      -1.796946,0.553725,-0.603624,   -1.867631,0.553725,-0.310439,
+       -1.892,0.553725,0,      -1.948,0.6564,0,        -1.92291,0.6564,-0.319628,
+       -1.92291,0.6564,-0.319628,      -1.867631,0.553725,-0.310439,   -1.892,0.553725,0,
+       -0.299282,0.4632,-1.800507,     -0.310439,0.553725,-1.867631,   0,0.553725,-1.892,
+       0,0.553725,-1.892,      0,0.4632,-1.824,        -0.299282,0.4632,-1.800507,
+       -0.581929,0.4632,-1.732362,     -0.603624,0.553725,-1.796946,   -0.310439,0.553725,-1.867631,
+       -0.310439,0.553725,-1.867631,   -0.299282,0.4632,-1.800507,     -0.581929,0.4632,-1.732362,
+       -0.844439,0.4632,-1.623068,     -0.87592,0.553725,-1.683577,    -0.603624,0.553725,-1.796946,
+       -0.603624,0.553725,-1.796946,   -0.581929,0.4632,-1.732362,     -0.844439,0.4632,-1.623068,
+       -1.08331,0.4632,-1.476127,      -1.123697,0.553725,-1.531158,   -0.87592,0.553725,-1.683577,
+       -0.87592,0.553725,-1.683577,    -0.844439,0.4632,-1.623068,     -1.08331,0.4632,-1.476127,
+       -1.29504,0.4632,-1.29504,       -1.34332,0.553725,-1.34332,     -1.123697,0.553725,-1.531158,
+       -1.123697,0.553725,-1.531158,   -1.08331,0.4632,-1.476127,      -1.29504,0.4632,-1.29504,
+       -1.476127,0.4632,-1.08331,      -1.531158,0.553725,-1.123697,   -1.34332,0.553725,-1.34332,
+       -1.34332,0.553725,-1.34332,     -1.29504,0.4632,-1.29504,       -1.476127,0.4632,-1.08331,
+       -1.623068,0.4632,-0.844439,     -1.683577,0.553725,-0.87592,    -1.531158,0.553725,-1.123697,
+       -1.531158,0.553725,-1.123697,   -1.476127,0.4632,-1.08331,      -1.623068,0.4632,-0.844439,
+       -1.732362,0.4632,-0.581929,     -1.796946,0.553725,-0.603624,   -1.683577,0.553725,-0.87592,
+       -1.683577,0.553725,-0.87592,    -1.623068,0.4632,-0.844439,     -1.732362,0.4632,-0.581929,
+       -1.800507,0.4632,-0.299282,     -1.867631,0.553725,-0.310439,   -1.796946,0.553725,-0.603624,
+       -1.796946,0.553725,-0.603624,   -1.732362,0.4632,-0.581929,     -1.800507,0.4632,-0.299282,
+       -1.824,0.4632,0,        -1.892,0.553725,0,      -1.867631,0.553725,-0.310439,
+       -1.867631,0.553725,-0.310439,   -1.800507,0.4632,-0.299282,     -1.824,0.4632,0,
+       -0.28714,0.384375,-1.72746,     -0.299282,0.4632,-1.800507,     0,0.4632,-1.824,
+       0,0.4632,-1.824,        0,0.384375,-1.75,       -0.28714,0.384375,-1.72746,
+       -0.55832,0.384375,-1.66208,     -0.581929,0.4632,-1.732362,     -0.299282,0.4632,-1.800507,
+       -0.299282,0.4632,-1.800507,     -0.28714,0.384375,-1.72746,     -0.55832,0.384375,-1.66208,
+       -0.81018,0.384375,-1.55722,     -0.844439,0.4632,-1.623068,     -0.581929,0.4632,-1.732362,
+       -0.581929,0.4632,-1.732362,     -0.55832,0.384375,-1.66208,     -0.81018,0.384375,-1.55722,
+       -1.03936,0.384375,-1.41624,     -1.08331,0.4632,-1.476127,      -0.844439,0.4632,-1.623068,
+       -0.844439,0.4632,-1.623068,     -0.81018,0.384375,-1.55722,     -1.03936,0.384375,-1.41624,
+       -1.2425,0.384375,-1.2425,       -1.29504,0.4632,-1.29504,       -1.08331,0.4632,-1.476127,
+       -1.08331,0.4632,-1.476127,      -1.03936,0.384375,-1.41624,     -1.2425,0.384375,-1.2425,
+       -1.41624,0.384375,-1.03936,     -1.476127,0.4632,-1.08331,      -1.29504,0.4632,-1.29504,
+       -1.29504,0.4632,-1.29504,       -1.2425,0.384375,-1.2425,       -1.41624,0.384375,-1.03936,
+       -1.55722,0.384375,-0.81018,     -1.623068,0.4632,-0.844439,     -1.476127,0.4632,-1.08331,
+       -1.476127,0.4632,-1.08331,      -1.41624,0.384375,-1.03936,     -1.55722,0.384375,-0.81018,
+       -1.66208,0.384375,-0.55832,     -1.732362,0.4632,-0.581929,     -1.623068,0.4632,-0.844439,
+       -1.623068,0.4632,-0.844439,     -1.55722,0.384375,-0.81018,     -1.66208,0.384375,-0.55832,
+       -1.72746,0.384375,-0.28714,     -1.800507,0.4632,-0.299282,     -1.732362,0.4632,-0.581929,
+       -1.732362,0.4632,-0.581929,     -1.66208,0.384375,-0.55832,     -1.72746,0.384375,-0.28714,
+       -1.75,0.384375,0,       -1.824,0.4632,0,        -1.800507,0.4632,-0.299282,
+       -1.800507,0.4632,-0.299282,     -1.72746,0.384375,-0.28714,     -1.75,0.384375,0,
+       -0.274998,0.3168,-1.654413,     -0.28714,0.384375,-1.72746,     0,0.384375,-1.75,
+       0,0.384375,-1.75,       0,0.3168,-1.676,        -0.274998,0.3168,-1.654413,
+       -0.534711,0.3168,-1.591798,     -0.55832,0.384375,-1.66208,     -0.28714,0.384375,-1.72746,
+       -0.28714,0.384375,-1.72746,     -0.274998,0.3168,-1.654413,     -0.534711,0.3168,-1.591798,
+       -0.775921,0.3168,-1.491372,     -0.81018,0.384375,-1.55722,     -0.55832,0.384375,-1.66208,
+       -0.55832,0.384375,-1.66208,     -0.534711,0.3168,-1.591798,     -0.775921,0.3168,-1.491372,
+       -0.99541,0.3168,-1.356353,      -1.03936,0.384375,-1.41624,     -0.81018,0.384375,-1.55722,
+       -0.81018,0.384375,-1.55722,     -0.775921,0.3168,-1.491372,     -0.99541,0.3168,-1.356353,
+       -1.18996,0.3168,-1.18996,       -1.2425,0.384375,-1.2425,       -1.03936,0.384375,-1.41624,
+       -1.03936,0.384375,-1.41624,     -0.99541,0.3168,-1.356353,      -1.18996,0.3168,-1.18996,
+       -1.356353,0.3168,-0.99541,      -1.41624,0.384375,-1.03936,     -1.2425,0.384375,-1.2425,
+       -1.2425,0.384375,-1.2425,       -1.18996,0.3168,-1.18996,       -1.356353,0.3168,-0.99541,
+       -1.491372,0.3168,-0.775921,     -1.55722,0.384375,-0.81018,     -1.41624,0.384375,-1.03936,
+       -1.41624,0.384375,-1.03936,     -1.356353,0.3168,-0.99541,      -1.491372,0.3168,-0.775921,
+       -1.591798,0.3168,-0.534711,     -1.66208,0.384375,-0.55832,     -1.55722,0.384375,-0.81018,
+       -1.55722,0.384375,-0.81018,     -1.491372,0.3168,-0.775921,     -1.591798,0.3168,-0.534711,
+       -1.654413,0.3168,-0.274998,     -1.72746,0.384375,-0.28714,     -1.66208,0.384375,-0.55832,
+       -1.66208,0.384375,-0.55832,     -1.591798,0.3168,-0.534711,     -1.654413,0.3168,-0.274998,
+       -1.676,0.3168,0,        -1.75,0.384375,0,       -1.72746,0.384375,-0.28714,
+       -1.72746,0.384375,-0.28714,     -1.654413,0.3168,-0.274998,     -1.676,0.3168,0,
+       -0.263841,0.260025,-1.587289,   -0.274998,0.3168,-1.654413,     0,0.3168,-1.676,
+       0,0.3168,-1.676,        0,0.260025,-1.608,      -0.263841,0.260025,-1.587289,
+       -0.513016,0.260025,-1.527214,   -0.534711,0.3168,-1.591798,     -0.274998,0.3168,-1.654413,
+       -0.274998,0.3168,-1.654413,     -0.263841,0.260025,-1.587289,   -0.513016,0.260025,-1.527214,
+       -0.74444,0.260025,-1.430863,    -0.775921,0.3168,-1.491372,     -0.534711,0.3168,-1.591798,
+       -0.534711,0.3168,-1.591798,     -0.513016,0.260025,-1.527214,   -0.74444,0.260025,-1.430863,
+       -0.955023,0.260025,-1.301322,   -0.99541,0.3168,-1.356353,      -0.775921,0.3168,-1.491372,
+       -0.775921,0.3168,-1.491372,     -0.74444,0.260025,-1.430863,    -0.955023,0.260025,-1.301322,
+       -1.14168,0.260025,-1.14168,     -1.18996,0.3168,-1.18996,       -0.99541,0.3168,-1.356353,
+       -0.99541,0.3168,-1.356353,      -0.955023,0.260025,-1.301322,   -1.14168,0.260025,-1.14168,
+       -1.301322,0.260025,-0.955023,   -1.356353,0.3168,-0.99541,      -1.18996,0.3168,-1.18996,
+       -1.18996,0.3168,-1.18996,       -1.14168,0.260025,-1.14168,     -1.301322,0.260025,-0.955023,
+       -1.430863,0.260025,-0.74444,    -1.491372,0.3168,-0.775921,     -1.356353,0.3168,-0.99541,
+       -1.356353,0.3168,-0.99541,      -1.301322,0.260025,-0.955023,   -1.430863,0.260025,-0.74444,
+       -1.527214,0.260025,-0.513016,   -1.591798,0.3168,-0.534711,     -1.491372,0.3168,-0.775921,
+       -1.491372,0.3168,-0.775921,     -1.430863,0.260025,-0.74444,    -1.527214,0.260025,-0.513016,
+       -1.587289,0.260025,-0.263841,   -1.654413,0.3168,-0.274998,     -1.591798,0.3168,-0.534711,
+       -1.591798,0.3168,-0.534711,     -1.527214,0.260025,-0.513016,   -1.587289,0.260025,-0.263841,
+       -1.608,0.260025,0,      -1.676,0.3168,0,        -1.654413,0.3168,-0.274998,
+       -1.654413,0.3168,-0.274998,     -1.587289,0.260025,-0.263841,   -1.608,0.260025,0,
+       -0.254652,0.2136,-1.53201,      -0.263841,0.260025,-1.587289,   0,0.260025,-1.608,
+       0,0.260025,-1.608,      0,0.2136,-1.552,        -0.254652,0.2136,-1.53201,
+       -0.49515,0.2136,-1.474028,      -0.513016,0.260025,-1.527214,   -0.263841,0.260025,-1.587289,
+       -0.263841,0.260025,-1.587289,   -0.254652,0.2136,-1.53201,      -0.49515,0.2136,-1.474028,
+       -0.718514,0.2136,-1.381032,     -0.74444,0.260025,-1.430863,    -0.513016,0.260025,-1.527214,
+       -0.513016,0.260025,-1.527214,   -0.49515,0.2136,-1.474028,      -0.718514,0.2136,-1.381032,
+       -0.921764,0.2136,-1.256003,     -0.955023,0.260025,-1.301322,   -0.74444,0.260025,-1.430863,
+       -0.74444,0.260025,-1.430863,    -0.718514,0.2136,-1.381032,     -0.921764,0.2136,-1.256003,
+       -1.10192,0.2136,-1.10192,       -1.14168,0.260025,-1.14168,     -0.955023,0.260025,-1.301322,
+       -0.955023,0.260025,-1.301322,   -0.921764,0.2136,-1.256003,     -1.10192,0.2136,-1.10192,
+       -1.256003,0.2136,-0.921764,     -1.301322,0.260025,-0.955023,   -1.14168,0.260025,-1.14168,
+       -1.14168,0.260025,-1.14168,     -1.10192,0.2136,-1.10192,       -1.256003,0.2136,-0.921764,
+       -1.381032,0.2136,-0.718514,     -1.430863,0.260025,-0.74444,    -1.301322,0.260025,-0.955023,
+       -1.301322,0.260025,-0.955023,   -1.256003,0.2136,-0.921764,     -1.381032,0.2136,-0.718514,
+       -1.474028,0.2136,-0.49515,      -1.527214,0.260025,-0.513016,   -1.430863,0.260025,-0.74444,
+       -1.430863,0.260025,-0.74444,    -1.381032,0.2136,-0.718514,     -1.474028,0.2136,-0.49515,
+       -1.53201,0.2136,-0.254652,      -1.587289,0.260025,-0.263841,   -1.527214,0.260025,-0.513016,
+       -1.527214,0.260025,-0.513016,   -1.474028,0.2136,-0.49515,      -1.53201,0.2136,-0.254652,
+       -1.552,0.2136,0,        -1.608,0.260025,0,      -1.587289,0.260025,-0.263841,
+       -1.587289,0.260025,-0.263841,   -1.53201,0.2136,-0.254652,      -1.552,0.2136,0,
+       -0.248417,0.177075,-1.4945,     -0.254652,0.2136,-1.53201,      0,0.2136,-1.552,
+       0,0.2136,-1.552,        0,0.177075,-1.514,      -0.248417,0.177075,-1.4945,
+       -0.483027,0.177075,-1.437937,   -0.49515,0.2136,-1.474028,      -0.254652,0.2136,-1.53201,
+       -0.254652,0.2136,-1.53201,      -0.248417,0.177075,-1.4945,     -0.483027,0.177075,-1.437937,
+       -0.700921,0.177075,-1.347218,   -0.718514,0.2136,-1.381032,     -0.49515,0.2136,-1.474028,
+       -0.49515,0.2136,-1.474028,      -0.483027,0.177075,-1.437937,   -0.700921,0.177075,-1.347218,
+       -0.899195,0.177075,-1.22525,    -0.921764,0.2136,-1.256003,     -0.718514,0.2136,-1.381032,
+       -0.718514,0.2136,-1.381032,     -0.700921,0.177075,-1.347218,   -0.899195,0.177075,-1.22525,
+       -1.07494,0.177075,-1.07494,     -1.10192,0.2136,-1.10192,       -0.921764,0.2136,-1.256003,
+       -0.921764,0.2136,-1.256003,     -0.899195,0.177075,-1.22525,    -1.07494,0.177075,-1.07494,
+       -1.22525,0.177075,-0.899195,    -1.256003,0.2136,-0.921764,     -1.10192,0.2136,-1.10192,
+       -1.10192,0.2136,-1.10192,       -1.07494,0.177075,-1.07494,     -1.22525,0.177075,-0.899195,
+       -1.347218,0.177075,-0.700921,   -1.381032,0.2136,-0.718514,     -1.256003,0.2136,-0.921764,
+       -1.256003,0.2136,-0.921764,     -1.22525,0.177075,-0.899195,    -1.347218,0.177075,-0.700921,
+       -1.437937,0.177075,-0.483027,   -1.474028,0.2136,-0.49515,      -1.381032,0.2136,-0.718514,
+       -1.381032,0.2136,-0.718514,     -1.347218,0.177075,-0.700921,   -1.437937,0.177075,-0.483027,
+       -1.4945,0.177075,-0.248417,     -1.53201,0.2136,-0.254652,      -1.474028,0.2136,-0.49515,
+       -1.474028,0.2136,-0.49515,      -1.437937,0.177075,-0.483027,   -1.4945,0.177075,-0.248417,
+       -1.514,0.177075,0,      -1.552,0.2136,0,        -1.53201,0.2136,-0.254652,
+       -1.53201,0.2136,-0.254652,      -1.4945,0.177075,-0.248417,     -1.514,0.177075,0,
+       -0.24612,0.15,-1.48068, -0.248417,0.177075,-1.4945,     0,0.177075,-1.514,
+       0,0.177075,-1.514,      0,0.15,-1.5,    -0.24612,0.15,-1.48068,
+       -0.47856,0.15,-1.42464, -0.483027,0.177075,-1.437937,   -0.248417,0.177075,-1.4945,
+       -0.248417,0.177075,-1.4945,     -0.24612,0.15,-1.48068, -0.47856,0.15,-1.42464,
+       -0.69444,0.15,-1.33476, -0.700921,0.177075,-1.347218,   -0.483027,0.177075,-1.437937,
+       -0.483027,0.177075,-1.437937,   -0.47856,0.15,-1.42464, -0.69444,0.15,-1.33476,
+       -0.89088,0.15,-1.21392, -0.899195,0.177075,-1.22525,    -0.700921,0.177075,-1.347218,
+       -0.700921,0.177075,-1.347218,   -0.69444,0.15,-1.33476, -0.89088,0.15,-1.21392,
+       -1.065,0.15,-1.065,     -1.07494,0.177075,-1.07494,     -0.899195,0.177075,-1.22525,
+       -0.899195,0.177075,-1.22525,    -0.89088,0.15,-1.21392, -1.065,0.15,-1.065,
+       -1.21392,0.15,-0.89088, -1.22525,0.177075,-0.899195,    -1.07494,0.177075,-1.07494,
+       -1.07494,0.177075,-1.07494,     -1.065,0.15,-1.065,     -1.21392,0.15,-0.89088,
+       -1.33476,0.15,-0.69444, -1.347218,0.177075,-0.700921,   -1.22525,0.177075,-0.899195,
+       -1.22525,0.177075,-0.899195,    -1.21392,0.15,-0.89088, -1.33476,0.15,-0.69444,
+       -1.42464,0.15,-0.47856, -1.437937,0.177075,-0.483027,   -1.347218,0.177075,-0.700921,
+       -1.347218,0.177075,-0.700921,   -1.33476,0.15,-0.69444, -1.42464,0.15,-0.47856,
+       -1.48068,0.15,-0.24612, -1.4945,0.177075,-0.248417,     -1.437937,0.177075,-0.483027,
+       -1.437937,0.177075,-0.483027,   -1.42464,0.15,-0.47856, -1.48068,0.15,-0.24612,
+       -1.5,0.15,0,    -1.514,0.177075,0,      -1.4945,0.177075,-0.248417,
+       -1.4945,0.177075,-0.248417,     -1.48068,0.15,-0.24612, -1.5,0.15,0,
+       -1.96042,0.771675,0.325863,     -1.97424,0.9,0.32816,   -2,0.9,0,
+       -2,0.9,0,       -1.986,0.771675,0,      -1.96042,0.771675,0.325863,
+       -1.886223,0.771675,0.633613,    -1.89952,0.9,0.63808,   -1.97424,0.9,0.32816,
+       -1.97424,0.9,0.32816,   -1.96042,0.771675,0.325863,     -1.886223,0.771675,0.633613,
+       -1.767222,0.771675,0.919439,    -1.77968,0.9,0.92592,   -1.89952,0.9,0.63808,
+       -1.89952,0.9,0.63808,   -1.886223,0.771675,0.633613,    -1.767222,0.771675,0.919439,
+       -1.60723,0.771675,1.179525,     -1.61856,0.9,1.18784,   -1.77968,0.9,0.92592,
+       -1.77968,0.9,0.92592,   -1.767222,0.771675,0.919439,    -1.60723,0.771675,1.179525,
+       -1.41006,0.771675,1.41006,      -1.42,0.9,1.42, -1.61856,0.9,1.18784,
+       -1.61856,0.9,1.18784,   -1.60723,0.771675,1.179525,     -1.41006,0.771675,1.41006,
+       -1.179525,0.771675,1.60723,     -1.18784,0.9,1.61856,   -1.42,0.9,1.42,
+       -1.42,0.9,1.42, -1.41006,0.771675,1.41006,      -1.179525,0.771675,1.60723,
+       -0.919439,0.771675,1.767222,    -0.92592,0.9,1.77968,   -1.18784,0.9,1.61856,
+       -1.18784,0.9,1.61856,   -1.179525,0.771675,1.60723,     -0.919439,0.771675,1.767222,
+       -0.633613,0.771675,1.886223,    -0.63808,0.9,1.89952,   -0.92592,0.9,1.77968,
+       -0.92592,0.9,1.77968,   -0.919439,0.771675,1.767222,    -0.633613,0.771675,1.886223,
+       -0.325863,0.771675,1.96042,     -0.32816,0.9,1.97424,   -0.63808,0.9,1.89952,
+       -0.63808,0.9,1.89952,   -0.633613,0.771675,1.886223,    -0.325863,0.771675,1.96042,
+       0,0.771675,1.986,       0,0.9,2,        -0.32816,0.9,1.97424,
+       -0.32816,0.9,1.97424,   -0.325863,0.771675,1.96042,     0,0.771675,1.986,
+       -1.92291,0.6564,0.319628,       -1.96042,0.771675,0.325863,     -1.986,0.771675,0,
+       -1.986,0.771675,0,      -1.948,0.6564,0,        -1.92291,0.6564,0.319628,
+       -1.850132,0.6564,0.62149,       -1.886223,0.771675,0.633613,    -1.96042,0.771675,0.325863,
+       -1.96042,0.771675,0.325863,     -1.92291,0.6564,0.319628,       -1.850132,0.6564,0.62149,
+       -1.733408,0.6564,0.901846,      -1.767222,0.771675,0.919439,    -1.886223,0.771675,0.633613,
+       -1.886223,0.771675,0.633613,    -1.850132,0.6564,0.62149,       -1.733408,0.6564,0.901846,
+       -1.576477,0.6564,1.156956,      -1.60723,0.771675,1.179525,     -1.767222,0.771675,0.919439,
+       -1.767222,0.771675,0.919439,    -1.733408,0.6564,0.901846,      -1.576477,0.6564,1.156956,
+       -1.38308,0.6564,1.38308,        -1.41006,0.771675,1.41006,      -1.60723,0.771675,1.179525,
+       -1.60723,0.771675,1.179525,     -1.576477,0.6564,1.156956,      -1.38308,0.6564,1.38308,
+       -1.156956,0.6564,1.576477,      -1.179525,0.771675,1.60723,     -1.41006,0.771675,1.41006,
+       -1.41006,0.771675,1.41006,      -1.38308,0.6564,1.38308,        -1.156956,0.6564,1.576477,
+       -0.901846,0.6564,1.733408,      -0.919439,0.771675,1.767222,    -1.179525,0.771675,1.60723,
+       -1.179525,0.771675,1.60723,     -1.156956,0.6564,1.576477,      -0.901846,0.6564,1.733408,
+       -0.62149,0.6564,1.850132,       -0.633613,0.771675,1.886223,    -0.919439,0.771675,1.767222,
+       -0.919439,0.771675,1.767222,    -0.901846,0.6564,1.733408,      -0.62149,0.6564,1.850132,
+       -0.319628,0.6564,1.92291,       -0.325863,0.771675,1.96042,     -0.633613,0.771675,1.886223,
+       -0.633613,0.771675,1.886223,    -0.62149,0.6564,1.850132,       -0.319628,0.6564,1.92291,
+       0,0.6564,1.948, 0,0.771675,1.986,       -0.325863,0.771675,1.96042,
+       -0.325863,0.771675,1.96042,     -0.319628,0.6564,1.92291,       0,0.6564,1.948,
+       -1.867631,0.553725,0.310439,    -1.92291,0.6564,0.319628,       -1.948,0.6564,0,
+       -1.948,0.6564,0,        -1.892,0.553725,0,      -1.867631,0.553725,0.310439,
+       -1.796946,0.553725,0.603624,    -1.850132,0.6564,0.62149,       -1.92291,0.6564,0.319628,
+       -1.92291,0.6564,0.319628,       -1.867631,0.553725,0.310439,    -1.796946,0.553725,0.603624,
+       -1.683577,0.553725,0.87592,     -1.733408,0.6564,0.901846,      -1.850132,0.6564,0.62149,
+       -1.850132,0.6564,0.62149,       -1.796946,0.553725,0.603624,    -1.683577,0.553725,0.87592,
+       -1.531158,0.553725,1.123697,    -1.576477,0.6564,1.156956,      -1.733408,0.6564,0.901846,
+       -1.733408,0.6564,0.901846,      -1.683577,0.553725,0.87592,     -1.531158,0.553725,1.123697,
+       -1.34332,0.553725,1.34332,      -1.38308,0.6564,1.38308,        -1.576477,0.6564,1.156956,
+       -1.576477,0.6564,1.156956,      -1.531158,0.553725,1.123697,    -1.34332,0.553725,1.34332,
+       -1.123697,0.553725,1.531158,    -1.156956,0.6564,1.576477,      -1.38308,0.6564,1.38308,
+       -1.38308,0.6564,1.38308,        -1.34332,0.553725,1.34332,      -1.123697,0.553725,1.531158,
+       -0.87592,0.553725,1.683577,     -0.901846,0.6564,1.733408,      -1.156956,0.6564,1.576477,
+       -1.156956,0.6564,1.576477,      -1.123697,0.553725,1.531158,    -0.87592,0.553725,1.683577,
+       -0.603624,0.553725,1.796946,    -0.62149,0.6564,1.850132,       -0.901846,0.6564,1.733408,
+       -0.901846,0.6564,1.733408,      -0.87592,0.553725,1.683577,     -0.603624,0.553725,1.796946,
+       -0.310439,0.553725,1.867631,    -0.319628,0.6564,1.92291,       -0.62149,0.6564,1.850132,
+       -0.62149,0.6564,1.850132,       -0.603624,0.553725,1.796946,    -0.310439,0.553725,1.867631,
+       0,0.553725,1.892,       0,0.6564,1.948, -0.319628,0.6564,1.92291,
+       -0.319628,0.6564,1.92291,       -0.310439,0.553725,1.867631,    0,0.553725,1.892,
+       -1.800507,0.4632,0.299282,      -1.867631,0.553725,0.310439,    -1.892,0.553725,0,
+       -1.892,0.553725,0,      -1.824,0.4632,0,        -1.800507,0.4632,0.299282,
+       -1.732362,0.4632,0.581929,      -1.796946,0.553725,0.603624,    -1.867631,0.553725,0.310439,
+       -1.867631,0.553725,0.310439,    -1.800507,0.4632,0.299282,      -1.732362,0.4632,0.581929,
+       -1.623068,0.4632,0.844439,      -1.683577,0.553725,0.87592,     -1.796946,0.553725,0.603624,
+       -1.796946,0.553725,0.603624,    -1.732362,0.4632,0.581929,      -1.623068,0.4632,0.844439,
+       -1.476127,0.4632,1.08331,       -1.531158,0.553725,1.123697,    -1.683577,0.553725,0.87592,
+       -1.683577,0.553725,0.87592,     -1.623068,0.4632,0.844439,      -1.476127,0.4632,1.08331,
+       -1.29504,0.4632,1.29504,        -1.34332,0.553725,1.34332,      -1.531158,0.553725,1.123697,
+       -1.531158,0.553725,1.123697,    -1.476127,0.4632,1.08331,       -1.29504,0.4632,1.29504,
+       -1.08331,0.4632,1.476127,       -1.123697,0.553725,1.531158,    -1.34332,0.553725,1.34332,
+       -1.34332,0.553725,1.34332,      -1.29504,0.4632,1.29504,        -1.08331,0.4632,1.476127,
+       -0.844439,0.4632,1.623068,      -0.87592,0.553725,1.683577,     -1.123697,0.553725,1.531158,
+       -1.123697,0.553725,1.531158,    -1.08331,0.4632,1.476127,       -0.844439,0.4632,1.623068,
+       -0.581929,0.4632,1.732362,      -0.603624,0.553725,1.796946,    -0.87592,0.553725,1.683577,
+       -0.87592,0.553725,1.683577,     -0.844439,0.4632,1.623068,      -0.581929,0.4632,1.732362,
+       -0.299282,0.4632,1.800507,      -0.310439,0.553725,1.867631,    -0.603624,0.553725,1.796946,
+       -0.603624,0.553725,1.796946,    -0.581929,0.4632,1.732362,      -0.299282,0.4632,1.800507,
+       0,0.4632,1.824, 0,0.553725,1.892,       -0.310439,0.553725,1.867631,
+       -0.310439,0.553725,1.867631,    -0.299282,0.4632,1.800507,      0,0.4632,1.824,
+       -1.72746,0.384375,0.28714,      -1.800507,0.4632,0.299282,      -1.824,0.4632,0,
+       -1.824,0.4632,0,        -1.75,0.384375,0,       -1.72746,0.384375,0.28714,
+       -1.66208,0.384375,0.55832,      -1.732362,0.4632,0.581929,      -1.800507,0.4632,0.299282,
+       -1.800507,0.4632,0.299282,      -1.72746,0.384375,0.28714,      -1.66208,0.384375,0.55832,
+       -1.55722,0.384375,0.81018,      -1.623068,0.4632,0.844439,      -1.732362,0.4632,0.581929,
+       -1.732362,0.4632,0.581929,      -1.66208,0.384375,0.55832,      -1.55722,0.384375,0.81018,
+       -1.41624,0.384375,1.03936,      -1.476127,0.4632,1.08331,       -1.623068,0.4632,0.844439,
+       -1.623068,0.4632,0.844439,      -1.55722,0.384375,0.81018,      -1.41624,0.384375,1.03936,
+       -1.2425,0.384375,1.2425,        -1.29504,0.4632,1.29504,        -1.476127,0.4632,1.08331,
+       -1.476127,0.4632,1.08331,       -1.41624,0.384375,1.03936,      -1.2425,0.384375,1.2425,
+       -1.03936,0.384375,1.41624,      -1.08331,0.4632,1.476127,       -1.29504,0.4632,1.29504,
+       -1.29504,0.4632,1.29504,        -1.2425,0.384375,1.2425,        -1.03936,0.384375,1.41624,
+       -0.81018,0.384375,1.55722,      -0.844439,0.4632,1.623068,      -1.08331,0.4632,1.476127,
+       -1.08331,0.4632,1.476127,       -1.03936,0.384375,1.41624,      -0.81018,0.384375,1.55722,
+       -0.55832,0.384375,1.66208,      -0.581929,0.4632,1.732362,      -0.844439,0.4632,1.623068,
+       -0.844439,0.4632,1.623068,      -0.81018,0.384375,1.55722,      -0.55832,0.384375,1.66208,
+       -0.28714,0.384375,1.72746,      -0.299282,0.4632,1.800507,      -0.581929,0.4632,1.732362,
+       -0.581929,0.4632,1.732362,      -0.55832,0.384375,1.66208,      -0.28714,0.384375,1.72746,
+       0,0.384375,1.75,        0,0.4632,1.824, -0.299282,0.4632,1.800507,
+       -0.299282,0.4632,1.800507,      -0.28714,0.384375,1.72746,      0,0.384375,1.75,
+       -1.654413,0.3168,0.274998,      -1.72746,0.384375,0.28714,      -1.75,0.384375,0,
+       -1.75,0.384375,0,       -1.676,0.3168,0,        -1.654413,0.3168,0.274998,
+       -1.591798,0.3168,0.534711,      -1.66208,0.384375,0.55832,      -1.72746,0.384375,0.28714,
+       -1.72746,0.384375,0.28714,      -1.654413,0.3168,0.274998,      -1.591798,0.3168,0.534711,
+       -1.491372,0.3168,0.775921,      -1.55722,0.384375,0.81018,      -1.66208,0.384375,0.55832,
+       -1.66208,0.384375,0.55832,      -1.591798,0.3168,0.534711,      -1.491372,0.3168,0.775921,
+       -1.356353,0.3168,0.99541,       -1.41624,0.384375,1.03936,      -1.55722,0.384375,0.81018,
+       -1.55722,0.384375,0.81018,      -1.491372,0.3168,0.775921,      -1.356353,0.3168,0.99541,
+       -1.18996,0.3168,1.18996,        -1.2425,0.384375,1.2425,        -1.41624,0.384375,1.03936,
+       -1.41624,0.384375,1.03936,      -1.356353,0.3168,0.99541,       -1.18996,0.3168,1.18996,
+       -0.99541,0.3168,1.356353,       -1.03936,0.384375,1.41624,      -1.2425,0.384375,1.2425,
+       -1.2425,0.384375,1.2425,        -1.18996,0.3168,1.18996,        -0.99541,0.3168,1.356353,
+       -0.775921,0.3168,1.491372,      -0.81018,0.384375,1.55722,      -1.03936,0.384375,1.41624,
+       -1.03936,0.384375,1.41624,      -0.99541,0.3168,1.356353,       -0.775921,0.3168,1.491372,
+       -0.534711,0.3168,1.591798,      -0.55832,0.384375,1.66208,      -0.81018,0.384375,1.55722,
+       -0.81018,0.384375,1.55722,      -0.775921,0.3168,1.491372,      -0.534711,0.3168,1.591798,
+       -0.274998,0.3168,1.654413,      -0.28714,0.384375,1.72746,      -0.55832,0.384375,1.66208,
+       -0.55832,0.384375,1.66208,      -0.534711,0.3168,1.591798,      -0.274998,0.3168,1.654413,
+       0,0.3168,1.676, 0,0.384375,1.75,        -0.28714,0.384375,1.72746,
+       -0.28714,0.384375,1.72746,      -0.274998,0.3168,1.654413,      0,0.3168,1.676,
+       -1.587289,0.260025,0.263841,    -1.654413,0.3168,0.274998,      -1.676,0.3168,0,
+       -1.676,0.3168,0,        -1.608,0.260025,0,      -1.587289,0.260025,0.263841,
+       -1.527214,0.260025,0.513016,    -1.591798,0.3168,0.534711,      -1.654413,0.3168,0.274998,
+       -1.654413,0.3168,0.274998,      -1.587289,0.260025,0.263841,    -1.527214,0.260025,0.513016,
+       -1.430863,0.260025,0.74444,     -1.491372,0.3168,0.775921,      -1.591798,0.3168,0.534711,
+       -1.591798,0.3168,0.534711,      -1.527214,0.260025,0.513016,    -1.430863,0.260025,0.74444,
+       -1.301322,0.260025,0.955023,    -1.356353,0.3168,0.99541,       -1.491372,0.3168,0.775921,
+       -1.491372,0.3168,0.775921,      -1.430863,0.260025,0.74444,     -1.301322,0.260025,0.955023,
+       -1.14168,0.260025,1.14168,      -1.18996,0.3168,1.18996,        -1.356353,0.3168,0.99541,
+       -1.356353,0.3168,0.99541,       -1.301322,0.260025,0.955023,    -1.14168,0.260025,1.14168,
+       -0.955023,0.260025,1.301322,    -0.99541,0.3168,1.356353,       -1.18996,0.3168,1.18996,
+       -1.18996,0.3168,1.18996,        -1.14168,0.260025,1.14168,      -0.955023,0.260025,1.301322,
+       -0.74444,0.260025,1.430863,     -0.775921,0.3168,1.491372,      -0.99541,0.3168,1.356353,
+       -0.99541,0.3168,1.356353,       -0.955023,0.260025,1.301322,    -0.74444,0.260025,1.430863,
+       -0.513016,0.260025,1.527214,    -0.534711,0.3168,1.591798,      -0.775921,0.3168,1.491372,
+       -0.775921,0.3168,1.491372,      -0.74444,0.260025,1.430863,     -0.513016,0.260025,1.527214,
+       -0.263841,0.260025,1.587289,    -0.274998,0.3168,1.654413,      -0.534711,0.3168,1.591798,
+       -0.534711,0.3168,1.591798,      -0.513016,0.260025,1.527214,    -0.263841,0.260025,1.587289,
+       0,0.260025,1.608,       0,0.3168,1.676, -0.274998,0.3168,1.654413,
+       -0.274998,0.3168,1.654413,      -0.263841,0.260025,1.587289,    0,0.260025,1.608,
+       -1.53201,0.2136,0.254652,       -1.587289,0.260025,0.263841,    -1.608,0.260025,0,
+       -1.608,0.260025,0,      -1.552,0.2136,0,        -1.53201,0.2136,0.254652,
+       -1.474028,0.2136,0.49515,       -1.527214,0.260025,0.513016,    -1.587289,0.260025,0.263841,
+       -1.587289,0.260025,0.263841,    -1.53201,0.2136,0.254652,       -1.474028,0.2136,0.49515,
+       -1.381032,0.2136,0.718514,      -1.430863,0.260025,0.74444,     -1.527214,0.260025,0.513016,
+       -1.527214,0.260025,0.513016,    -1.474028,0.2136,0.49515,       -1.381032,0.2136,0.718514,
+       -1.256003,0.2136,0.921764,      -1.301322,0.260025,0.955023,    -1.430863,0.260025,0.74444,
+       -1.430863,0.260025,0.74444,     -1.381032,0.2136,0.718514,      -1.256003,0.2136,0.921764,
+       -1.10192,0.2136,1.10192,        -1.14168,0.260025,1.14168,      -1.301322,0.260025,0.955023,
+       -1.301322,0.260025,0.955023,    -1.256003,0.2136,0.921764,      -1.10192,0.2136,1.10192,
+       -0.921764,0.2136,1.256003,      -0.955023,0.260025,1.301322,    -1.14168,0.260025,1.14168,
+       -1.14168,0.260025,1.14168,      -1.10192,0.2136,1.10192,        -0.921764,0.2136,1.256003,
+       -0.718514,0.2136,1.381032,      -0.74444,0.260025,1.430863,     -0.955023,0.260025,1.301322,
+       -0.955023,0.260025,1.301322,    -0.921764,0.2136,1.256003,      -0.718514,0.2136,1.381032,
+       -0.49515,0.2136,1.474028,       -0.513016,0.260025,1.527214,    -0.74444,0.260025,1.430863,
+       -0.74444,0.260025,1.430863,     -0.718514,0.2136,1.381032,      -0.49515,0.2136,1.474028,
+       -0.254652,0.2136,1.53201,       -0.263841,0.260025,1.587289,    -0.513016,0.260025,1.527214,
+       -0.513016,0.260025,1.527214,    -0.49515,0.2136,1.474028,       -0.254652,0.2136,1.53201,
+       0,0.2136,1.552, 0,0.260025,1.608,       -0.263841,0.260025,1.587289,
+       -0.263841,0.260025,1.587289,    -0.254652,0.2136,1.53201,       0,0.2136,1.552,
+       -1.4945,0.177075,0.248417,      -1.53201,0.2136,0.254652,       -1.552,0.2136,0,
+       -1.552,0.2136,0,        -1.514,0.177075,0,      -1.4945,0.177075,0.248417,
+       -1.437937,0.177075,0.483027,    -1.474028,0.2136,0.49515,       -1.53201,0.2136,0.254652,
+       -1.53201,0.2136,0.254652,       -1.4945,0.177075,0.248417,      -1.437937,0.177075,0.483027,
+       -1.347218,0.177075,0.700921,    -1.381032,0.2136,0.718514,      -1.474028,0.2136,0.49515,
+       -1.474028,0.2136,0.49515,       -1.437937,0.177075,0.483027,    -1.347218,0.177075,0.700921,
+       -1.22525,0.177075,0.899195,     -1.256003,0.2136,0.921764,      -1.381032,0.2136,0.718514,
+       -1.381032,0.2136,0.718514,      -1.347218,0.177075,0.700921,    -1.22525,0.177075,0.899195,
+       -1.07494,0.177075,1.07494,      -1.10192,0.2136,1.10192,        -1.256003,0.2136,0.921764,
+       -1.256003,0.2136,0.921764,      -1.22525,0.177075,0.899195,     -1.07494,0.177075,1.07494,
+       -0.899195,0.177075,1.22525,     -0.921764,0.2136,1.256003,      -1.10192,0.2136,1.10192,
+       -1.10192,0.2136,1.10192,        -1.07494,0.177075,1.07494,      -0.899195,0.177075,1.22525,
+       -0.700921,0.177075,1.347218,    -0.718514,0.2136,1.381032,      -0.921764,0.2136,1.256003,
+       -0.921764,0.2136,1.256003,      -0.899195,0.177075,1.22525,     -0.700921,0.177075,1.347218,
+       -0.483027,0.177075,1.437937,    -0.49515,0.2136,1.474028,       -0.718514,0.2136,1.381032,
+       -0.718514,0.2136,1.381032,      -0.700921,0.177075,1.347218,    -0.483027,0.177075,1.437937,
+       -0.248417,0.177075,1.4945,      -0.254652,0.2136,1.53201,       -0.49515,0.2136,1.474028,
+       -0.49515,0.2136,1.474028,       -0.483027,0.177075,1.437937,    -0.248417,0.177075,1.4945,
+       0,0.177075,1.514,       0,0.2136,1.552, -0.254652,0.2136,1.53201,
+       -0.254652,0.2136,1.53201,       -0.248417,0.177075,1.4945,      0,0.177075,1.514,
+       -1.48068,0.15,0.24612,  -1.4945,0.177075,0.248417,      -1.514,0.177075,0,
+       -1.514,0.177075,0,      -1.5,0.15,0,    -1.48068,0.15,0.24612,
+       -1.42464,0.15,0.47856,  -1.437937,0.177075,0.483027,    -1.4945,0.177075,0.248417,
+       -1.4945,0.177075,0.248417,      -1.48068,0.15,0.24612,  -1.42464,0.15,0.47856,
+       -1.33476,0.15,0.69444,  -1.347218,0.177075,0.700921,    -1.437937,0.177075,0.483027,
+       -1.437937,0.177075,0.483027,    -1.42464,0.15,0.47856,  -1.33476,0.15,0.69444,
+       -1.21392,0.15,0.89088,  -1.22525,0.177075,0.899195,     -1.347218,0.177075,0.700921,
+       -1.347218,0.177075,0.700921,    -1.33476,0.15,0.69444,  -1.21392,0.15,0.89088,
+       -1.065,0.15,1.065,      -1.07494,0.177075,1.07494,      -1.22525,0.177075,0.899195,
+       -1.22525,0.177075,0.899195,     -1.21392,0.15,0.89088,  -1.065,0.15,1.065,
+       -0.89088,0.15,1.21392,  -0.899195,0.177075,1.22525,     -1.07494,0.177075,1.07494,
+       -1.07494,0.177075,1.07494,      -1.065,0.15,1.065,      -0.89088,0.15,1.21392,
+       -0.69444,0.15,1.33476,  -0.700921,0.177075,1.347218,    -0.899195,0.177075,1.22525,
+       -0.899195,0.177075,1.22525,     -0.89088,0.15,1.21392,  -0.69444,0.15,1.33476,
+       -0.47856,0.15,1.42464,  -0.483027,0.177075,1.437937,    -0.700921,0.177075,1.347218,
+       -0.700921,0.177075,1.347218,    -0.69444,0.15,1.33476,  -0.47856,0.15,1.42464,
+       -0.24612,0.15,1.48068,  -0.248417,0.177075,1.4945,      -0.483027,0.177075,1.437937,
+       -0.483027,0.177075,1.437937,    -0.47856,0.15,1.42464,  -0.24612,0.15,1.48068,
+       0,0.15,1.5,     0,0.177075,1.514,       -0.248417,0.177075,1.4945,
+       -0.248417,0.177075,1.4945,      -0.24612,0.15,1.48068,  0,0.15,1.5,
+       0.325863,0.771675,1.96042,      0.32816,0.9,1.97424,    0,0.9,2,
+       0,0.9,2,        0,0.771675,1.986,       0.325863,0.771675,1.96042,
+       0.633613,0.771675,1.886223,     0.63808,0.9,1.89952,    0.32816,0.9,1.97424,
+       0.32816,0.9,1.97424,    0.325863,0.771675,1.96042,      0.633613,0.771675,1.886223,
+       0.919439,0.771675,1.767222,     0.92592,0.9,1.77968,    0.63808,0.9,1.89952,
+       0.63808,0.9,1.89952,    0.633613,0.771675,1.886223,     0.919439,0.771675,1.767222,
+       1.179525,0.771675,1.60723,      1.18784,0.9,1.61856,    0.92592,0.9,1.77968,
+       0.92592,0.9,1.77968,    0.919439,0.771675,1.767222,     1.179525,0.771675,1.60723,
+       1.41006,0.771675,1.41006,       1.42,0.9,1.42,  1.18784,0.9,1.61856,
+       1.18784,0.9,1.61856,    1.179525,0.771675,1.60723,      1.41006,0.771675,1.41006,
+       1.60723,0.771675,1.179525,      1.61856,0.9,1.18784,    1.42,0.9,1.42,
+       1.42,0.9,1.42,  1.41006,0.771675,1.41006,       1.60723,0.771675,1.179525,
+       1.767222,0.771675,0.919439,     1.77968,0.9,0.92592,    1.61856,0.9,1.18784,
+       1.61856,0.9,1.18784,    1.60723,0.771675,1.179525,      1.767222,0.771675,0.919439,
+       1.886223,0.771675,0.633613,     1.89952,0.9,0.63808,    1.77968,0.9,0.92592,
+       1.77968,0.9,0.92592,    1.767222,0.771675,0.919439,     1.886223,0.771675,0.633613,
+       1.96042,0.771675,0.325863,      1.97424,0.9,0.32816,    1.89952,0.9,0.63808,
+       1.89952,0.9,0.63808,    1.886223,0.771675,0.633613,     1.96042,0.771675,0.325863,
+       1.986,0.771675,0,       2,0.9,0,        1.97424,0.9,0.32816,
+       1.97424,0.9,0.32816,    1.96042,0.771675,0.325863,      1.986,0.771675,0,
+       0.319628,0.6564,1.92291,        0.325863,0.771675,1.96042,      0,0.771675,1.986,
+       0,0.771675,1.986,       0,0.6564,1.948, 0.319628,0.6564,1.92291,
+       0.62149,0.6564,1.850132,        0.633613,0.771675,1.886223,     0.325863,0.771675,1.96042,
+       0.325863,0.771675,1.96042,      0.319628,0.6564,1.92291,        0.62149,0.6564,1.850132,
+       0.901846,0.6564,1.733408,       0.919439,0.771675,1.767222,     0.633613,0.771675,1.886223,
+       0.633613,0.771675,1.886223,     0.62149,0.6564,1.850132,        0.901846,0.6564,1.733408,
+       1.156956,0.6564,1.576477,       1.179525,0.771675,1.60723,      0.919439,0.771675,1.767222,
+       0.919439,0.771675,1.767222,     0.901846,0.6564,1.733408,       1.156956,0.6564,1.576477,
+       1.38308,0.6564,1.38308, 1.41006,0.771675,1.41006,       1.179525,0.771675,1.60723,
+       1.179525,0.771675,1.60723,      1.156956,0.6564,1.576477,       1.38308,0.6564,1.38308,
+       1.576477,0.6564,1.156956,       1.60723,0.771675,1.179525,      1.41006,0.771675,1.41006,
+       1.41006,0.771675,1.41006,       1.38308,0.6564,1.38308, 1.576477,0.6564,1.156956,
+       1.733408,0.6564,0.901846,       1.767222,0.771675,0.919439,     1.60723,0.771675,1.179525,
+       1.60723,0.771675,1.179525,      1.576477,0.6564,1.156956,       1.733408,0.6564,0.901846,
+       1.850132,0.6564,0.62149,        1.886223,0.771675,0.633613,     1.767222,0.771675,0.919439,
+       1.767222,0.771675,0.919439,     1.733408,0.6564,0.901846,       1.850132,0.6564,0.62149,
+       1.92291,0.6564,0.319628,        1.96042,0.771675,0.325863,      1.886223,0.771675,0.633613,
+       1.886223,0.771675,0.633613,     1.850132,0.6564,0.62149,        1.92291,0.6564,0.319628,
+       1.948,0.6564,0, 1.986,0.771675,0,       1.96042,0.771675,0.325863,
+       1.96042,0.771675,0.325863,      1.92291,0.6564,0.319628,        1.948,0.6564,0,
+       0.310439,0.553725,1.867631,     0.319628,0.6564,1.92291,        0,0.6564,1.948,
+       0,0.6564,1.948, 0,0.553725,1.892,       0.310439,0.553725,1.867631,
+       0.603624,0.553725,1.796946,     0.62149,0.6564,1.850132,        0.319628,0.6564,1.92291,
+       0.319628,0.6564,1.92291,        0.310439,0.553725,1.867631,     0.603624,0.553725,1.796946,
+       0.87592,0.553725,1.683577,      0.901846,0.6564,1.733408,       0.62149,0.6564,1.850132,
+       0.62149,0.6564,1.850132,        0.603624,0.553725,1.796946,     0.87592,0.553725,1.683577,
+       1.123697,0.553725,1.531158,     1.156956,0.6564,1.576477,       0.901846,0.6564,1.733408,
+       0.901846,0.6564,1.733408,       0.87592,0.553725,1.683577,      1.123697,0.553725,1.531158,
+       1.34332,0.553725,1.34332,       1.38308,0.6564,1.38308, 1.156956,0.6564,1.576477,
+       1.156956,0.6564,1.576477,       1.123697,0.553725,1.531158,     1.34332,0.553725,1.34332,
+       1.531158,0.553725,1.123697,     1.576477,0.6564,1.156956,       1.38308,0.6564,1.38308,
+       1.38308,0.6564,1.38308, 1.34332,0.553725,1.34332,       1.531158,0.553725,1.123697,
+       1.683577,0.553725,0.87592,      1.733408,0.6564,0.901846,       1.576477,0.6564,1.156956,
+       1.576477,0.6564,1.156956,       1.531158,0.553725,1.123697,     1.683577,0.553725,0.87592,
+       1.796946,0.553725,0.603624,     1.850132,0.6564,0.62149,        1.733408,0.6564,0.901846,
+       1.733408,0.6564,0.901846,       1.683577,0.553725,0.87592,      1.796946,0.553725,0.603624,
+       1.867631,0.553725,0.310439,     1.92291,0.6564,0.319628,        1.850132,0.6564,0.62149,
+       1.850132,0.6564,0.62149,        1.796946,0.553725,0.603624,     1.867631,0.553725,0.310439,
+       1.892,0.553725,0,       1.948,0.6564,0, 1.92291,0.6564,0.319628,
+       1.92291,0.6564,0.319628,        1.867631,0.553725,0.310439,     1.892,0.553725,0,
+       0.299282,0.4632,1.800507,       0.310439,0.553725,1.867631,     0,0.553725,1.892,
+       0,0.553725,1.892,       0,0.4632,1.824, 0.299282,0.4632,1.800507,
+       0.581929,0.4632,1.732362,       0.603624,0.553725,1.796946,     0.310439,0.553725,1.867631,
+       0.310439,0.553725,1.867631,     0.299282,0.4632,1.800507,       0.581929,0.4632,1.732362,
+       0.844439,0.4632,1.623068,       0.87592,0.553725,1.683577,      0.603624,0.553725,1.796946,
+       0.603624,0.553725,1.796946,     0.581929,0.4632,1.732362,       0.844439,0.4632,1.623068,
+       1.08331,0.4632,1.476127,        1.123697,0.553725,1.531158,     0.87592,0.553725,1.683577,
+       0.87592,0.553725,1.683577,      0.844439,0.4632,1.623068,       1.08331,0.4632,1.476127,
+       1.29504,0.4632,1.29504, 1.34332,0.553725,1.34332,       1.123697,0.553725,1.531158,
+       1.123697,0.553725,1.531158,     1.08331,0.4632,1.476127,        1.29504,0.4632,1.29504,
+       1.476127,0.4632,1.08331,        1.531158,0.553725,1.123697,     1.34332,0.553725,1.34332,
+       1.34332,0.553725,1.34332,       1.29504,0.4632,1.29504, 1.476127,0.4632,1.08331,
+       1.623068,0.4632,0.844439,       1.683577,0.553725,0.87592,      1.531158,0.553725,1.123697,
+       1.531158,0.553725,1.123697,     1.476127,0.4632,1.08331,        1.623068,0.4632,0.844439,
+       1.732362,0.4632,0.581929,       1.796946,0.553725,0.603624,     1.683577,0.553725,0.87592,
+       1.683577,0.553725,0.87592,      1.623068,0.4632,0.844439,       1.732362,0.4632,0.581929,
+       1.800507,0.4632,0.299282,       1.867631,0.553725,0.310439,     1.796946,0.553725,0.603624,
+       1.796946,0.553725,0.603624,     1.732362,0.4632,0.581929,       1.800507,0.4632,0.299282,
+       1.824,0.4632,0, 1.892,0.553725,0,       1.867631,0.553725,0.310439,
+       1.867631,0.553725,0.310439,     1.800507,0.4632,0.299282,       1.824,0.4632,0,
+       0.28714,0.384375,1.72746,       0.299282,0.4632,1.800507,       0,0.4632,1.824,
+       0,0.4632,1.824, 0,0.384375,1.75,        0.28714,0.384375,1.72746,
+       0.55832,0.384375,1.66208,       0.581929,0.4632,1.732362,       0.299282,0.4632,1.800507,
+       0.299282,0.4632,1.800507,       0.28714,0.384375,1.72746,       0.55832,0.384375,1.66208,
+       0.81018,0.384375,1.55722,       0.844439,0.4632,1.623068,       0.581929,0.4632,1.732362,
+       0.581929,0.4632,1.732362,       0.55832,0.384375,1.66208,       0.81018,0.384375,1.55722,
+       1.03936,0.384375,1.41624,       1.08331,0.4632,1.476127,        0.844439,0.4632,1.623068,
+       0.844439,0.4632,1.623068,       0.81018,0.384375,1.55722,       1.03936,0.384375,1.41624,
+       1.2425,0.384375,1.2425, 1.29504,0.4632,1.29504, 1.08331,0.4632,1.476127,
+       1.08331,0.4632,1.476127,        1.03936,0.384375,1.41624,       1.2425,0.384375,1.2425,
+       1.41624,0.384375,1.03936,       1.476127,0.4632,1.08331,        1.29504,0.4632,1.29504,
+       1.29504,0.4632,1.29504, 1.2425,0.384375,1.2425, 1.41624,0.384375,1.03936,
+       1.55722,0.384375,0.81018,       1.623068,0.4632,0.844439,       1.476127,0.4632,1.08331,
+       1.476127,0.4632,1.08331,        1.41624,0.384375,1.03936,       1.55722,0.384375,0.81018,
+       1.66208,0.384375,0.55832,       1.732362,0.4632,0.581929,       1.623068,0.4632,0.844439,
+       1.623068,0.4632,0.844439,       1.55722,0.384375,0.81018,       1.66208,0.384375,0.55832,
+       1.72746,0.384375,0.28714,       1.800507,0.4632,0.299282,       1.732362,0.4632,0.581929,
+       1.732362,0.4632,0.581929,       1.66208,0.384375,0.55832,       1.72746,0.384375,0.28714,
+       1.75,0.384375,0,        1.824,0.4632,0, 1.800507,0.4632,0.299282,
+       1.800507,0.4632,0.299282,       1.72746,0.384375,0.28714,       1.75,0.384375,0,
+       0.274998,0.3168,1.654413,       0.28714,0.384375,1.72746,       0,0.384375,1.75,
+       0,0.384375,1.75,        0,0.3168,1.676, 0.274998,0.3168,1.654413,
+       0.534711,0.3168,1.591798,       0.55832,0.384375,1.66208,       0.28714,0.384375,1.72746,
+       0.28714,0.384375,1.72746,       0.274998,0.3168,1.654413,       0.534711,0.3168,1.591798,
+       0.775921,0.3168,1.491372,       0.81018,0.384375,1.55722,       0.55832,0.384375,1.66208,
+       0.55832,0.384375,1.66208,       0.534711,0.3168,1.591798,       0.775921,0.3168,1.491372,
+       0.99541,0.3168,1.356353,        1.03936,0.384375,1.41624,       0.81018,0.384375,1.55722,
+       0.81018,0.384375,1.55722,       0.775921,0.3168,1.491372,       0.99541,0.3168,1.356353,
+       1.18996,0.3168,1.18996, 1.2425,0.384375,1.2425, 1.03936,0.384375,1.41624,
+       1.03936,0.384375,1.41624,       0.99541,0.3168,1.356353,        1.18996,0.3168,1.18996,
+       1.356353,0.3168,0.99541,        1.41624,0.384375,1.03936,       1.2425,0.384375,1.2425,
+       1.2425,0.384375,1.2425, 1.18996,0.3168,1.18996, 1.356353,0.3168,0.99541,
+       1.491372,0.3168,0.775921,       1.55722,0.384375,0.81018,       1.41624,0.384375,1.03936,
+       1.41624,0.384375,1.03936,       1.356353,0.3168,0.99541,        1.491372,0.3168,0.775921,
+       1.591798,0.3168,0.534711,       1.66208,0.384375,0.55832,       1.55722,0.384375,0.81018,
+       1.55722,0.384375,0.81018,       1.491372,0.3168,0.775921,       1.591798,0.3168,0.534711,
+       1.654413,0.3168,0.274998,       1.72746,0.384375,0.28714,       1.66208,0.384375,0.55832,
+       1.66208,0.384375,0.55832,       1.591798,0.3168,0.534711,       1.654413,0.3168,0.274998,
+       1.676,0.3168,0, 1.75,0.384375,0,        1.72746,0.384375,0.28714,
+       1.72746,0.384375,0.28714,       1.654413,0.3168,0.274998,       1.676,0.3168,0,
+       0.263841,0.260025,1.587289,     0.274998,0.3168,1.654413,       0,0.3168,1.676,
+       0,0.3168,1.676, 0,0.260025,1.608,       0.263841,0.260025,1.587289,
+       0.513016,0.260025,1.527214,     0.534711,0.3168,1.591798,       0.274998,0.3168,1.654413,
+       0.274998,0.3168,1.654413,       0.263841,0.260025,1.587289,     0.513016,0.260025,1.527214,
+       0.74444,0.260025,1.430863,      0.775921,0.3168,1.491372,       0.534711,0.3168,1.591798,
+       0.534711,0.3168,1.591798,       0.513016,0.260025,1.527214,     0.74444,0.260025,1.430863,
+       0.955023,0.260025,1.301322,     0.99541,0.3168,1.356353,        0.775921,0.3168,1.491372,
+       0.775921,0.3168,1.491372,       0.74444,0.260025,1.430863,      0.955023,0.260025,1.301322,
+       1.14168,0.260025,1.14168,       1.18996,0.3168,1.18996, 0.99541,0.3168,1.356353,
+       0.99541,0.3168,1.356353,        0.955023,0.260025,1.301322,     1.14168,0.260025,1.14168,
+       1.301322,0.260025,0.955023,     1.356353,0.3168,0.99541,        1.18996,0.3168,1.18996,
+       1.18996,0.3168,1.18996, 1.14168,0.260025,1.14168,       1.301322,0.260025,0.955023,
+       1.430863,0.260025,0.74444,      1.491372,0.3168,0.775921,       1.356353,0.3168,0.99541,
+       1.356353,0.3168,0.99541,        1.301322,0.260025,0.955023,     1.430863,0.260025,0.74444,
+       1.527214,0.260025,0.513016,     1.591798,0.3168,0.534711,       1.491372,0.3168,0.775921,
+       1.491372,0.3168,0.775921,       1.430863,0.260025,0.74444,      1.527214,0.260025,0.513016,
+       1.587289,0.260025,0.263841,     1.654413,0.3168,0.274998,       1.591798,0.3168,0.534711,
+       1.591798,0.3168,0.534711,       1.527214,0.260025,0.513016,     1.587289,0.260025,0.263841,
+       1.608,0.260025,0,       1.676,0.3168,0, 1.654413,0.3168,0.274998,
+       1.654413,0.3168,0.274998,       1.587289,0.260025,0.263841,     1.608,0.260025,0,
+       0.254652,0.2136,1.53201,        0.263841,0.260025,1.587289,     0,0.260025,1.608,
+       0,0.260025,1.608,       0,0.2136,1.552, 0.254652,0.2136,1.53201,
+       0.49515,0.2136,1.474028,        0.513016,0.260025,1.527214,     0.263841,0.260025,1.587289,
+       0.263841,0.260025,1.587289,     0.254652,0.2136,1.53201,        0.49515,0.2136,1.474028,
+       0.718514,0.2136,1.381032,       0.74444,0.260025,1.430863,      0.513016,0.260025,1.527214,
+       0.513016,0.260025,1.527214,     0.49515,0.2136,1.474028,        0.718514,0.2136,1.381032,
+       0.921764,0.2136,1.256003,       0.955023,0.260025,1.301322,     0.74444,0.260025,1.430863,
+       0.74444,0.260025,1.430863,      0.718514,0.2136,1.381032,       0.921764,0.2136,1.256003,
+       1.10192,0.2136,1.10192, 1.14168,0.260025,1.14168,       0.955023,0.260025,1.301322,
+       0.955023,0.260025,1.301322,     0.921764,0.2136,1.256003,       1.10192,0.2136,1.10192,
+       1.256003,0.2136,0.921764,       1.301322,0.260025,0.955023,     1.14168,0.260025,1.14168,
+       1.14168,0.260025,1.14168,       1.10192,0.2136,1.10192, 1.256003,0.2136,0.921764,
+       1.381032,0.2136,0.718514,       1.430863,0.260025,0.74444,      1.301322,0.260025,0.955023,
+       1.301322,0.260025,0.955023,     1.256003,0.2136,0.921764,       1.381032,0.2136,0.718514,
+       1.474028,0.2136,0.49515,        1.527214,0.260025,0.513016,     1.430863,0.260025,0.74444,
+       1.430863,0.260025,0.74444,      1.381032,0.2136,0.718514,       1.474028,0.2136,0.49515,
+       1.53201,0.2136,0.254652,        1.587289,0.260025,0.263841,     1.527214,0.260025,0.513016,
+       1.527214,0.260025,0.513016,     1.474028,0.2136,0.49515,        1.53201,0.2136,0.254652,
+       1.552,0.2136,0, 1.608,0.260025,0,       1.587289,0.260025,0.263841,
+       1.587289,0.260025,0.263841,     1.53201,0.2136,0.254652,        1.552,0.2136,0,
+       0.248417,0.177075,1.4945,       0.254652,0.2136,1.53201,        0,0.2136,1.552,
+       0,0.2136,1.552, 0,0.177075,1.514,       0.248417,0.177075,1.4945,
+       0.483027,0.177075,1.437937,     0.49515,0.2136,1.474028,        0.254652,0.2136,1.53201,
+       0.254652,0.2136,1.53201,        0.248417,0.177075,1.4945,       0.483027,0.177075,1.437937,
+       0.700921,0.177075,1.347218,     0.718514,0.2136,1.381032,       0.49515,0.2136,1.474028,
+       0.49515,0.2136,1.474028,        0.483027,0.177075,1.437937,     0.700921,0.177075,1.347218,
+       0.899195,0.177075,1.22525,      0.921764,0.2136,1.256003,       0.718514,0.2136,1.381032,
+       0.718514,0.2136,1.381032,       0.700921,0.177075,1.347218,     0.899195,0.177075,1.22525,
+       1.07494,0.177075,1.07494,       1.10192,0.2136,1.10192, 0.921764,0.2136,1.256003,
+       0.921764,0.2136,1.256003,       0.899195,0.177075,1.22525,      1.07494,0.177075,1.07494,
+       1.22525,0.177075,0.899195,      1.256003,0.2136,0.921764,       1.10192,0.2136,1.10192,
+       1.10192,0.2136,1.10192, 1.07494,0.177075,1.07494,       1.22525,0.177075,0.899195,
+       1.347218,0.177075,0.700921,     1.381032,0.2136,0.718514,       1.256003,0.2136,0.921764,
+       1.256003,0.2136,0.921764,       1.22525,0.177075,0.899195,      1.347218,0.177075,0.700921,
+       1.437937,0.177075,0.483027,     1.474028,0.2136,0.49515,        1.381032,0.2136,0.718514,
+       1.381032,0.2136,0.718514,       1.347218,0.177075,0.700921,     1.437937,0.177075,0.483027,
+       1.4945,0.177075,0.248417,       1.53201,0.2136,0.254652,        1.474028,0.2136,0.49515,
+       1.474028,0.2136,0.49515,        1.437937,0.177075,0.483027,     1.4945,0.177075,0.248417,
+       1.514,0.177075,0,       1.552,0.2136,0, 1.53201,0.2136,0.254652,
+       1.53201,0.2136,0.254652,        1.4945,0.177075,0.248417,       1.514,0.177075,0,
+       0.24612,0.15,1.48068,   0.248417,0.177075,1.4945,       0,0.177075,1.514,
+       0,0.177075,1.514,       0,0.15,1.5,     0.24612,0.15,1.48068,
+       0.47856,0.15,1.42464,   0.483027,0.177075,1.437937,     0.248417,0.177075,1.4945,
+       0.248417,0.177075,1.4945,       0.24612,0.15,1.48068,   0.47856,0.15,1.42464,
+       0.69444,0.15,1.33476,   0.700921,0.177075,1.347218,     0.483027,0.177075,1.437937,
+       0.483027,0.177075,1.437937,     0.47856,0.15,1.42464,   0.69444,0.15,1.33476,
+       0.89088,0.15,1.21392,   0.899195,0.177075,1.22525,      0.700921,0.177075,1.347218,
+       0.700921,0.177075,1.347218,     0.69444,0.15,1.33476,   0.89088,0.15,1.21392,
+       1.065,0.15,1.065,       1.07494,0.177075,1.07494,       0.899195,0.177075,1.22525,
+       0.899195,0.177075,1.22525,      0.89088,0.15,1.21392,   1.065,0.15,1.065,
+       1.21392,0.15,0.89088,   1.22525,0.177075,0.899195,      1.07494,0.177075,1.07494,
+       1.07494,0.177075,1.07494,       1.065,0.15,1.065,       1.21392,0.15,0.89088,
+       1.33476,0.15,0.69444,   1.347218,0.177075,0.700921,     1.22525,0.177075,0.899195,
+       1.22525,0.177075,0.899195,      1.21392,0.15,0.89088,   1.33476,0.15,0.69444,
+       1.42464,0.15,0.47856,   1.437937,0.177075,0.483027,     1.347218,0.177075,0.700921,
+       1.347218,0.177075,0.700921,     1.33476,0.15,0.69444,   1.42464,0.15,0.47856,
+       1.48068,0.15,0.24612,   1.4945,0.177075,0.248417,       1.437937,0.177075,0.483027,
+       1.437937,0.177075,0.483027,     1.42464,0.15,0.47856,   1.48068,0.15,0.24612,
+       1.5,0.15,0,     1.514,0.177075,0,       1.4945,0.177075,0.248417,
+       1.4945,0.177075,0.248417,       1.48068,0.15,0.24612,   1.5,0.15,0,
+       -1.800455,2.031069,-0.081,      -1.5972,2.0313,-0.081,  -1.6,2.025,0,
+       -1.6,2.025,0,   -1.8009,2.024775,0,     -1.800455,2.031069,-0.081,
+       -1.799246,2.048152,-0.144,      -1.5896,2.0484,-0.144,  -1.5972,2.0313,-0.081,
+       -1.5972,2.0313,-0.081,  -1.800455,2.031069,-0.081,      -1.799246,2.048152,-0.144,
+       -1.797466,2.073326,-0.189,      -1.5784,2.0736,-0.189,  -1.5896,2.0484,-0.144,
+       -1.5896,2.0484,-0.144,  -1.799246,2.048152,-0.144,      -1.797466,2.073326,-0.189,
+       -1.795303,2.103896,-0.216,      -1.5648,2.1042,-0.216,  -1.5784,2.0736,-0.189,
+       -1.5784,2.0736,-0.189,  -1.797466,2.073326,-0.189,      -1.795303,2.103896,-0.216,
+       -1.79295,2.137163,-0.225,       -1.55,2.1375,-0.225,    -1.5648,2.1042,-0.216,
+       -1.5648,2.1042,-0.216,  -1.795303,2.103896,-0.216,      -1.79295,2.137163,-0.225,
+       -1.790597,2.170429,-0.216,      -1.5352,2.1708,-0.216,  -1.55,2.1375,-0.225,
+       -1.55,2.1375,-0.225,    -1.79295,2.137163,-0.225,       -1.790597,2.170429,-0.216,
+       -1.788434,2.200999,-0.189,      -1.5216,2.2014,-0.189,  -1.5352,2.1708,-0.216,
+       -1.5352,2.1708,-0.216,  -1.790597,2.170429,-0.216,      -1.788434,2.200999,-0.189,
+       -1.786654,2.226173,-0.144,      -1.5104,2.2266,-0.144,  -1.5216,2.2014,-0.189,
+       -1.5216,2.2014,-0.189,  -1.788434,2.200999,-0.189,      -1.786654,2.226173,-0.144,
+       -1.785445,2.243256,-0.081,      -1.5028,2.2437,-0.081,  -1.5104,2.2266,-0.144,
+       -1.5104,2.2266,-0.144,  -1.786654,2.226173,-0.144,      -1.785445,2.243256,-0.081,
+       -1.785,2.24955,0,       -1.5,2.25,0,    -1.5028,2.2437,-0.081,
+       -1.5028,2.2437,-0.081,  -1.785445,2.243256,-0.081,      -1.785,2.24955,0,
+       -1.98479,2.02945,-0.081,        -1.800455,2.031069,-0.081,      -1.8009,2.024775,0,
+       -1.8009,2.024775,0,     -1.9832,2.0232,0,       -1.98479,2.02945,-0.081,
+       -1.989107,2.046413,-0.144,      -1.799246,2.048152,-0.144,      -1.800455,2.031069,-0.081,
+       -1.800455,2.031069,-0.081,      -1.98479,2.02945,-0.081,        -1.989107,2.046413,-0.144,
+       -1.995469,2.071411,-0.189,      -1.797466,2.073326,-0.189,      -1.799246,2.048152,-0.144,
+       -1.799246,2.048152,-0.144,      -1.989107,2.046413,-0.144,      -1.995469,2.071411,-0.189,
+       -2.003194,2.101766,-0.216,      -1.795303,2.103896,-0.216,      -1.797466,2.073326,-0.189,
+       -1.797466,2.073326,-0.189,      -1.995469,2.071411,-0.189,      -2.003194,2.101766,-0.216,
+       -2.0116,2.1348,-0.225,  -1.79295,2.137163,-0.225,       -1.795303,2.103896,-0.216,
+       -1.795303,2.103896,-0.216,      -2.003194,2.101766,-0.216,      -2.0116,2.1348,-0.225,
+       -2.020006,2.167834,-0.216,      -1.790597,2.170429,-0.216,      -1.79295,2.137163,-0.225,
+       -1.79295,2.137163,-0.225,       -2.0116,2.1348,-0.225,  -2.020006,2.167834,-0.216,
+       -2.027731,2.198189,-0.189,      -1.788434,2.200999,-0.189,      -1.790597,2.170429,-0.216,
+       -1.790597,2.170429,-0.216,      -2.020006,2.167834,-0.216,      -2.027731,2.198189,-0.189,
+       -2.034093,2.223187,-0.144,      -1.786654,2.226173,-0.144,      -1.788434,2.200999,-0.189,
+       -1.788434,2.200999,-0.189,      -2.027731,2.198189,-0.189,      -2.034093,2.223187,-0.144,
+       -2.03841,2.24015,-0.081,        -1.785445,2.243256,-0.081,      -1.786654,2.226173,-0.144,
+       -1.786654,2.226173,-0.144,      -2.034093,2.223187,-0.144,      -2.03841,2.24015,-0.081,
+       -2.04,2.2464,0, -1.785,2.24955,0,       -1.785445,2.243256,-0.081,
+       -1.785445,2.243256,-0.081,      -2.03841,2.24015,-0.081,        -2.04,2.2464,0,
+       -2.149624,2.025055,-0.081,      -1.98479,2.02945,-0.081,        -1.9832,2.0232,0,
+       -1.9832,2.0232,0,       -2.1463,2.018925,0,     -2.149624,2.025055,-0.081,
+       -2.158645,2.041693,-0.144,      -1.989107,2.046413,-0.144,      -1.98479,2.02945,-0.081,
+       -1.98479,2.02945,-0.081,        -2.149624,2.025055,-0.081,      -2.158645,2.041693,-0.144,
+       -2.171939,2.066213,-0.189,      -1.995469,2.071411,-0.189,      -1.989107,2.046413,-0.144,
+       -1.989107,2.046413,-0.144,      -2.158645,2.041693,-0.144,      -2.171939,2.066213,-0.189,
+       -2.188082,2.095987,-0.216,      -2.003194,2.101766,-0.216,      -1.995469,2.071411,-0.189,
+       -1.995469,2.071411,-0.189,      -2.171939,2.066213,-0.189,      -2.188082,2.095987,-0.216,
+       -2.20565,2.128388,-0.225,       -2.0116,2.1348,-0.225,  -2.003194,2.101766,-0.216,
+       -2.003194,2.101766,-0.216,      -2.188082,2.095987,-0.216,      -2.20565,2.128388,-0.225,
+       -2.223218,2.160788,-0.216,      -2.020006,2.167834,-0.216,      -2.0116,2.1348,-0.225,
+       -2.0116,2.1348,-0.225,  -2.20565,2.128388,-0.225,       -2.223218,2.160788,-0.216,
+       -2.239361,2.190562,-0.189,      -2.027731,2.198189,-0.189,      -2.020006,2.167834,-0.216,
+       -2.020006,2.167834,-0.216,      -2.223218,2.160788,-0.216,      -2.239361,2.190562,-0.189,
+       -2.252655,2.215082,-0.144,      -2.034093,2.223187,-0.144,      -2.027731,2.198189,-0.189,
+       -2.027731,2.198189,-0.189,      -2.239361,2.190562,-0.189,      -2.252655,2.215082,-0.144,
+       -2.261676,2.23172,-0.081,       -2.03841,2.24015,-0.081,        -2.034093,2.223187,-0.144,
+       -2.034093,2.223187,-0.144,      -2.252655,2.215082,-0.144,      -2.261676,2.23172,-0.081,
+       -2.265,2.23785,0,       -2.04,2.2464,0, -2.03841,2.24015,-0.081,
+       -2.03841,2.24015,-0.081,        -2.261676,2.23172,-0.081,       -2.265,2.23785,0,
+       -2.294371,2.016497,-0.081,      -2.149624,2.025055,-0.081,      -2.1463,2.018925,0,
+       -2.1463,2.018925,0,     -2.2896,2.0106,0,       -2.294371,2.016497,-0.081,
+       -2.307322,2.032502,-0.144,      -2.158645,2.041693,-0.144,      -2.149624,2.025055,-0.081,
+       -2.149624,2.025055,-0.081,      -2.294371,2.016497,-0.081,      -2.307322,2.032502,-0.144,
+       -2.326406,2.05609,-0.189,       -2.171939,2.066213,-0.189,      -2.158645,2.041693,-0.144,
+       -2.158645,2.041693,-0.144,      -2.307322,2.032502,-0.144,      -2.326406,2.05609,-0.189,
+       -2.349581,2.084731,-0.216,      -2.188082,2.095987,-0.216,      -2.171939,2.066213,-0.189,
+       -2.171939,2.066213,-0.189,      -2.326406,2.05609,-0.189,       -2.349581,2.084731,-0.216,
+       -2.3748,2.1159,-0.225,  -2.20565,2.128388,-0.225,       -2.188082,2.095987,-0.216,
+       -2.188082,2.095987,-0.216,      -2.349581,2.084731,-0.216,      -2.3748,2.1159,-0.225,
+       -2.400019,2.147069,-0.216,      -2.223218,2.160788,-0.216,      -2.20565,2.128388,-0.225,
+       -2.20565,2.128388,-0.225,       -2.3748,2.1159,-0.225,  -2.400019,2.147069,-0.216,
+       -2.423194,2.17571,-0.189,       -2.239361,2.190562,-0.189,      -2.223218,2.160788,-0.216,
+       -2.223218,2.160788,-0.216,      -2.400019,2.147069,-0.216,      -2.423194,2.17571,-0.189,
+       -2.442278,2.199298,-0.144,      -2.252655,2.215082,-0.144,      -2.239361,2.190562,-0.189,
+       -2.239361,2.190562,-0.189,      -2.423194,2.17571,-0.189,       -2.442278,2.199298,-0.144,
+       -2.455229,2.215303,-0.081,      -2.261676,2.23172,-0.081,       -2.252655,2.215082,-0.144,
+       -2.252655,2.215082,-0.144,      -2.442278,2.199298,-0.144,      -2.455229,2.215303,-0.081,
+       -2.46,2.2212,0, -2.265,2.23785,0,       -2.261676,2.23172,-0.081,
+       -2.261676,2.23172,-0.081,       -2.455229,2.215303,-0.081,      -2.46,2.2212,0,
+       -2.41845,2.002387,-0.081,       -2.294371,2.016497,-0.081,      -2.2896,2.0106,0,
+       -2.2896,2.0106,0,       -2.4125,1.996875,0,     -2.41845,2.002387,-0.081,
+       -2.4346,2.01735,-0.144, -2.307322,2.032502,-0.144,      -2.294371,2.016497,-0.081,
+       -2.294371,2.016497,-0.081,      -2.41845,2.002387,-0.081,       -2.4346,2.01735,-0.144,
+       -2.4584,2.0394,-0.189,  -2.326406,2.05609,-0.189,       -2.307322,2.032502,-0.144,
+       -2.307322,2.032502,-0.144,      -2.4346,2.01735,-0.144, -2.4584,2.0394,-0.189,
+       -2.4873,2.066175,-0.216,        -2.349581,2.084731,-0.216,      -2.326406,2.05609,-0.189,
+       -2.326406,2.05609,-0.189,       -2.4584,2.0394,-0.189,  -2.4873,2.066175,-0.216,
+       -2.51875,2.095312,-0.225,       -2.3748,2.1159,-0.225,  -2.349581,2.084731,-0.216,
+       -2.349581,2.084731,-0.216,      -2.4873,2.066175,-0.216,        -2.51875,2.095312,-0.225,
+       -2.5502,2.12445,-0.216, -2.400019,2.147069,-0.216,      -2.3748,2.1159,-0.225,
+       -2.3748,2.1159,-0.225,  -2.51875,2.095312,-0.225,       -2.5502,2.12445,-0.216,
+       -2.5791,2.151225,-0.189,        -2.423194,2.17571,-0.189,       -2.400019,2.147069,-0.216,
+       -2.400019,2.147069,-0.216,      -2.5502,2.12445,-0.216, -2.5791,2.151225,-0.189,
+       -2.6029,2.173275,-0.144,        -2.442278,2.199298,-0.144,      -2.423194,2.17571,-0.189,
+       -2.423194,2.17571,-0.189,       -2.5791,2.151225,-0.189,        -2.6029,2.173275,-0.144,
+       -2.61905,2.188238,-0.081,       -2.455229,2.215303,-0.081,      -2.442278,2.199298,-0.144,
+       -2.442278,2.199298,-0.144,      -2.6029,2.173275,-0.144,        -2.61905,2.188238,-0.081,
+       -2.625,2.19375,0,       -2.46,2.2212,0, -2.455229,2.215303,-0.081,
+       -2.455229,2.215303,-0.081,      -2.61905,2.188238,-0.081,       -2.625,2.19375,0,
+       -2.521277,1.981339,-0.081,      -2.41845,2.002387,-0.081,       -2.4125,1.996875,0,
+       -2.4125,1.996875,0,     -2.5144,1.9764,0,       -2.521277,1.981339,-0.081,
+       -2.539942,1.994746,-0.144,      -2.4346,2.01735,-0.144, -2.41845,2.002387,-0.081,
+       -2.41845,2.002387,-0.081,       -2.521277,1.981339,-0.081,      -2.539942,1.994746,-0.144,
+       -2.56745,2.014502,-0.189,       -2.4584,2.0394,-0.189,  -2.4346,2.01735,-0.144,
+       -2.4346,2.01735,-0.144, -2.539942,1.994746,-0.144,      -2.56745,2.014502,-0.189,
+       -2.600851,2.038493,-0.216,      -2.4873,2.066175,-0.216,        -2.4584,2.0394,-0.189,
+       -2.4584,2.0394,-0.189,  -2.56745,2.014502,-0.189,       -2.600851,2.038493,-0.216,
+       -2.6372,2.0646,-0.225,  -2.51875,2.095312,-0.225,       -2.4873,2.066175,-0.216,
+       -2.4873,2.066175,-0.216,        -2.600851,2.038493,-0.216,      -2.6372,2.0646,-0.225,
+       -2.673549,2.090707,-0.216,      -2.5502,2.12445,-0.216, -2.51875,2.095312,-0.225,
+       -2.51875,2.095312,-0.225,       -2.6372,2.0646,-0.225,  -2.673549,2.090707,-0.216,
+       -2.70695,2.114698,-0.189,       -2.5791,2.151225,-0.189,        -2.5502,2.12445,-0.216,
+       -2.5502,2.12445,-0.216, -2.673549,2.090707,-0.216,      -2.70695,2.114698,-0.189,
+       -2.734458,2.134454,-0.144,      -2.6029,2.173275,-0.144,        -2.5791,2.151225,-0.189,
+       -2.5791,2.151225,-0.189,        -2.70695,2.114698,-0.189,       -2.734458,2.134454,-0.144,
+       -2.753123,2.147861,-0.081,      -2.61905,2.188238,-0.081,       -2.6029,2.173275,-0.144,
+       -2.6029,2.173275,-0.144,        -2.734458,2.134454,-0.144,      -2.753123,2.147861,-0.081,
+       -2.76,2.1528,0, -2.625,2.19375,0,       -2.61905,2.188238,-0.081,
+       -2.61905,2.188238,-0.081,       -2.753123,2.147861,-0.081,      -2.76,2.1528,0,
+       -2.602268,1.951964,-0.081,      -2.521277,1.981339,-0.081,      -2.5144,1.9764,0,
+       -2.5144,1.9764,0,       -2.5947,1.947825,0,     -2.602268,1.951964,-0.081,
+       -2.622811,1.963199,-0.144,      -2.539942,1.994746,-0.144,      -2.521277,1.981339,-0.081,
+       -2.521277,1.981339,-0.081,      -2.602268,1.951964,-0.081,      -2.622811,1.963199,-0.144,
+       -2.653085,1.979755,-0.189,      -2.56745,2.014502,-0.189,       -2.539942,1.994746,-0.144,
+       -2.539942,1.994746,-0.144,      -2.622811,1.963199,-0.144,      -2.653085,1.979755,-0.189,
+       -2.689846,1.999859,-0.216,      -2.600851,2.038493,-0.216,      -2.56745,2.014502,-0.189,
+       -2.56745,2.014502,-0.189,       -2.653085,1.979755,-0.189,      -2.689846,1.999859,-0.216,
+       -2.72985,2.021737,-0.225,       -2.6372,2.0646,-0.225,  -2.600851,2.038493,-0.216,
+       -2.600851,2.038493,-0.216,      -2.689846,1.999859,-0.216,      -2.72985,2.021737,-0.225,
+       -2.769854,2.043616,-0.216,      -2.673549,2.090707,-0.216,      -2.6372,2.0646,-0.225,
+       -2.6372,2.0646,-0.225,  -2.72985,2.021737,-0.225,       -2.769854,2.043616,-0.216,
+       -2.806615,2.06372,-0.189,       -2.70695,2.114698,-0.189,       -2.673549,2.090707,-0.216,
+       -2.673549,2.090707,-0.216,      -2.769854,2.043616,-0.216,      -2.806615,2.06372,-0.189,
+       -2.836889,2.080276,-0.144,      -2.734458,2.134454,-0.144,      -2.70695,2.114698,-0.189,
+       -2.70695,2.114698,-0.189,       -2.806615,2.06372,-0.189,       -2.836889,2.080276,-0.144,
+       -2.857432,2.091511,-0.081,      -2.753123,2.147861,-0.081,      -2.734458,2.134454,-0.144,
+       -2.734458,2.134454,-0.144,      -2.836889,2.080276,-0.144,      -2.857432,2.091511,-0.081,
+       -2.865,2.09565,0,       -2.76,2.1528,0, -2.753123,2.147861,-0.081,
+       -2.753123,2.147861,-0.081,      -2.857432,2.091511,-0.081,      -2.865,2.09565,0,
+       -2.660842,1.912874,-0.081,      -2.602268,1.951964,-0.081,      -2.5947,1.947825,0,
+       -2.5947,1.947825,0,     -2.6528,1.9098,0,       -2.660842,1.912874,-0.081,
+       -2.682669,1.921219,-0.144,      -2.622811,1.963199,-0.144,      -2.602268,1.951964,-0.081,
+       -2.602268,1.951964,-0.081,      -2.660842,1.912874,-0.081,      -2.682669,1.921219,-0.144,
+       -2.714835,1.933517,-0.189,      -2.653085,1.979755,-0.189,      -2.622811,1.963199,-0.144,
+       -2.622811,1.963199,-0.144,      -2.682669,1.921219,-0.144,      -2.714835,1.933517,-0.189,
+       -2.753894,1.94845,-0.216,       -2.689846,1.999859,-0.216,      -2.653085,1.979755,-0.189,
+       -2.653085,1.979755,-0.189,      -2.714835,1.933517,-0.189,      -2.753894,1.94845,-0.216,
+       -2.7964,1.9647,-0.225,  -2.72985,2.021737,-0.225,       -2.689846,1.999859,-0.216,
+       -2.689846,1.999859,-0.216,      -2.753894,1.94845,-0.216,       -2.7964,1.9647,-0.225,
+       -2.838906,1.98095,-0.216,       -2.769854,2.043616,-0.216,      -2.72985,2.021737,-0.225,
+       -2.72985,2.021737,-0.225,       -2.7964,1.9647,-0.225,  -2.838906,1.98095,-0.216,
+       -2.877965,1.995883,-0.189,      -2.806615,2.06372,-0.189,       -2.769854,2.043616,-0.216,
+       -2.769854,2.043616,-0.216,      -2.838906,1.98095,-0.216,       -2.877965,1.995883,-0.189,
+       -2.910131,2.008181,-0.144,      -2.836889,2.080276,-0.144,      -2.806615,2.06372,-0.189,
+       -2.806615,2.06372,-0.189,       -2.877965,1.995883,-0.189,      -2.910131,2.008181,-0.144,
+       -2.931958,2.016526,-0.081,      -2.857432,2.091511,-0.081,      -2.836889,2.080276,-0.144,
+       -2.836889,2.080276,-0.144,      -2.910131,2.008181,-0.144,      -2.931958,2.016526,-0.081,
+       -2.94,2.0196,0, -2.865,2.09565,0,       -2.857432,2.091511,-0.081,
+       -2.857432,2.091511,-0.081,      -2.931958,2.016526,-0.081,      -2.94,2.0196,0,
+       -2.696413,1.862682,-0.081,      -2.660842,1.912874,-0.081,      -2.6528,1.9098,0,
+       -2.6528,1.9098,0,       -2.6881,1.860975,0,     -2.696413,1.862682,-0.081,
+       -2.718978,1.867316,-0.144,      -2.682669,1.921219,-0.144,      -2.660842,1.912874,-0.081,
+       -2.660842,1.912874,-0.081,      -2.696413,1.862682,-0.081,      -2.718978,1.867316,-0.144,
+       -2.75223,1.874146,-0.189,       -2.714835,1.933517,-0.189,      -2.682669,1.921219,-0.144,
+       -2.682669,1.921219,-0.144,      -2.718978,1.867316,-0.144,      -2.75223,1.874146,-0.189,
+       -2.792609,1.882438,-0.216,      -2.753894,1.94845,-0.216,       -2.714835,1.933517,-0.189,
+       -2.714835,1.933517,-0.189,      -2.75223,1.874146,-0.189,       -2.792609,1.882438,-0.216,
+       -2.83655,1.891463,-0.225,       -2.7964,1.9647,-0.225,  -2.753894,1.94845,-0.216,
+       -2.753894,1.94845,-0.216,       -2.792609,1.882438,-0.216,      -2.83655,1.891463,-0.225,
+       -2.880491,1.900487,-0.216,      -2.838906,1.98095,-0.216,       -2.7964,1.9647,-0.225,
+       -2.7964,1.9647,-0.225,  -2.83655,1.891463,-0.225,       -2.880491,1.900487,-0.216,
+       -2.92087,1.908779,-0.189,       -2.877965,1.995883,-0.189,      -2.838906,1.98095,-0.216,
+       -2.838906,1.98095,-0.216,       -2.880491,1.900487,-0.216,      -2.92087,1.908779,-0.189,
+       -2.954122,1.915609,-0.144,      -2.910131,2.008181,-0.144,      -2.877965,1.995883,-0.189,
+       -2.877965,1.995883,-0.189,      -2.92087,1.908779,-0.189,       -2.954122,1.915609,-0.144,
+       -2.976687,1.920243,-0.081,      -2.931958,2.016526,-0.081,      -2.910131,2.008181,-0.144,
+       -2.910131,2.008181,-0.144,      -2.954122,1.915609,-0.144,      -2.976687,1.920243,-0.081,
+       -2.985,1.92195,0,       -2.94,2.0196,0, -2.931958,2.016526,-0.081,
+       -2.931958,2.016526,-0.081,      -2.976687,1.920243,-0.081,      -2.985,1.92195,0,
+       -2.7084,1.8,-0.081,     -2.696413,1.862682,-0.081,      -2.6881,1.860975,0,
+       -2.6881,1.860975,0,     -2.7,1.8,0,     -2.7084,1.8,-0.081,
+       -2.7312,1.8,-0.144,     -2.718978,1.867316,-0.144,      -2.696413,1.862682,-0.081,
+       -2.696413,1.862682,-0.081,      -2.7084,1.8,-0.081,     -2.7312,1.8,-0.144,
+       -2.7648,1.8,-0.189,     -2.75223,1.874146,-0.189,       -2.718978,1.867316,-0.144,
+       -2.718978,1.867316,-0.144,      -2.7312,1.8,-0.144,     -2.7648,1.8,-0.189,
+       -2.8056,1.8,-0.216,     -2.792609,1.882438,-0.216,      -2.75223,1.874146,-0.189,
+       -2.75223,1.874146,-0.189,       -2.7648,1.8,-0.189,     -2.8056,1.8,-0.216,
+       -2.85,1.8,-0.225,       -2.83655,1.891463,-0.225,       -2.792609,1.882438,-0.216,
+       -2.792609,1.882438,-0.216,      -2.8056,1.8,-0.216,     -2.85,1.8,-0.225,
+       -2.8944,1.8,-0.216,     -2.880491,1.900487,-0.216,      -2.83655,1.891463,-0.225,
+       -2.83655,1.891463,-0.225,       -2.85,1.8,-0.225,       -2.8944,1.8,-0.216,
+       -2.9352,1.8,-0.189,     -2.92087,1.908779,-0.189,       -2.880491,1.900487,-0.216,
+       -2.880491,1.900487,-0.216,      -2.8944,1.8,-0.216,     -2.9352,1.8,-0.189,
+       -2.9688,1.8,-0.144,     -2.954122,1.915609,-0.144,      -2.92087,1.908779,-0.189,
+       -2.92087,1.908779,-0.189,       -2.9352,1.8,-0.189,     -2.9688,1.8,-0.144,
+       -2.9916,1.8,-0.081,     -2.976687,1.920243,-0.081,      -2.954122,1.915609,-0.144,
+       -2.954122,1.915609,-0.144,      -2.9688,1.8,-0.144,     -2.9916,1.8,-0.081,
+       -3,1.8,0,       -2.985,1.92195,0,       -2.976687,1.920243,-0.081,
+       -2.976687,1.920243,-0.081,      -2.9916,1.8,-0.081,     -3,1.8,0,
+       -1.785445,2.243256,0.081,       -1.5028,2.2437,0.081,   -1.5,2.25,0,
+       -1.5,2.25,0,    -1.785,2.24955,0,       -1.785445,2.243256,0.081,
+       -1.786654,2.226173,0.144,       -1.5104,2.2266,0.144,   -1.5028,2.2437,0.081,
+       -1.5028,2.2437,0.081,   -1.785445,2.243256,0.081,       -1.786654,2.226173,0.144,
+       -1.788434,2.200999,0.189,       -1.5216,2.2014,0.189,   -1.5104,2.2266,0.144,
+       -1.5104,2.2266,0.144,   -1.786654,2.226173,0.144,       -1.788434,2.200999,0.189,
+       -1.790597,2.170429,0.216,       -1.5352,2.1708,0.216,   -1.5216,2.2014,0.189,
+       -1.5216,2.2014,0.189,   -1.788434,2.200999,0.189,       -1.790597,2.170429,0.216,
+       -1.79295,2.137163,0.225,        -1.55,2.1375,0.225,     -1.5352,2.1708,0.216,
+       -1.5352,2.1708,0.216,   -1.790597,2.170429,0.216,       -1.79295,2.137163,0.225,
+       -1.795303,2.103896,0.216,       -1.5648,2.1042,0.216,   -1.55,2.1375,0.225,
+       -1.55,2.1375,0.225,     -1.79295,2.137163,0.225,        -1.795303,2.103896,0.216,
+       -1.797466,2.073326,0.189,       -1.5784,2.0736,0.189,   -1.5648,2.1042,0.216,
+       -1.5648,2.1042,0.216,   -1.795303,2.103896,0.216,       -1.797466,2.073326,0.189,
+       -1.799246,2.048152,0.144,       -1.5896,2.0484,0.144,   -1.5784,2.0736,0.189,
+       -1.5784,2.0736,0.189,   -1.797466,2.073326,0.189,       -1.799246,2.048152,0.144,
+       -1.800455,2.031069,0.081,       -1.5972,2.0313,0.081,   -1.5896,2.0484,0.144,
+       -1.5896,2.0484,0.144,   -1.799246,2.048152,0.144,       -1.800455,2.031069,0.081,
+       -1.8009,2.024775,0,     -1.6,2.025,0,   -1.5972,2.0313,0.081,
+       -1.5972,2.0313,0.081,   -1.800455,2.031069,0.081,       -1.8009,2.024775,0,
+       -2.03841,2.24015,0.081, -1.785445,2.243256,0.081,       -1.785,2.24955,0,
+       -1.785,2.24955,0,       -2.04,2.2464,0, -2.03841,2.24015,0.081,
+       -2.034093,2.223187,0.144,       -1.786654,2.226173,0.144,       -1.785445,2.243256,0.081,
+       -1.785445,2.243256,0.081,       -2.03841,2.24015,0.081, -2.034093,2.223187,0.144,
+       -2.027731,2.198189,0.189,       -1.788434,2.200999,0.189,       -1.786654,2.226173,0.144,
+       -1.786654,2.226173,0.144,       -2.034093,2.223187,0.144,       -2.027731,2.198189,0.189,
+       -2.020006,2.167834,0.216,       -1.790597,2.170429,0.216,       -1.788434,2.200999,0.189,
+       -1.788434,2.200999,0.189,       -2.027731,2.198189,0.189,       -2.020006,2.167834,0.216,
+       -2.0116,2.1348,0.225,   -1.79295,2.137163,0.225,        -1.790597,2.170429,0.216,
+       -1.790597,2.170429,0.216,       -2.020006,2.167834,0.216,       -2.0116,2.1348,0.225,
+       -2.003194,2.101766,0.216,       -1.795303,2.103896,0.216,       -1.79295,2.137163,0.225,
+       -1.79295,2.137163,0.225,        -2.0116,2.1348,0.225,   -2.003194,2.101766,0.216,
+       -1.995469,2.071411,0.189,       -1.797466,2.073326,0.189,       -1.795303,2.103896,0.216,
+       -1.795303,2.103896,0.216,       -2.003194,2.101766,0.216,       -1.995469,2.071411,0.189,
+       -1.989107,2.046413,0.144,       -1.799246,2.048152,0.144,       -1.797466,2.073326,0.189,
+       -1.797466,2.073326,0.189,       -1.995469,2.071411,0.189,       -1.989107,2.046413,0.144,
+       -1.98479,2.02945,0.081, -1.800455,2.031069,0.081,       -1.799246,2.048152,0.144,
+       -1.799246,2.048152,0.144,       -1.989107,2.046413,0.144,       -1.98479,2.02945,0.081,
+       -1.9832,2.0232,0,       -1.8009,2.024775,0,     -1.800455,2.031069,0.081,
+       -1.800455,2.031069,0.081,       -1.98479,2.02945,0.081, -1.9832,2.0232,0,
+       -2.261676,2.23172,0.081,        -2.03841,2.24015,0.081, -2.04,2.2464,0,
+       -2.04,2.2464,0, -2.265,2.23785,0,       -2.261676,2.23172,0.081,
+       -2.252655,2.215082,0.144,       -2.034093,2.223187,0.144,       -2.03841,2.24015,0.081,
+       -2.03841,2.24015,0.081, -2.261676,2.23172,0.081,        -2.252655,2.215082,0.144,
+       -2.239361,2.190562,0.189,       -2.027731,2.198189,0.189,       -2.034093,2.223187,0.144,
+       -2.034093,2.223187,0.144,       -2.252655,2.215082,0.144,       -2.239361,2.190562,0.189,
+       -2.223218,2.160788,0.216,       -2.020006,2.167834,0.216,       -2.027731,2.198189,0.189,
+       -2.027731,2.198189,0.189,       -2.239361,2.190562,0.189,       -2.223218,2.160788,0.216,
+       -2.20565,2.128387,0.225,        -2.0116,2.1348,0.225,   -2.020006,2.167834,0.216,
+       -2.020006,2.167834,0.216,       -2.223218,2.160788,0.216,       -2.20565,2.128387,0.225,
+       -2.188082,2.095987,0.216,       -2.003194,2.101766,0.216,       -2.0116,2.1348,0.225,
+       -2.0116,2.1348,0.225,   -2.20565,2.128387,0.225,        -2.188082,2.095987,0.216,
+       -2.171939,2.066213,0.189,       -1.995469,2.071411,0.189,       -2.003194,2.101766,0.216,
+       -2.003194,2.101766,0.216,       -2.188082,2.095987,0.216,       -2.171939,2.066213,0.189,
+       -2.158645,2.041693,0.144,       -1.989107,2.046413,0.144,       -1.995469,2.071411,0.189,
+       -1.995469,2.071411,0.189,       -2.171939,2.066213,0.189,       -2.158645,2.041693,0.144,
+       -2.149624,2.025055,0.081,       -1.98479,2.02945,0.081, -1.989107,2.046413,0.144,
+       -1.989107,2.046413,0.144,       -2.158645,2.041693,0.144,       -2.149624,2.025055,0.081,
+       -2.1463,2.018925,0,     -1.9832,2.0232,0,       -1.98479,2.02945,0.081,
+       -1.98479,2.02945,0.081, -2.149624,2.025055,0.081,       -2.1463,2.018925,0,
+       -2.455229,2.215303,0.081,       -2.261676,2.23172,0.081,        -2.265,2.23785,0,
+       -2.265,2.23785,0,       -2.46,2.2212,0, -2.455229,2.215303,0.081,
+       -2.442278,2.199298,0.144,       -2.252655,2.215082,0.144,       -2.261676,2.23172,0.081,
+       -2.261676,2.23172,0.081,        -2.455229,2.215303,0.081,       -2.442278,2.199298,0.144,
+       -2.423194,2.17571,0.189,        -2.239361,2.190562,0.189,       -2.252655,2.215082,0.144,
+       -2.252655,2.215082,0.144,       -2.442278,2.199298,0.144,       -2.423194,2.17571,0.189,
+       -2.400019,2.147069,0.216,       -2.223218,2.160788,0.216,       -2.239361,2.190562,0.189,
+       -2.239361,2.190562,0.189,       -2.423194,2.17571,0.189,        -2.400019,2.147069,0.216,
+       -2.3748,2.1159,0.225,   -2.20565,2.128387,0.225,        -2.223218,2.160788,0.216,
+       -2.223218,2.160788,0.216,       -2.400019,2.147069,0.216,       -2.3748,2.1159,0.225,
+       -2.349581,2.084731,0.216,       -2.188082,2.095987,0.216,       -2.20565,2.128387,0.225,
+       -2.20565,2.128387,0.225,        -2.3748,2.1159,0.225,   -2.349581,2.084731,0.216,
+       -2.326406,2.05609,0.189,        -2.171939,2.066213,0.189,       -2.188082,2.095987,0.216,
+       -2.188082,2.095987,0.216,       -2.349581,2.084731,0.216,       -2.326406,2.05609,0.189,
+       -2.307322,2.032502,0.144,       -2.158645,2.041693,0.144,       -2.171939,2.066213,0.189,
+       -2.171939,2.066213,0.189,       -2.326406,2.05609,0.189,        -2.307322,2.032502,0.144,
+       -2.294371,2.016497,0.081,       -2.149624,2.025055,0.081,       -2.158645,2.041693,0.144,
+       -2.158645,2.041693,0.144,       -2.307322,2.032502,0.144,       -2.294371,2.016497,0.081,
+       -2.2896,2.0106,0,       -2.1463,2.018925,0,     -2.149624,2.025055,0.081,
+       -2.149624,2.025055,0.081,       -2.294371,2.016497,0.081,       -2.2896,2.0106,0,
+       -2.61905,2.188238,0.081,        -2.455229,2.215303,0.081,       -2.46,2.2212,0,
+       -2.46,2.2212,0, -2.625,2.19375,0,       -2.61905,2.188238,0.081,
+       -2.6029,2.173275,0.144, -2.442278,2.199298,0.144,       -2.455229,2.215303,0.081,
+       -2.455229,2.215303,0.081,       -2.61905,2.188238,0.081,        -2.6029,2.173275,0.144,
+       -2.5791,2.151225,0.189, -2.423194,2.17571,0.189,        -2.442278,2.199298,0.144,
+       -2.442278,2.199298,0.144,       -2.6029,2.173275,0.144, -2.5791,2.151225,0.189,
+       -2.5502,2.12445,0.216,  -2.400019,2.147069,0.216,       -2.423194,2.17571,0.189,
+       -2.423194,2.17571,0.189,        -2.5791,2.151225,0.189, -2.5502,2.12445,0.216,
+       -2.51875,2.095312,0.225,        -2.3748,2.1159,0.225,   -2.400019,2.147069,0.216,
+       -2.400019,2.147069,0.216,       -2.5502,2.12445,0.216,  -2.51875,2.095312,0.225,
+       -2.4873,2.066175,0.216, -2.349581,2.084731,0.216,       -2.3748,2.1159,0.225,
+       -2.3748,2.1159,0.225,   -2.51875,2.095312,0.225,        -2.4873,2.066175,0.216,
+       -2.4584,2.0394,0.189,   -2.326406,2.05609,0.189,        -2.349581,2.084731,0.216,
+       -2.349581,2.084731,0.216,       -2.4873,2.066175,0.216, -2.4584,2.0394,0.189,
+       -2.4346,2.01735,0.144,  -2.307322,2.032502,0.144,       -2.326406,2.05609,0.189,
+       -2.326406,2.05609,0.189,        -2.4584,2.0394,0.189,   -2.4346,2.01735,0.144,
+       -2.41845,2.002388,0.081,        -2.294371,2.016497,0.081,       -2.307322,2.032502,0.144,
+       -2.307322,2.032502,0.144,       -2.4346,2.01735,0.144,  -2.41845,2.002388,0.081,
+       -2.4125,1.996875,0,     -2.2896,2.0106,0,       -2.294371,2.016497,0.081,
+       -2.294371,2.016497,0.081,       -2.41845,2.002388,0.081,        -2.4125,1.996875,0,
+       -2.753123,2.147861,0.081,       -2.61905,2.188238,0.081,        -2.625,2.19375,0,
+       -2.625,2.19375,0,       -2.76,2.1528,0, -2.753123,2.147861,0.081,
+       -2.734458,2.134454,0.144,       -2.6029,2.173275,0.144, -2.61905,2.188238,0.081,
+       -2.61905,2.188238,0.081,        -2.753123,2.147861,0.081,       -2.734458,2.134454,0.144,
+       -2.70695,2.114698,0.189,        -2.5791,2.151225,0.189, -2.6029,2.173275,0.144,
+       -2.6029,2.173275,0.144, -2.734458,2.134454,0.144,       -2.70695,2.114698,0.189,
+       -2.673549,2.090707,0.216,       -2.5502,2.12445,0.216,  -2.5791,2.151225,0.189,
+       -2.5791,2.151225,0.189, -2.70695,2.114698,0.189,        -2.673549,2.090707,0.216,
+       -2.6372,2.0646,0.225,   -2.51875,2.095312,0.225,        -2.5502,2.12445,0.216,
+       -2.5502,2.12445,0.216,  -2.673549,2.090707,0.216,       -2.6372,2.0646,0.225,
+       -2.600851,2.038493,0.216,       -2.4873,2.066175,0.216, -2.51875,2.095312,0.225,
+       -2.51875,2.095312,0.225,        -2.6372,2.0646,0.225,   -2.600851,2.038493,0.216,
+       -2.56745,2.014502,0.189,        -2.4584,2.0394,0.189,   -2.4873,2.066175,0.216,
+       -2.4873,2.066175,0.216, -2.600851,2.038493,0.216,       -2.56745,2.014502,0.189,
+       -2.539942,1.994746,0.144,       -2.4346,2.01735,0.144,  -2.4584,2.0394,0.189,
+       -2.4584,2.0394,0.189,   -2.56745,2.014502,0.189,        -2.539942,1.994746,0.144,
+       -2.521277,1.981339,0.081,       -2.41845,2.002388,0.081,        -2.4346,2.01735,0.144,
+       -2.4346,2.01735,0.144,  -2.539942,1.994746,0.144,       -2.521277,1.981339,0.081,
+       -2.5144,1.9764,0,       -2.4125,1.996875,0,     -2.41845,2.002388,0.081,
+       -2.41845,2.002388,0.081,        -2.521277,1.981339,0.081,       -2.5144,1.9764,0,
+       -2.857432,2.091511,0.081,       -2.753123,2.147861,0.081,       -2.76,2.1528,0,
+       -2.76,2.1528,0, -2.865,2.09565,0,       -2.857432,2.091511,0.081,
+       -2.836889,2.080276,0.144,       -2.734458,2.134454,0.144,       -2.753123,2.147861,0.081,
+       -2.753123,2.147861,0.081,       -2.857432,2.091511,0.081,       -2.836889,2.080276,0.144,
+       -2.806615,2.06372,0.189,        -2.70695,2.114698,0.189,        -2.734458,2.134454,0.144,
+       -2.734458,2.134454,0.144,       -2.836889,2.080276,0.144,       -2.806615,2.06372,0.189,
+       -2.769854,2.043616,0.216,       -2.673549,2.090707,0.216,       -2.70695,2.114698,0.189,
+       -2.70695,2.114698,0.189,        -2.806615,2.06372,0.189,        -2.769854,2.043616,0.216,
+       -2.72985,2.021737,0.225,        -2.6372,2.0646,0.225,   -2.673549,2.090707,0.216,
+       -2.673549,2.090707,0.216,       -2.769854,2.043616,0.216,       -2.72985,2.021737,0.225,
+       -2.689846,1.999859,0.216,       -2.600851,2.038493,0.216,       -2.6372,2.0646,0.225,
+       -2.6372,2.0646,0.225,   -2.72985,2.021737,0.225,        -2.689846,1.999859,0.216,
+       -2.653085,1.979755,0.189,       -2.56745,2.014502,0.189,        -2.600851,2.038493,0.216,
+       -2.600851,2.038493,0.216,       -2.689846,1.999859,0.216,       -2.653085,1.979755,0.189,
+       -2.622811,1.963199,0.144,       -2.539942,1.994746,0.144,       -2.56745,2.014502,0.189,
+       -2.56745,2.014502,0.189,        -2.653085,1.979755,0.189,       -2.622811,1.963199,0.144,
+       -2.602268,1.951964,0.081,       -2.521277,1.981339,0.081,       -2.539942,1.994746,0.144,
+       -2.539942,1.994746,0.144,       -2.622811,1.963199,0.144,       -2.602268,1.951964,0.081,
+       -2.5947,1.947825,0,     -2.5144,1.9764,0,       -2.521277,1.981339,0.081,
+       -2.521277,1.981339,0.081,       -2.602268,1.951964,0.081,       -2.5947,1.947825,0,
+       -2.931958,2.016526,0.081,       -2.857432,2.091511,0.081,       -2.865,2.09565,0,
+       -2.865,2.09565,0,       -2.94,2.0196,0, -2.931958,2.016526,0.081,
+       -2.910131,2.008181,0.144,       -2.836889,2.080276,0.144,       -2.857432,2.091511,0.081,
+       -2.857432,2.091511,0.081,       -2.931958,2.016526,0.081,       -2.910131,2.008181,0.144,
+       -2.877965,1.995883,0.189,       -2.806615,2.06372,0.189,        -2.836889,2.080276,0.144,
+       -2.836889,2.080276,0.144,       -2.910131,2.008181,0.144,       -2.877965,1.995883,0.189,
+       -2.838906,1.98095,0.216,        -2.769854,2.043616,0.216,       -2.806615,2.06372,0.189,
+       -2.806615,2.06372,0.189,        -2.877965,1.995883,0.189,       -2.838906,1.98095,0.216,
+       -2.7964,1.9647,0.225,   -2.72985,2.021737,0.225,        -2.769854,2.043616,0.216,
+       -2.769854,2.043616,0.216,       -2.838906,1.98095,0.216,        -2.7964,1.9647,0.225,
+       -2.753894,1.94845,0.216,        -2.689846,1.999859,0.216,       -2.72985,2.021737,0.225,
+       -2.72985,2.021737,0.225,        -2.7964,1.9647,0.225,   -2.753894,1.94845,0.216,
+       -2.714835,1.933517,0.189,       -2.653085,1.979755,0.189,       -2.689846,1.999859,0.216,
+       -2.689846,1.999859,0.216,       -2.753894,1.94845,0.216,        -2.714835,1.933517,0.189,
+       -2.682669,1.921219,0.144,       -2.622811,1.963199,0.144,       -2.653085,1.979755,0.189,
+       -2.653085,1.979755,0.189,       -2.714835,1.933517,0.189,       -2.682669,1.921219,0.144,
+       -2.660842,1.912874,0.081,       -2.602268,1.951964,0.081,       -2.622811,1.963199,0.144,
+       -2.622811,1.963199,0.144,       -2.682669,1.921219,0.144,       -2.660842,1.912874,0.081,
+       -2.6528,1.9098,0,       -2.5947,1.947825,0,     -2.602268,1.951964,0.081,
+       -2.602268,1.951964,0.081,       -2.660842,1.912874,0.081,       -2.6528,1.9098,0,
+       -2.976687,1.920243,0.081,       -2.931958,2.016526,0.081,       -2.94,2.0196,0,
+       -2.94,2.0196,0, -2.985,1.92195,0,       -2.976687,1.920243,0.081,
+       -2.954122,1.915609,0.144,       -2.910131,2.008181,0.144,       -2.931958,2.016526,0.081,
+       -2.931958,2.016526,0.081,       -2.976687,1.920243,0.081,       -2.954122,1.915609,0.144,
+       -2.92087,1.908779,0.189,        -2.877965,1.995883,0.189,       -2.910131,2.008181,0.144,
+       -2.910131,2.008181,0.144,       -2.954122,1.915609,0.144,       -2.92087,1.908779,0.189,
+       -2.880491,1.900487,0.216,       -2.838906,1.98095,0.216,        -2.877965,1.995883,0.189,
+       -2.877965,1.995883,0.189,       -2.92087,1.908779,0.189,        -2.880491,1.900487,0.216,
+       -2.83655,1.891463,0.225,        -2.7964,1.9647,0.225,   -2.838906,1.98095,0.216,
+       -2.838906,1.98095,0.216,        -2.880491,1.900487,0.216,       -2.83655,1.891463,0.225,
+       -2.792609,1.882438,0.216,       -2.753894,1.94845,0.216,        -2.7964,1.9647,0.225,
+       -2.7964,1.9647,0.225,   -2.83655,1.891463,0.225,        -2.792609,1.882438,0.216,
+       -2.75223,1.874146,0.189,        -2.714835,1.933517,0.189,       -2.753894,1.94845,0.216,
+       -2.753894,1.94845,0.216,        -2.792609,1.882438,0.216,       -2.75223,1.874146,0.189,
+       -2.718978,1.867316,0.144,       -2.682669,1.921219,0.144,       -2.714835,1.933517,0.189,
+       -2.714835,1.933517,0.189,       -2.75223,1.874146,0.189,        -2.718978,1.867316,0.144,
+       -2.696413,1.862682,0.081,       -2.660842,1.912874,0.081,       -2.682669,1.921219,0.144,
+       -2.682669,1.921219,0.144,       -2.718978,1.867316,0.144,       -2.696413,1.862682,0.081,
+       -2.6881,1.860975,0,     -2.6528,1.9098,0,       -2.660842,1.912874,0.081,
+       -2.660842,1.912874,0.081,       -2.696413,1.862682,0.081,       -2.6881,1.860975,0,
+       -2.9916,1.8,0.081,      -2.976687,1.920243,0.081,       -2.985,1.92195,0,
+       -2.985,1.92195,0,       -3,1.8,0,       -2.9916,1.8,0.081,
+       -2.9688,1.8,0.144,      -2.954122,1.915609,0.144,       -2.976687,1.920243,0.081,
+       -2.976687,1.920243,0.081,       -2.9916,1.8,0.081,      -2.9688,1.8,0.144,
+       -2.9352,1.8,0.189,      -2.92087,1.908779,0.189,        -2.954122,1.915609,0.144,
+       -2.954122,1.915609,0.144,       -2.9688,1.8,0.144,      -2.9352,1.8,0.189,
+       -2.8944,1.8,0.216,      -2.880491,1.900487,0.216,       -2.92087,1.908779,0.189,
+       -2.92087,1.908779,0.189,        -2.9352,1.8,0.189,      -2.8944,1.8,0.216,
+       -2.85,1.8,0.225,        -2.83655,1.891463,0.225,        -2.880491,1.900487,0.216,
+       -2.880491,1.900487,0.216,       -2.8944,1.8,0.216,      -2.85,1.8,0.225,
+       -2.8056,1.8,0.216,      -2.792609,1.882438,0.216,       -2.83655,1.891463,0.225,
+       -2.83655,1.891463,0.225,        -2.85,1.8,0.225,        -2.8056,1.8,0.216,
+       -2.7648,1.8,0.189,      -2.75223,1.874146,0.189,        -2.792609,1.882438,0.216,
+       -2.792609,1.882438,0.216,       -2.8056,1.8,0.216,      -2.7648,1.8,0.189,
+       -2.7312,1.8,0.144,      -2.718978,1.867316,0.144,       -2.75223,1.874146,0.189,
+       -2.75223,1.874146,0.189,        -2.7648,1.8,0.189,      -2.7312,1.8,0.144,
+       -2.7084,1.8,0.081,      -2.696413,1.862682,0.081,       -2.718978,1.867316,0.144,
+       -2.718978,1.867316,0.144,       -2.7312,1.8,0.144,      -2.7084,1.8,0.081,
+       -2.7,1.8,0,     -2.6881,1.860975,0,     -2.696413,1.862682,0.081,
+       -2.696413,1.862682,0.081,       -2.7084,1.8,0.081,      -2.7,1.8,0,
+       -2.702175,1.724519,-0.081,      -2.7084,1.8,-0.081,     -2.7,1.8,0,
+       -2.7,1.8,0,     -2.6939,1.7262,0,       -2.702175,1.724519,-0.081,
+       -2.724637,1.719956,-0.144,      -2.7312,1.8,-0.144,     -2.7084,1.8,-0.081,
+       -2.7084,1.8,-0.081,     -2.702175,1.724519,-0.081,      -2.724637,1.719956,-0.144,
+       -2.757739,1.713232,-0.189,      -2.7648,1.8,-0.189,     -2.7312,1.8,-0.144,
+       -2.7312,1.8,-0.144,     -2.724637,1.719956,-0.144,      -2.757739,1.713232,-0.189,
+       -2.797934,1.705067,-0.216,      -2.8056,1.8,-0.216,     -2.7648,1.8,-0.189,
+       -2.7648,1.8,-0.189,     -2.757739,1.713232,-0.189,      -2.797934,1.705067,-0.216,
+       -2.841675,1.696181,-0.225,      -2.85,1.8,-0.225,       -2.8056,1.8,-0.216,
+       -2.8056,1.8,-0.216,     -2.797934,1.705067,-0.216,      -2.841675,1.696181,-0.225,
+       -2.885416,1.687296,-0.216,      -2.8944,1.8,-0.216,     -2.85,1.8,-0.225,
+       -2.85,1.8,-0.225,       -2.841675,1.696181,-0.225,      -2.885416,1.687296,-0.216,
+       -2.925611,1.679131,-0.189,      -2.9352,1.8,-0.189,     -2.8944,1.8,-0.216,
+       -2.8944,1.8,-0.216,     -2.885416,1.687296,-0.216,      -2.925611,1.679131,-0.189,
+       -2.958713,1.672406,-0.144,      -2.9688,1.8,-0.144,     -2.9352,1.8,-0.189,
+       -2.9352,1.8,-0.189,     -2.925611,1.679131,-0.189,      -2.958713,1.672406,-0.144,
+       -2.981175,1.667844,-0.081,      -2.9916,1.8,-0.081,     -2.9688,1.8,-0.144,
+       -2.9688,1.8,-0.144,     -2.958713,1.672406,-0.144,      -2.981175,1.667844,-0.081,
+       -2.98945,1.666162,0,    -3,1.8,0,       -2.9916,1.8,-0.081,
+       -2.9916,1.8,-0.081,     -2.981175,1.667844,-0.081,      -2.98945,1.666162,0,
+       -2.683107,1.63861,-0.081,       -2.702175,1.724519,-0.081,      -2.6939,1.7262,0,
+       -2.6939,1.7262,0,       -2.6752,1.6416,0,       -2.683107,1.63861,-0.081,
+       -2.70457,1.630493,-0.144,       -2.724637,1.719956,-0.144,      -2.702175,1.724519,-0.081,
+       -2.702175,1.724519,-0.081,      -2.683107,1.63861,-0.081,       -2.70457,1.630493,-0.144,
+       -2.736198,1.618531,-0.189,      -2.757739,1.713232,-0.189,      -2.724637,1.719956,-0.144,
+       -2.724637,1.719956,-0.144,      -2.70457,1.630493,-0.144,       -2.736198,1.618531,-0.189,
+       -2.774605,1.604006,-0.216,      -2.797934,1.705067,-0.216,      -2.757739,1.713232,-0.189,
+       -2.757739,1.713232,-0.189,      -2.736198,1.618531,-0.189,      -2.774605,1.604006,-0.216,
+       -2.8164,1.5882,-0.225,  -2.841675,1.696181,-0.225,      -2.797934,1.705067,-0.216,
+       -2.797934,1.705067,-0.216,      -2.774605,1.604006,-0.216,      -2.8164,1.5882,-0.225,
+       -2.858195,1.572394,-0.216,      -2.885416,1.687296,-0.216,      -2.841675,1.696181,-0.225,
+       -2.841675,1.696181,-0.225,      -2.8164,1.5882,-0.225,  -2.858195,1.572394,-0.216,
+       -2.896602,1.557869,-0.189,      -2.925611,1.679131,-0.189,      -2.885416,1.687296,-0.216,
+       -2.885416,1.687296,-0.216,      -2.858195,1.572394,-0.216,      -2.896602,1.557869,-0.189,
+       -2.92823,1.545907,-0.144,       -2.958713,1.672406,-0.144,      -2.925611,1.679131,-0.189,
+       -2.925611,1.679131,-0.189,      -2.896602,1.557869,-0.189,      -2.92823,1.545907,-0.144,
+       -2.949693,1.53779,-0.081,       -2.981175,1.667844,-0.081,      -2.958713,1.672406,-0.144,
+       -2.958713,1.672406,-0.144,      -2.92823,1.545907,-0.144,       -2.949693,1.53779,-0.081,
+       -2.9576,1.5348,0,       -2.98945,1.666162,0,    -2.981175,1.667844,-0.081,
+       -2.981175,1.667844,-0.081,      -2.949693,1.53779,-0.081,       -2.9576,1.5348,0,
+       -2.650604,1.544903,-0.081,      -2.683107,1.63861,-0.081,       -2.6752,1.6416,0,
+       -2.6752,1.6416,0,       -2.6433,1.5489,0,       -2.650604,1.544903,-0.081,
+       -2.670428,1.534053,-0.144,      -2.70457,1.630493,-0.144,       -2.683107,1.63861,-0.081,
+       -2.683107,1.63861,-0.081,       -2.650604,1.544903,-0.081,      -2.670428,1.534053,-0.144,
+       -2.699644,1.518063,-0.189,      -2.736198,1.618531,-0.189,      -2.70457,1.630493,-0.144,
+       -2.70457,1.630493,-0.144,       -2.670428,1.534053,-0.144,      -2.699644,1.518063,-0.189,
+       -2.735119,1.498648,-0.216,      -2.774605,1.604006,-0.216,      -2.736198,1.618531,-0.189,
+       -2.736198,1.618531,-0.189,      -2.699644,1.518063,-0.189,      -2.735119,1.498648,-0.216,
+       -2.773725,1.477519,-0.225,      -2.8164,1.5882,-0.225,  -2.774605,1.604006,-0.216,
+       -2.774605,1.604006,-0.216,      -2.735119,1.498648,-0.216,      -2.773725,1.477519,-0.225,
+       -2.812331,1.45639,-0.216,       -2.858195,1.572394,-0.216,      -2.8164,1.5882,-0.225,
+       -2.8164,1.5882,-0.225,  -2.773725,1.477519,-0.225,      -2.812331,1.45639,-0.216,
+       -2.847806,1.436974,-0.189,      -2.896602,1.557869,-0.189,      -2.858195,1.572394,-0.216,
+       -2.858195,1.572394,-0.216,      -2.812331,1.45639,-0.216,       -2.847806,1.436974,-0.189,
+       -2.877022,1.420985,-0.144,      -2.92823,1.545907,-0.144,       -2.896602,1.557869,-0.189,
+       -2.896602,1.557869,-0.189,      -2.847806,1.436974,-0.189,      -2.877022,1.420985,-0.144,
+       -2.896846,1.410135,-0.081,      -2.949693,1.53779,-0.081,       -2.92823,1.545907,-0.144,
+       -2.92823,1.545907,-0.144,       -2.877022,1.420985,-0.144,      -2.896846,1.410135,-0.081,
+       -2.90415,1.406137,0,    -2.9576,1.5348,0,       -2.949693,1.53779,-0.081,
+       -2.949693,1.53779,-0.081,       -2.896846,1.410135,-0.081,      -2.90415,1.406137,0,
+       -2.604074,1.446029,-0.081,      -2.650604,1.544903,-0.081,      -2.6433,1.5489,0,
+       -2.6433,1.5489,0,       -2.5976,1.4508,0,       -2.604074,1.446029,-0.081,
+       -2.621645,1.433078,-0.144,      -2.670428,1.534053,-0.144,      -2.650604,1.544903,-0.081,
+       -2.650604,1.544903,-0.081,      -2.604074,1.446029,-0.081,      -2.621645,1.433078,-0.144,
+       -2.647539,1.413994,-0.189,      -2.699644,1.518063,-0.189,      -2.670428,1.534053,-0.144,
+       -2.670428,1.534053,-0.144,      -2.621645,1.433078,-0.144,      -2.647539,1.413994,-0.189,
+       -2.678982,1.390819,-0.216,      -2.735119,1.498648,-0.216,      -2.699644,1.518063,-0.189,
+       -2.699644,1.518063,-0.189,      -2.647539,1.413994,-0.189,      -2.678982,1.390819,-0.216,
+       -2.7132,1.3656,-0.225,  -2.773725,1.477519,-0.225,      -2.735119,1.498648,-0.216,
+       -2.735119,1.498648,-0.216,      -2.678982,1.390819,-0.216,      -2.7132,1.3656,-0.225,
+       -2.747418,1.340381,-0.216,      -2.812331,1.45639,-0.216,       -2.773725,1.477519,-0.225,
+       -2.773725,1.477519,-0.225,      -2.7132,1.3656,-0.225,  -2.747418,1.340381,-0.216,
+       -2.778861,1.317206,-0.189,      -2.847806,1.436974,-0.189,      -2.812331,1.45639,-0.216,
+       -2.812331,1.45639,-0.216,       -2.747418,1.340381,-0.216,      -2.778861,1.317206,-0.189,
+       -2.804755,1.298122,-0.144,      -2.877022,1.420985,-0.144,      -2.847806,1.436974,-0.189,
+       -2.847806,1.436974,-0.189,      -2.778861,1.317206,-0.189,      -2.804755,1.298122,-0.144,
+       -2.822326,1.285171,-0.081,      -2.896846,1.410135,-0.081,      -2.877022,1.420985,-0.144,
+       -2.877022,1.420985,-0.144,      -2.804755,1.298122,-0.144,      -2.822326,1.285171,-0.081,
+       -2.8288,1.2804,0,       -2.90415,1.406137,0,    -2.896846,1.410135,-0.081,
+       -2.896846,1.410135,-0.081,      -2.822326,1.285171,-0.081,      -2.8288,1.2804,0,
+       -2.542925,1.344619,-0.081,      -2.604074,1.446029,-0.081,      -2.5976,1.4508,0,
+       -2.5976,1.4508,0,       -2.5375,1.35,0, -2.542925,1.344619,-0.081,
+       -2.55765,1.330013,-0.144,       -2.621645,1.433078,-0.144,      -2.604074,1.446029,-0.081,
+       -2.604074,1.446029,-0.081,      -2.542925,1.344619,-0.081,      -2.55765,1.330013,-0.144,
+       -2.57935,1.308488,-0.189,       -2.647539,1.413994,-0.189,      -2.621645,1.433078,-0.144,
+       -2.621645,1.433078,-0.144,      -2.55765,1.330013,-0.144,       -2.57935,1.308488,-0.189,
+       -2.6057,1.28235,-0.216, -2.678982,1.390819,-0.216,      -2.647539,1.413994,-0.189,
+       -2.647539,1.413994,-0.189,      -2.57935,1.308488,-0.189,       -2.6057,1.28235,-0.216,
+       -2.634375,1.253906,-0.225,      -2.7132,1.3656,-0.225,  -2.678982,1.390819,-0.216,
+       -2.678982,1.390819,-0.216,      -2.6057,1.28235,-0.216, -2.634375,1.253906,-0.225,
+       -2.66305,1.225463,-0.216,       -2.747418,1.340381,-0.216,      -2.7132,1.3656,-0.225,
+       -2.7132,1.3656,-0.225,  -2.634375,1.253906,-0.225,      -2.66305,1.225463,-0.216,
+       -2.6894,1.199325,-0.189,        -2.778861,1.317206,-0.189,      -2.747418,1.340381,-0.216,
+       -2.747418,1.340381,-0.216,      -2.66305,1.225463,-0.216,       -2.6894,1.199325,-0.189,
+       -2.7111,1.1778,-0.144,  -2.804755,1.298122,-0.144,      -2.778861,1.317206,-0.189,
+       -2.778861,1.317206,-0.189,      -2.6894,1.199325,-0.189,        -2.7111,1.1778,-0.144,
+       -2.725825,1.163194,-0.081,      -2.822326,1.285171,-0.081,      -2.804755,1.298122,-0.144,
+       -2.804755,1.298122,-0.144,      -2.7111,1.1778,-0.144,  -2.725825,1.163194,-0.081,
+       -2.73125,1.157813,0,    -2.8288,1.2804,0,       -2.822326,1.285171,-0.081,
+       -2.822326,1.285171,-0.081,      -2.725825,1.163194,-0.081,      -2.73125,1.157813,0,
+       -2.466566,1.243303,-0.081,      -2.542925,1.344619,-0.081,      -2.5375,1.35,0,
+       -2.5375,1.35,0, -2.4624,1.2492,0,       -2.466566,1.243303,-0.081,
+       -2.477875,1.227298,-0.144,      -2.55765,1.330013,-0.144,       -2.542925,1.344619,-0.081,
+       -2.542925,1.344619,-0.081,      -2.466566,1.243303,-0.081,      -2.477875,1.227298,-0.144,
+       -2.494541,1.20371,-0.189,       -2.57935,1.308488,-0.189,       -2.55765,1.330013,-0.144,
+       -2.55765,1.330013,-0.144,       -2.477875,1.227298,-0.144,      -2.494541,1.20371,-0.189,
+       -2.514778,1.175069,-0.216,      -2.6057,1.28235,-0.216, -2.57935,1.308488,-0.189,
+       -2.57935,1.308488,-0.189,       -2.494541,1.20371,-0.189,       -2.514778,1.175069,-0.216,
+       -2.5368,1.1439,-0.225,  -2.634375,1.253906,-0.225,      -2.6057,1.28235,-0.216,
+       -2.6057,1.28235,-0.216, -2.514778,1.175069,-0.216,      -2.5368,1.1439,-0.225,
+       -2.558822,1.112731,-0.216,      -2.66305,1.225463,-0.216,       -2.634375,1.253906,-0.225,
+       -2.634375,1.253906,-0.225,      -2.5368,1.1439,-0.225,  -2.558822,1.112731,-0.216,
+       -2.579059,1.08409,-0.189,       -2.6894,1.199325,-0.189,        -2.66305,1.225463,-0.216,
+       -2.66305,1.225463,-0.216,       -2.558822,1.112731,-0.216,      -2.579059,1.08409,-0.189,
+       -2.595725,1.060502,-0.144,      -2.7111,1.1778,-0.144,  -2.6894,1.199325,-0.189,
+       -2.6894,1.199325,-0.189,        -2.579059,1.08409,-0.189,       -2.595725,1.060502,-0.144,
+       -2.607034,1.044497,-0.081,      -2.725825,1.163194,-0.081,      -2.7111,1.1778,-0.144,
+       -2.7111,1.1778,-0.144,  -2.595725,1.060502,-0.144,      -2.607034,1.044497,-0.081,
+       -2.6112,1.0386,0,       -2.73125,1.157813,0,    -2.725825,1.163194,-0.081,
+       -2.725825,1.163194,-0.081,      -2.607034,1.044497,-0.081,      -2.6112,1.0386,0,
+       -2.374406,1.144713,-0.081,      -2.466566,1.243303,-0.081,      -2.4624,1.2492,0,
+       -2.4624,1.2492,0,       -2.3717,1.1511,0,       -2.374406,1.144713,-0.081,
+       -2.381752,1.127376,-0.144,      -2.477875,1.227298,-0.144,      -2.466566,1.243303,-0.081,
+       -2.466566,1.243303,-0.081,      -2.374406,1.144713,-0.081,      -2.381752,1.127376,-0.144,
+       -2.392576,1.101828,-0.189,      -2.494541,1.20371,-0.189,       -2.477875,1.227298,-0.144,
+       -2.477875,1.227298,-0.144,      -2.381752,1.127376,-0.144,      -2.392576,1.101828,-0.189,
+       -2.405721,1.070804,-0.216,      -2.514778,1.175069,-0.216,      -2.494541,1.20371,-0.189,
+       -2.494541,1.20371,-0.189,       -2.392576,1.101828,-0.189,      -2.405721,1.070804,-0.216,
+       -2.420025,1.037044,-0.225,      -2.5368,1.1439,-0.225,  -2.514778,1.175069,-0.216,
+       -2.514778,1.175069,-0.216,      -2.405721,1.070804,-0.216,      -2.420025,1.037044,-0.225,
+       -2.434329,1.003283,-0.216,      -2.558822,1.112731,-0.216,      -2.5368,1.1439,-0.225,
+       -2.5368,1.1439,-0.225,  -2.420025,1.037044,-0.225,      -2.434329,1.003283,-0.216,
+       -2.447474,0.97226,-0.189,       -2.579059,1.08409,-0.189,       -2.558822,1.112731,-0.216,
+       -2.558822,1.112731,-0.216,      -2.434329,1.003283,-0.216,      -2.447474,0.97226,-0.189,
+       -2.458298,0.946711,-0.144,      -2.595725,1.060502,-0.144,      -2.579059,1.08409,-0.189,
+       -2.579059,1.08409,-0.189,       -2.447474,0.97226,-0.189,       -2.458298,0.946711,-0.144,
+       -2.465644,0.929375,-0.081,      -2.607034,1.044497,-0.081,      -2.595725,1.060502,-0.144,
+       -2.595725,1.060502,-0.144,      -2.458298,0.946711,-0.144,      -2.465644,0.929375,-0.081,
+       -2.46835,0.922987,0,    -2.6112,1.0386,0,       -2.607034,1.044497,-0.081,
+       -2.607034,1.044497,-0.081,      -2.465644,0.929375,-0.081,      -2.46835,0.922987,0,
+       -2.265853,1.051478,-0.081,      -2.374406,1.144713,-0.081,      -2.3717,1.1511,0,
+       -2.3717,1.1511,0,       -2.2648,1.0584,0,       -2.265853,1.051478,-0.081,
+       -2.26871,1.032691,-0.144,       -2.381752,1.127376,-0.144,      -2.374406,1.144713,-0.081,
+       -2.374406,1.144713,-0.081,      -2.265853,1.051478,-0.081,      -2.26871,1.032691,-0.144,
+       -2.272922,1.005005,-0.189,      -2.392576,1.101828,-0.189,      -2.381752,1.127376,-0.144,
+       -2.381752,1.127376,-0.144,      -2.26871,1.032691,-0.144,       -2.272922,1.005005,-0.189,
+       -2.278035,0.971386,-0.216,      -2.405721,1.070804,-0.216,      -2.392576,1.101828,-0.189,
+       -2.392576,1.101828,-0.189,      -2.272922,1.005005,-0.189,      -2.278035,0.971386,-0.216,
+       -2.2836,0.9348,-0.225,  -2.420025,1.037044,-0.225,      -2.405721,1.070804,-0.216,
+       -2.405721,1.070804,-0.216,      -2.278035,0.971386,-0.216,      -2.2836,0.9348,-0.225,
+       -2.289165,0.898214,-0.216,      -2.434329,1.003283,-0.216,      -2.420025,1.037044,-0.225,
+       -2.420025,1.037044,-0.225,      -2.2836,0.9348,-0.225,  -2.289165,0.898214,-0.216,
+       -2.294278,0.864595,-0.189,      -2.447474,0.97226,-0.189,       -2.434329,1.003283,-0.216,
+       -2.434329,1.003283,-0.216,      -2.289165,0.898214,-0.216,      -2.294278,0.864595,-0.189,
+       -2.29849,0.836909,-0.144,       -2.458298,0.946711,-0.144,      -2.447474,0.97226,-0.189,
+       -2.447474,0.97226,-0.189,       -2.294278,0.864595,-0.189,      -2.29849,0.836909,-0.144,
+       -2.301347,0.818122,-0.081,      -2.465644,0.929375,-0.081,      -2.458298,0.946711,-0.144,
+       -2.458298,0.946711,-0.144,      -2.29849,0.836909,-0.144,       -2.301347,0.818122,-0.081,
+       -2.3024,0.8112,0,       -2.46835,0.922987,0,    -2.465644,0.929375,-0.081,
+       -2.465644,0.929375,-0.081,      -2.301347,0.818122,-0.081,      -2.3024,0.8112,0,
+       -2.140315,0.966231,-0.081,      -2.265853,1.051478,-0.081,      -2.2648,1.0584,0,
+       -2.2648,1.0584,0,       -2.1411,0.9738,0,       -2.140315,0.966231,-0.081,
+       -2.138183,0.945685,-0.144,      -2.26871,1.032691,-0.144,       -2.265853,1.051478,-0.081,
+       -2.265853,1.051478,-0.081,      -2.140315,0.966231,-0.081,      -2.138183,0.945685,-0.144,
+       -2.135041,0.915407,-0.189,      -2.272922,1.005005,-0.189,      -2.26871,1.032691,-0.144,
+       -2.26871,1.032691,-0.144,       -2.138183,0.945685,-0.144,      -2.135041,0.915407,-0.189,
+       -2.131226,0.878641,-0.216,      -2.278035,0.971386,-0.216,      -2.272922,1.005005,-0.189,
+       -2.272922,1.005005,-0.189,      -2.135041,0.915407,-0.189,      -2.131226,0.878641,-0.216,
+       -2.127075,0.838631,-0.225,      -2.2836,0.9348,-0.225,  -2.278035,0.971386,-0.216,
+       -2.278035,0.971386,-0.216,      -2.131226,0.878641,-0.216,      -2.127075,0.838631,-0.225,
+       -2.122924,0.798621,-0.216,      -2.289165,0.898214,-0.216,      -2.2836,0.9348,-0.225,
+       -2.2836,0.9348,-0.225,  -2.127075,0.838631,-0.225,      -2.122924,0.798621,-0.216,
+       -2.119109,0.761855,-0.189,      -2.294278,0.864595,-0.189,      -2.289165,0.898214,-0.216,
+       -2.289165,0.898214,-0.216,      -2.122924,0.798621,-0.216,      -2.119109,0.761855,-0.189,
+       -2.115967,0.731578,-0.144,      -2.29849,0.836909,-0.144,       -2.294278,0.864595,-0.189,
+       -2.294278,0.864595,-0.189,      -2.119109,0.761855,-0.189,      -2.115967,0.731578,-0.144,
+       -2.113835,0.711032,-0.081,      -2.301347,0.818122,-0.081,      -2.29849,0.836909,-0.144,
+       -2.29849,0.836909,-0.144,       -2.115967,0.731578,-0.144,      -2.113835,0.711032,-0.081,
+       -2.11305,0.703463,0,    -2.3024,0.8112,0,       -2.301347,0.818122,-0.081,
+       -2.301347,0.818122,-0.081,      -2.113835,0.711032,-0.081,      -2.11305,0.703463,0,
+       -1.9972,0.8916,-0.081,  -2.140315,0.966231,-0.081,      -2.1411,0.9738,0,
+       -2.1411,0.9738,0,       -2,0.9,0,       -1.9972,0.8916,-0.081,
+       -1.9896,0.8688,-0.144,  -2.138183,0.945685,-0.144,      -2.140315,0.966231,-0.081,
+       -2.140315,0.966231,-0.081,      -1.9972,0.8916,-0.081,  -1.9896,0.8688,-0.144,
+       -1.9784,0.8352,-0.189,  -2.135041,0.915407,-0.189,      -2.138183,0.945685,-0.144,
+       -2.138183,0.945685,-0.144,      -1.9896,0.8688,-0.144,  -1.9784,0.8352,-0.189,
+       -1.9648,0.7944,-0.216,  -2.131226,0.878641,-0.216,      -2.135041,0.915407,-0.189,
+       -2.135041,0.915407,-0.189,      -1.9784,0.8352,-0.189,  -1.9648,0.7944,-0.216,
+       -1.95,0.75,-0.225,      -2.127075,0.838631,-0.225,      -2.131226,0.878641,-0.216,
+       -2.131226,0.878641,-0.216,      -1.9648,0.7944,-0.216,  -1.95,0.75,-0.225,
+       -1.9352,0.7056,-0.216,  -2.122924,0.798621,-0.216,      -2.127075,0.838631,-0.225,
+       -2.127075,0.838631,-0.225,      -1.95,0.75,-0.225,      -1.9352,0.7056,-0.216,
+       -1.9216,0.6648,-0.189,  -2.119109,0.761855,-0.189,      -2.122924,0.798621,-0.216,
+       -2.122924,0.798621,-0.216,      -1.9352,0.7056,-0.216,  -1.9216,0.6648,-0.189,
+       -1.9104,0.6312,-0.144,  -2.115967,0.731578,-0.144,      -2.119109,0.761855,-0.189,
+       -2.119109,0.761855,-0.189,      -1.9216,0.6648,-0.189,  -1.9104,0.6312,-0.144,
+       -1.9028,0.6084,-0.081,  -2.113835,0.711032,-0.081,      -2.115967,0.731578,-0.144,
+       -2.115967,0.731578,-0.144,      -1.9104,0.6312,-0.144,  -1.9028,0.6084,-0.081,
+       -1.9,0.6,0,     -2.11305,0.703463,0,    -2.113835,0.711032,-0.081,
+       -2.113835,0.711032,-0.081,      -1.9028,0.6084,-0.081,  -1.9,0.6,0,
+       -2.981175,1.667844,0.081,       -2.9916,1.8,0.081,      -3,1.8,0,
+       -3,1.8,0,       -2.98945,1.666162,0,    -2.981175,1.667844,0.081,
+       -2.958713,1.672406,0.144,       -2.9688,1.8,0.144,      -2.9916,1.8,0.081,
+       -2.9916,1.8,0.081,      -2.981175,1.667844,0.081,       -2.958713,1.672406,0.144,
+       -2.925611,1.679131,0.189,       -2.9352,1.8,0.189,      -2.9688,1.8,0.144,
+       -2.9688,1.8,0.144,      -2.958713,1.672406,0.144,       -2.925611,1.679131,0.189,
+       -2.885416,1.687296,0.216,       -2.8944,1.8,0.216,      -2.9352,1.8,0.189,
+       -2.9352,1.8,0.189,      -2.925611,1.679131,0.189,       -2.885416,1.687296,0.216,
+       -2.841675,1.696181,0.225,       -2.85,1.8,0.225,        -2.8944,1.8,0.216,
+       -2.8944,1.8,0.216,      -2.885416,1.687296,0.216,       -2.841675,1.696181,0.225,
+       -2.797934,1.705067,0.216,       -2.8056,1.8,0.216,      -2.85,1.8,0.225,
+       -2.85,1.8,0.225,        -2.841675,1.696181,0.225,       -2.797934,1.705067,0.216,
+       -2.757739,1.713232,0.189,       -2.7648,1.8,0.189,      -2.8056,1.8,0.216,
+       -2.8056,1.8,0.216,      -2.797934,1.705067,0.216,       -2.757739,1.713232,0.189,
+       -2.724637,1.719956,0.144,       -2.7312,1.8,0.144,      -2.7648,1.8,0.189,
+       -2.7648,1.8,0.189,      -2.757739,1.713232,0.189,       -2.724637,1.719956,0.144,
+       -2.702175,1.724519,0.081,       -2.7084,1.8,0.081,      -2.7312,1.8,0.144,
+       -2.7312,1.8,0.144,      -2.724637,1.719956,0.144,       -2.702175,1.724519,0.081,
+       -2.6939,1.7262,0,       -2.7,1.8,0,     -2.7084,1.8,0.081,
+       -2.7084,1.8,0.081,      -2.702175,1.724519,0.081,       -2.6939,1.7262,0,
+       -2.949693,1.53779,0.081,        -2.981175,1.667844,0.081,       -2.98945,1.666162,0,
+       -2.98945,1.666162,0,    -2.9576,1.5348,0,       -2.949693,1.53779,0.081,
+       -2.92823,1.545907,0.144,        -2.958713,1.672406,0.144,       -2.981175,1.667844,0.081,
+       -2.981175,1.667844,0.081,       -2.949693,1.53779,0.081,        -2.92823,1.545907,0.144,
+       -2.896602,1.557869,0.189,       -2.925611,1.679131,0.189,       -2.958713,1.672406,0.144,
+       -2.958713,1.672406,0.144,       -2.92823,1.545907,0.144,        -2.896602,1.557869,0.189,
+       -2.858195,1.572394,0.216,       -2.885416,1.687296,0.216,       -2.925611,1.679131,0.189,
+       -2.925611,1.679131,0.189,       -2.896602,1.557869,0.189,       -2.858195,1.572394,0.216,
+       -2.8164,1.5882,0.225,   -2.841675,1.696181,0.225,       -2.885416,1.687296,0.216,
+       -2.885416,1.687296,0.216,       -2.858195,1.572394,0.216,       -2.8164,1.5882,0.225,
+       -2.774605,1.604006,0.216,       -2.797934,1.705067,0.216,       -2.841675,1.696181,0.225,
+       -2.841675,1.696181,0.225,       -2.8164,1.5882,0.225,   -2.774605,1.604006,0.216,
+       -2.736198,1.618531,0.189,       -2.757739,1.713232,0.189,       -2.797934,1.705067,0.216,
+       -2.797934,1.705067,0.216,       -2.774605,1.604006,0.216,       -2.736198,1.618531,0.189,
+       -2.70457,1.630493,0.144,        -2.724637,1.719956,0.144,       -2.757739,1.713232,0.189,
+       -2.757739,1.713232,0.189,       -2.736198,1.618531,0.189,       -2.70457,1.630493,0.144,
+       -2.683107,1.63861,0.081,        -2.702175,1.724519,0.081,       -2.724637,1.719956,0.144,
+       -2.724637,1.719956,0.144,       -2.70457,1.630493,0.144,        -2.683107,1.63861,0.081,
+       -2.6752,1.6416,0,       -2.6939,1.7262,0,       -2.702175,1.724519,0.081,
+       -2.702175,1.724519,0.081,       -2.683107,1.63861,0.081,        -2.6752,1.6416,0,
+       -2.896846,1.410135,0.081,       -2.949693,1.53779,0.081,        -2.9576,1.5348,0,
+       -2.9576,1.5348,0,       -2.90415,1.406137,0,    -2.896846,1.410135,0.081,
+       -2.877022,1.420985,0.144,       -2.92823,1.545907,0.144,        -2.949693,1.53779,0.081,
+       -2.949693,1.53779,0.081,        -2.896846,1.410135,0.081,       -2.877022,1.420985,0.144,
+       -2.847806,1.436974,0.189,       -2.896602,1.557869,0.189,       -2.92823,1.545907,0.144,
+       -2.92823,1.545907,0.144,        -2.877022,1.420985,0.144,       -2.847806,1.436974,0.189,
+       -2.812331,1.45639,0.216,        -2.858195,1.572394,0.216,       -2.896602,1.557869,0.189,
+       -2.896602,1.557869,0.189,       -2.847806,1.436974,0.189,       -2.812331,1.45639,0.216,
+       -2.773725,1.477519,0.225,       -2.8164,1.5882,0.225,   -2.858195,1.572394,0.216,
+       -2.858195,1.572394,0.216,       -2.812331,1.45639,0.216,        -2.773725,1.477519,0.225,
+       -2.735119,1.498648,0.216,       -2.774605,1.604006,0.216,       -2.8164,1.5882,0.225,
+       -2.8164,1.5882,0.225,   -2.773725,1.477519,0.225,       -2.735119,1.498648,0.216,
+       -2.699644,1.518063,0.189,       -2.736198,1.618531,0.189,       -2.774605,1.604006,0.216,
+       -2.774605,1.604006,0.216,       -2.735119,1.498648,0.216,       -2.699644,1.518063,0.189,
+       -2.670428,1.534053,0.144,       -2.70457,1.630493,0.144,        -2.736198,1.618531,0.189,
+       -2.736198,1.618531,0.189,       -2.699644,1.518063,0.189,       -2.670428,1.534053,0.144,
+       -2.650604,1.544903,0.081,       -2.683107,1.63861,0.081,        -2.70457,1.630493,0.144,
+       -2.70457,1.630493,0.144,        -2.670428,1.534053,0.144,       -2.650604,1.544903,0.081,
+       -2.6433,1.5489,0,       -2.6752,1.6416,0,       -2.683107,1.63861,0.081,
+       -2.683107,1.63861,0.081,        -2.650604,1.544903,0.081,       -2.6433,1.5489,0,
+       -2.822326,1.285171,0.081,       -2.896846,1.410135,0.081,       -2.90415,1.406137,0,
+       -2.90415,1.406137,0,    -2.8288,1.2804,0,       -2.822326,1.285171,0.081,
+       -2.804755,1.298122,0.144,       -2.877022,1.420985,0.144,       -2.896846,1.410135,0.081,
+       -2.896846,1.410135,0.081,       -2.822326,1.285171,0.081,       -2.804755,1.298122,0.144,
+       -2.778861,1.317206,0.189,       -2.847806,1.436974,0.189,       -2.877022,1.420985,0.144,
+       -2.877022,1.420985,0.144,       -2.804755,1.298122,0.144,       -2.778861,1.317206,0.189,
+       -2.747418,1.340381,0.216,       -2.812331,1.45639,0.216,        -2.847806,1.436974,0.189,
+       -2.847806,1.436974,0.189,       -2.778861,1.317206,0.189,       -2.747418,1.340381,0.216,
+       -2.7132,1.3656,0.225,   -2.773725,1.477519,0.225,       -2.812331,1.45639,0.216,
+       -2.812331,1.45639,0.216,        -2.747418,1.340381,0.216,       -2.7132,1.3656,0.225,
+       -2.678982,1.390819,0.216,       -2.735119,1.498648,0.216,       -2.773725,1.477519,0.225,
+       -2.773725,1.477519,0.225,       -2.7132,1.3656,0.225,   -2.678982,1.390819,0.216,
+       -2.647539,1.413994,0.189,       -2.699644,1.518063,0.189,       -2.735119,1.498648,0.216,
+       -2.735119,1.498648,0.216,       -2.678982,1.390819,0.216,       -2.647539,1.413994,0.189,
+       -2.621645,1.433078,0.144,       -2.670428,1.534053,0.144,       -2.699644,1.518063,0.189,
+       -2.699644,1.518063,0.189,       -2.647539,1.413994,0.189,       -2.621645,1.433078,0.144,
+       -2.604074,1.446029,0.081,       -2.650604,1.544903,0.081,       -2.670428,1.534053,0.144,
+       -2.670428,1.534053,0.144,       -2.621645,1.433078,0.144,       -2.604074,1.446029,0.081,
+       -2.5976,1.4508,0,       -2.6433,1.5489,0,       -2.650604,1.544903,0.081,
+       -2.650604,1.544903,0.081,       -2.604074,1.446029,0.081,       -2.5976,1.4508,0,
+       -2.725825,1.163194,0.081,       -2.822326,1.285171,0.081,       -2.8288,1.2804,0,
+       -2.8288,1.2804,0,       -2.73125,1.157813,0,    -2.725825,1.163194,0.081,
+       -2.7111,1.1778,0.144,   -2.804755,1.298122,0.144,       -2.822326,1.285171,0.081,
+       -2.822326,1.285171,0.081,       -2.725825,1.163194,0.081,       -2.7111,1.1778,0.144,
+       -2.6894,1.199325,0.189, -2.778861,1.317206,0.189,       -2.804755,1.298122,0.144,
+       -2.804755,1.298122,0.144,       -2.7111,1.1778,0.144,   -2.6894,1.199325,0.189,
+       -2.66305,1.225463,0.216,        -2.747418,1.340381,0.216,       -2.778861,1.317206,0.189,
+       -2.778861,1.317206,0.189,       -2.6894,1.199325,0.189, -2.66305,1.225463,0.216,
+       -2.634375,1.253906,0.225,       -2.7132,1.3656,0.225,   -2.747418,1.340381,0.216,
+       -2.747418,1.340381,0.216,       -2.66305,1.225463,0.216,        -2.634375,1.253906,0.225,
+       -2.6057,1.28235,0.216,  -2.678982,1.390819,0.216,       -2.7132,1.3656,0.225,
+       -2.7132,1.3656,0.225,   -2.634375,1.253906,0.225,       -2.6057,1.28235,0.216,
+       -2.57935,1.308488,0.189,        -2.647539,1.413994,0.189,       -2.678982,1.390819,0.216,
+       -2.678982,1.390819,0.216,       -2.6057,1.28235,0.216,  -2.57935,1.308488,0.189,
+       -2.55765,1.330013,0.144,        -2.621645,1.433078,0.144,       -2.647539,1.413994,0.189,
+       -2.647539,1.413994,0.189,       -2.57935,1.308488,0.189,        -2.55765,1.330013,0.144,
+       -2.542925,1.344619,0.081,       -2.604074,1.446029,0.081,       -2.621645,1.433078,0.144,
+       -2.621645,1.433078,0.144,       -2.55765,1.330013,0.144,        -2.542925,1.344619,0.081,
+       -2.5375,1.35,0, -2.5976,1.4508,0,       -2.604074,1.446029,0.081,
+       -2.604074,1.446029,0.081,       -2.542925,1.344619,0.081,       -2.5375,1.35,0,
+       -2.607034,1.044497,0.081,       -2.725825,1.163194,0.081,       -2.73125,1.157813,0,
+       -2.73125,1.157813,0,    -2.6112,1.0386,0,       -2.607034,1.044497,0.081,
+       -2.595725,1.060502,0.144,       -2.7111,1.1778,0.144,   -2.725825,1.163194,0.081,
+       -2.725825,1.163194,0.081,       -2.607034,1.044497,0.081,       -2.595725,1.060502,0.144,
+       -2.579059,1.08409,0.189,        -2.6894,1.199325,0.189, -2.7111,1.1778,0.144,
+       -2.7111,1.1778,0.144,   -2.595725,1.060502,0.144,       -2.579059,1.08409,0.189,
+       -2.558822,1.112731,0.216,       -2.66305,1.225463,0.216,        -2.6894,1.199325,0.189,
+       -2.6894,1.199325,0.189, -2.579059,1.08409,0.189,        -2.558822,1.112731,0.216,
+       -2.5368,1.1439,0.225,   -2.634375,1.253906,0.225,       -2.66305,1.225463,0.216,
+       -2.66305,1.225463,0.216,        -2.558822,1.112731,0.216,       -2.5368,1.1439,0.225,
+       -2.514778,1.175069,0.216,       -2.6057,1.28235,0.216,  -2.634375,1.253906,0.225,
+       -2.634375,1.253906,0.225,       -2.5368,1.1439,0.225,   -2.514778,1.175069,0.216,
+       -2.494541,1.20371,0.189,        -2.57935,1.308488,0.189,        -2.6057,1.28235,0.216,
+       -2.6057,1.28235,0.216,  -2.514778,1.175069,0.216,       -2.494541,1.20371,0.189,
+       -2.477875,1.227298,0.144,       -2.55765,1.330013,0.144,        -2.57935,1.308488,0.189,
+       -2.57935,1.308488,0.189,        -2.494541,1.20371,0.189,        -2.477875,1.227298,0.144,
+       -2.466566,1.243303,0.081,       -2.542925,1.344619,0.081,       -2.55765,1.330013,0.144,
+       -2.55765,1.330013,0.144,        -2.477875,1.227298,0.144,       -2.466566,1.243303,0.081,
+       -2.4624,1.2492,0,       -2.5375,1.35,0, -2.542925,1.344619,0.081,
+       -2.542925,1.344619,0.081,       -2.466566,1.243303,0.081,       -2.4624,1.2492,0,
+       -2.465644,0.929375,0.081,       -2.607034,1.044497,0.081,       -2.6112,1.0386,0,
+       -2.6112,1.0386,0,       -2.46835,0.922987,0,    -2.465644,0.929375,0.081,
+       -2.458298,0.946711,0.144,       -2.595725,1.060502,0.144,       -2.607034,1.044497,0.081,
+       -2.607034,1.044497,0.081,       -2.465644,0.929375,0.081,       -2.458298,0.946711,0.144,
+       -2.447474,0.97226,0.189,        -2.579059,1.08409,0.189,        -2.595725,1.060502,0.144,
+       -2.595725,1.060502,0.144,       -2.458298,0.946711,0.144,       -2.447474,0.97226,0.189,
+       -2.434329,1.003283,0.216,       -2.558822,1.112731,0.216,       -2.579059,1.08409,0.189,
+       -2.579059,1.08409,0.189,        -2.447474,0.97226,0.189,        -2.434329,1.003283,0.216,
+       -2.420025,1.037044,0.225,       -2.5368,1.1439,0.225,   -2.558822,1.112731,0.216,
+       -2.558822,1.112731,0.216,       -2.434329,1.003283,0.216,       -2.420025,1.037044,0.225,
+       -2.405721,1.070804,0.216,       -2.514778,1.175069,0.216,       -2.5368,1.1439,0.225,
+       -2.5368,1.1439,0.225,   -2.420025,1.037044,0.225,       -2.405721,1.070804,0.216,
+       -2.392576,1.101828,0.189,       -2.494541,1.20371,0.189,        -2.514778,1.175069,0.216,
+       -2.514778,1.175069,0.216,       -2.405721,1.070804,0.216,       -2.392576,1.101828,0.189,
+       -2.381752,1.127376,0.144,       -2.477875,1.227298,0.144,       -2.494541,1.20371,0.189,
+       -2.494541,1.20371,0.189,        -2.392576,1.101828,0.189,       -2.381752,1.127376,0.144,
+       -2.374406,1.144713,0.081,       -2.466566,1.243303,0.081,       -2.477875,1.227298,0.144,
+       -2.477875,1.227298,0.144,       -2.381752,1.127376,0.144,       -2.374406,1.144713,0.081,
+       -2.3717,1.1511,0,       -2.4624,1.2492,0,       -2.466566,1.243303,0.081,
+       -2.466566,1.243303,0.081,       -2.374406,1.144713,0.081,       -2.3717,1.1511,0,
+       -2.301347,0.818122,0.081,       -2.465644,0.929375,0.081,       -2.46835,0.922987,0,
+       -2.46835,0.922987,0,    -2.3024,0.8112,0,       -2.301347,0.818122,0.081,
+       -2.29849,0.836909,0.144,        -2.458298,0.946711,0.144,       -2.465644,0.929375,0.081,
+       -2.465644,0.929375,0.081,       -2.301347,0.818122,0.081,       -2.29849,0.836909,0.144,
+       -2.294278,0.864595,0.189,       -2.447474,0.97226,0.189,        -2.458298,0.946711,0.144,
+       -2.458298,0.946711,0.144,       -2.29849,0.836909,0.144,        -2.294278,0.864595,0.189,
+       -2.289165,0.898214,0.216,       -2.434329,1.003283,0.216,       -2.447474,0.97226,0.189,
+       -2.447474,0.97226,0.189,        -2.294278,0.864595,0.189,       -2.289165,0.898214,0.216,
+       -2.2836,0.9348,0.225,   -2.420025,1.037044,0.225,       -2.434329,1.003283,0.216,
+       -2.434329,1.003283,0.216,       -2.289165,0.898214,0.216,       -2.2836,0.9348,0.225,
+       -2.278035,0.971386,0.216,       -2.405721,1.070804,0.216,       -2.420025,1.037044,0.225,
+       -2.420025,1.037044,0.225,       -2.2836,0.9348,0.225,   -2.278035,0.971386,0.216,
+       -2.272922,1.005005,0.189,       -2.392576,1.101828,0.189,       -2.405721,1.070804,0.216,
+       -2.405721,1.070804,0.216,       -2.278035,0.971386,0.216,       -2.272922,1.005005,0.189,
+       -2.26871,1.032691,0.144,        -2.381752,1.127376,0.144,       -2.392576,1.101828,0.189,
+       -2.392576,1.101828,0.189,       -2.272922,1.005005,0.189,       -2.26871,1.032691,0.144,
+       -2.265853,1.051478,0.081,       -2.374406,1.144713,0.081,       -2.381752,1.127376,0.144,
+       -2.381752,1.127376,0.144,       -2.26871,1.032691,0.144,        -2.265853,1.051478,0.081,
+       -2.2648,1.0584,0,       -2.3717,1.1511,0,       -2.374406,1.144713,0.081,
+       -2.374406,1.144713,0.081,       -2.265853,1.051478,0.081,       -2.2648,1.0584,0,
+       -2.113835,0.711032,0.081,       -2.301347,0.818122,0.081,       -2.3024,0.8112,0,
+       -2.3024,0.8112,0,       -2.11305,0.703463,0,    -2.113835,0.711032,0.081,
+       -2.115967,0.731578,0.144,       -2.29849,0.836909,0.144,        -2.301347,0.818122,0.081,
+       -2.301347,0.818122,0.081,       -2.113835,0.711032,0.081,       -2.115967,0.731578,0.144,
+       -2.119109,0.761855,0.189,       -2.294278,0.864595,0.189,       -2.29849,0.836909,0.144,
+       -2.29849,0.836909,0.144,        -2.115967,0.731578,0.144,       -2.119109,0.761855,0.189,
+       -2.122924,0.798621,0.216,       -2.289165,0.898214,0.216,       -2.294278,0.864595,0.189,
+       -2.294278,0.864595,0.189,       -2.119109,0.761855,0.189,       -2.122924,0.798621,0.216,
+       -2.127075,0.838631,0.225,       -2.2836,0.9348,0.225,   -2.289165,0.898214,0.216,
+       -2.289165,0.898214,0.216,       -2.122924,0.798621,0.216,       -2.127075,0.838631,0.225,
+       -2.131226,0.878641,0.216,       -2.278035,0.971386,0.216,       -2.2836,0.9348,0.225,
+       -2.2836,0.9348,0.225,   -2.127075,0.838631,0.225,       -2.131226,0.878641,0.216,
+       -2.135041,0.915407,0.189,       -2.272922,1.005005,0.189,       -2.278035,0.971386,0.216,
+       -2.278035,0.971386,0.216,       -2.131226,0.878641,0.216,       -2.135041,0.915407,0.189,
+       -2.138183,0.945685,0.144,       -2.26871,1.032691,0.144,        -2.272922,1.005005,0.189,
+       -2.272922,1.005005,0.189,       -2.135041,0.915407,0.189,       -2.138183,0.945685,0.144,
+       -2.140315,0.966231,0.081,       -2.265853,1.051478,0.081,       -2.26871,1.032691,0.144,
+       -2.26871,1.032691,0.144,        -2.138183,0.945685,0.144,       -2.140315,0.966231,0.081,
+       -2.1411,0.9738,0,       -2.2648,1.0584,0,       -2.265853,1.051478,0.081,
+       -2.265853,1.051478,0.081,       -2.140315,0.966231,0.081,       -2.1411,0.9738,0,
+       -1.9028,0.6084,0.081,   -2.113835,0.711032,0.081,       -2.11305,0.703463,0,
+       -2.11305,0.703463,0,    -1.9,0.6,0,     -1.9028,0.6084,0.081,
+       -1.9104,0.6312,0.144,   -2.115967,0.731578,0.144,       -2.113835,0.711032,0.081,
+       -2.113835,0.711032,0.081,       -1.9028,0.6084,0.081,   -1.9104,0.6312,0.144,
+       -1.9216,0.6648,0.189,   -2.119109,0.761855,0.189,       -2.115967,0.731578,0.144,
+       -2.115967,0.731578,0.144,       -1.9104,0.6312,0.144,   -1.9216,0.6648,0.189,
+       -1.9352,0.7056,0.216,   -2.122924,0.798621,0.216,       -2.119109,0.761855,0.189,
+       -2.119109,0.761855,0.189,       -1.9216,0.6648,0.189,   -1.9352,0.7056,0.216,
+       -1.95,0.75,0.225,       -2.127075,0.838631,0.225,       -2.122924,0.798621,0.216,
+       -2.122924,0.798621,0.216,       -1.9352,0.7056,0.216,   -1.95,0.75,0.225,
+       -1.9648,0.7944,0.216,   -2.131226,0.878641,0.216,       -2.127075,0.838631,0.225,
+       -2.127075,0.838631,0.225,       -1.95,0.75,0.225,       -1.9648,0.7944,0.216,
+       -1.9784,0.8352,0.189,   -2.135041,0.915407,0.189,       -2.131226,0.878641,0.216,
+       -2.131226,0.878641,0.216,       -1.9648,0.7944,0.216,   -1.9784,0.8352,0.189,
+       -1.9896,0.8688,0.144,   -2.138183,0.945685,0.144,       -2.135041,0.915407,0.189,
+       -2.135041,0.915407,0.189,       -1.9784,0.8352,0.189,   -1.9896,0.8688,0.144,
+       -1.9972,0.8916,0.081,   -2.140315,0.966231,0.081,       -2.138183,0.945685,0.144,
+       -2.138183,0.945685,0.144,       -1.9896,0.8688,0.144,   -1.9972,0.8916,0.081,
+       -2,0.9,0,       -2.1411,0.9738,0,       -2.140315,0.966231,0.081,
+       -2.140315,0.966231,0.081,       -1.9972,0.8916,0.081,   -2,0.9,0,
+       1.939394,1.423221,-0.1751,      1.7,1.4019,-0.1782,     1.7,1.425,0,
+       1.7,1.425,0,    1.9359,1.4442,0,        1.939394,1.423221,-0.1751,
+       1.948879,1.366278,-0.31129,     1.7,1.3392,-0.3168,     1.7,1.4019,-0.1782,
+       1.7,1.4019,-0.1782,     1.939394,1.423221,-0.1751,      1.948879,1.366278,-0.31129,
+       1.962857,1.282362,-0.408568,    1.7,1.2468,-0.4158,     1.7,1.3392,-0.3168,
+       1.7,1.3392,-0.3168,     1.948879,1.366278,-0.31129,     1.962857,1.282362,-0.408568,
+       1.97983,1.180464,-0.466934,     1.7,1.1346,-0.4752,     1.7,1.2468,-0.4158,
+       1.7,1.2468,-0.4158,     1.962857,1.282362,-0.408568,    1.97983,1.180464,-0.466934,
+       1.9983,1.069575,-0.48639,       1.7,1.0125,-0.495,      1.7,1.1346,-0.4752,
+       1.7,1.1346,-0.4752,     1.97983,1.180464,-0.466934,     1.9983,1.069575,-0.48639,
+       2.01677,0.958686,-0.466934,     1.7,0.8904,-0.4752,     1.7,1.0125,-0.495,
+       1.7,1.0125,-0.495,      1.9983,1.069575,-0.48639,       2.01677,0.958686,-0.466934,
+       2.033743,0.856788,-0.408568,    1.7,0.7782,-0.4158,     1.7,0.8904,-0.4752,
+       1.7,0.8904,-0.4752,     2.01677,0.958686,-0.466934,     2.033743,0.856788,-0.408568,
+       2.047721,0.772872,-0.31129,     1.7,0.6858,-0.3168,     1.7,0.7782,-0.4158,
+       1.7,0.7782,-0.4158,     2.033743,0.856788,-0.408568,    2.047721,0.772872,-0.31129,
+       2.057206,0.715929,-0.1751,      1.7,0.6231,-0.1782,     1.7,0.6858,-0.3168,
+       1.7,0.6858,-0.3168,     2.047721,0.772872,-0.31129,     2.057206,0.715929,-0.1751,
+       2.0607,0.69495,0,       1.7,0.6,0,      1.7,0.6231,-0.1782,
+       1.7,0.6231,-0.1782,     2.057206,0.715929,-0.1751,      2.0607,0.69495,0,
+       2.116979,1.47912,-0.166687,     1.939394,1.423221,-0.1751,      1.9359,1.4442,0,
+       1.9359,1.4442,0,        2.1112,1.4976,0,        2.116979,1.47912,-0.166687,
+       2.132666,1.42896,-0.296333,     1.948879,1.366278,-0.31129,     1.939394,1.423221,-0.1751,
+       1.939394,1.423221,-0.1751,      2.116979,1.47912,-0.166687,     2.132666,1.42896,-0.296333,
+       2.155782,1.35504,-0.388937,     1.962857,1.282362,-0.408568,    1.948879,1.366278,-0.31129,
+       1.948879,1.366278,-0.31129,     2.132666,1.42896,-0.296333,     2.155782,1.35504,-0.388937,
+       2.183853,1.26528,-0.444499,     1.97983,1.180464,-0.466934,     1.962857,1.282362,-0.408568,
+       1.962857,1.282362,-0.408568,    2.155782,1.35504,-0.388937,     2.183853,1.26528,-0.444499,
+       2.2144,1.1676,-0.46302, 1.9983,1.069575,-0.48639,       1.97983,1.180464,-0.466934,
+       1.97983,1.180464,-0.466934,     2.183853,1.26528,-0.444499,     2.2144,1.1676,-0.46302,
+       2.244947,1.06992,-0.444499,     2.01677,0.958686,-0.466934,     1.9983,1.069575,-0.48639,
+       1.9983,1.069575,-0.48639,       2.2144,1.1676,-0.46302, 2.244947,1.06992,-0.444499,
+       2.273018,0.98016,-0.388937,     2.033743,0.856788,-0.408568,    2.01677,0.958686,-0.466934,
+       2.01677,0.958686,-0.466934,     2.244947,1.06992,-0.444499,     2.273018,0.98016,-0.388937,
+       2.296134,0.90624,-0.296333,     2.047721,0.772872,-0.31129,     2.033743,0.856788,-0.408568,
+       2.033743,0.856788,-0.408568,    2.273018,0.98016,-0.388937,     2.296134,0.90624,-0.296333,
+       2.311821,0.85608,-0.166687,     2.057206,0.715929,-0.1751,      2.047721,0.772872,-0.31129,
+       2.047721,0.772872,-0.31129,     2.296134,0.90624,-0.296333,     2.311821,0.85608,-0.166687,
+       2.3176,0.8376,0,        2.0607,0.69495,0,       2.057206,0.715929,-0.1751,
+       2.057206,0.715929,-0.1751,      2.311821,0.85608,-0.166687,     2.3176,0.8376,0,
+       2.244457,1.563171,-0.154289,    2.116979,1.47912,-0.166687,     2.1112,1.4976,0,
+       2.1112,1.4976,0,        2.2373,1.5789,0,        2.244457,1.563171,-0.154289,
+       2.263882,1.520478,-0.274291,    2.132666,1.42896,-0.296333,     2.116979,1.47912,-0.166687,
+       2.116979,1.47912,-0.166687,     2.244457,1.563171,-0.154289,    2.263882,1.520478,-0.274291,
+       2.29251,1.457562,-0.360007,     2.155782,1.35504,-0.388937,     2.132666,1.42896,-0.296333,
+       2.132666,1.42896,-0.296333,     2.263882,1.520478,-0.274291,    2.29251,1.457562,-0.360007,
+       2.327271,1.381164,-0.411437,    2.183853,1.26528,-0.444499,     2.155782,1.35504,-0.388937,
+       2.155782,1.35504,-0.388937,     2.29251,1.457562,-0.360007,     2.327271,1.381164,-0.411437,
+       2.3651,1.298025,-0.42858,       2.2144,1.1676,-0.46302, 2.183853,1.26528,-0.444499,
+       2.183853,1.26528,-0.444499,     2.327271,1.381164,-0.411437,    2.3651,1.298025,-0.42858,
+       2.402929,1.214886,-0.411437,    2.244947,1.06992,-0.444499,     2.2144,1.1676,-0.46302,
+       2.2144,1.1676,-0.46302, 2.3651,1.298025,-0.42858,       2.402929,1.214886,-0.411437,
+       2.43769,1.138488,-0.360007,     2.273018,0.98016,-0.388937,     2.244947,1.06992,-0.444499,
+       2.244947,1.06992,-0.444499,     2.402929,1.214886,-0.411437,    2.43769,1.138488,-0.360007,
+       2.466318,1.075572,-0.274291,    2.296134,0.90624,-0.296333,     2.273018,0.98016,-0.388937,
+       2.273018,0.98016,-0.388937,     2.43769,1.138488,-0.360007,     2.466318,1.075572,-0.274291,
+       2.485743,1.032879,-0.154289,    2.311821,0.85608,-0.166687,     2.296134,0.90624,-0.296333,
+       2.296134,0.90624,-0.296333,     2.466318,1.075572,-0.274291,    2.485743,1.032879,-0.154289,
+       2.4929,1.01715,0,       2.3176,0.8376,0,        2.311821,0.85608,-0.166687,
+       2.311821,0.85608,-0.166687,     2.485743,1.032879,-0.154289,    2.4929,1.01715,0,
+       2.33353,1.668948,-0.139234,     2.244457,1.563171,-0.154289,    2.2373,1.5789,0,
+       2.2373,1.5789,0,        2.3256,1.6818,0,        2.33353,1.668948,-0.139234,
+       2.355053,1.634064,-0.247526,    2.263882,1.520478,-0.274291,    2.244457,1.563171,-0.154289,
+       2.244457,1.563171,-0.154289,    2.33353,1.668948,-0.139234,     2.355053,1.634064,-0.247526,
+       2.386771,1.582656,-0.324878,    2.29251,1.457562,-0.360007,     2.263882,1.520478,-0.274291,
+       2.263882,1.520478,-0.274291,    2.355053,1.634064,-0.247526,    2.386771,1.582656,-0.324878,
+       2.425286,1.520232,-0.37129,     2.327271,1.381164,-0.411437,    2.29251,1.457562,-0.360007,
+       2.29251,1.457562,-0.360007,     2.386771,1.582656,-0.324878,    2.425286,1.520232,-0.37129,
+       2.4672,1.4523,-0.38676, 2.3651,1.298025,-0.42858,       2.327271,1.381164,-0.411437,
+       2.327271,1.381164,-0.411437,    2.425286,1.520232,-0.37129,     2.4672,1.4523,-0.38676,
+       2.509114,1.384368,-0.37129,     2.402929,1.214886,-0.411437,    2.3651,1.298025,-0.42858,
+       2.3651,1.298025,-0.42858,       2.4672,1.4523,-0.38676, 2.509114,1.384368,-0.37129,
+       2.547629,1.321944,-0.324878,    2.43769,1.138488,-0.360007,     2.402929,1.214886,-0.411437,
+       2.402929,1.214886,-0.411437,    2.509114,1.384368,-0.37129,     2.547629,1.321944,-0.324878,
+       2.579347,1.270536,-0.247526,    2.466318,1.075572,-0.274291,    2.43769,1.138488,-0.360007,
+       2.43769,1.138488,-0.360007,     2.547629,1.321944,-0.324878,    2.579347,1.270536,-0.247526,
+       2.60087,1.235652,-0.139234,     2.485743,1.032879,-0.154289,    2.466318,1.075572,-0.274291,
+       2.466318,1.075572,-0.274291,    2.579347,1.270536,-0.247526,    2.60087,1.235652,-0.139234,
+       2.6088,1.2228,0,        2.4929,1.01715,0,       2.485743,1.032879,-0.154289,
+       2.485743,1.032879,-0.154289,    2.60087,1.235652,-0.139234,     2.6088,1.2228,0,
+       2.3959,1.790025,-0.12285,       2.33353,1.668948,-0.139234,     2.3256,1.6818,0,
+       2.3256,1.6818,0,        2.3875,1.8,0,   2.3959,1.790025,-0.12285,
+       2.4187,1.76295,-0.2184, 2.355053,1.634064,-0.247526,    2.33353,1.668948,-0.139234,
+       2.33353,1.668948,-0.139234,     2.3959,1.790025,-0.12285,       2.4187,1.76295,-0.2184,
+       2.4523,1.72305,-0.28665,        2.386771,1.582656,-0.324878,    2.355053,1.634064,-0.247526,
+       2.355053,1.634064,-0.247526,    2.4187,1.76295,-0.2184, 2.4523,1.72305,-0.28665,
+       2.4931,1.6746,-0.3276,  2.425286,1.520232,-0.37129,     2.386771,1.582656,-0.324878,
+       2.386771,1.582656,-0.324878,    2.4523,1.72305,-0.28665,        2.4931,1.6746,-0.3276,
+       2.5375,1.621875,-0.34125,       2.4672,1.4523,-0.38676, 2.425286,1.520232,-0.37129,
+       2.425286,1.520232,-0.37129,     2.4931,1.6746,-0.3276,  2.5375,1.621875,-0.34125,
+       2.5819,1.56915,-0.3276, 2.509114,1.384368,-0.37129,     2.4672,1.4523,-0.38676,
+       2.4672,1.4523,-0.38676, 2.5375,1.621875,-0.34125,       2.5819,1.56915,-0.3276,
+       2.6227,1.5207,-0.28665, 2.547629,1.321944,-0.324878,    2.509114,1.384368,-0.37129,
+       2.509114,1.384368,-0.37129,     2.5819,1.56915,-0.3276, 2.6227,1.5207,-0.28665,
+       2.6563,1.4808,-0.2184,  2.579347,1.270536,-0.247526,    2.547629,1.321944,-0.324878,
+       2.547629,1.321944,-0.324878,    2.6227,1.5207,-0.28665, 2.6563,1.4808,-0.2184,
+       2.6791,1.453725,-0.12285,       2.60087,1.235652,-0.139234,     2.579347,1.270536,-0.247526,
+       2.579347,1.270536,-0.247526,    2.6563,1.4808,-0.2184,  2.6791,1.453725,-0.12285,
+       2.6875,1.44375,0,       2.6088,1.2228,0,        2.60087,1.235652,-0.139234,
+       2.60087,1.235652,-0.139234,     2.6791,1.453725,-0.12285,       2.6875,1.44375,0,
+       2.44327,1.919976,-0.106466,     2.3959,1.790025,-0.12285,       2.3875,1.8,0,
+       2.3875,1.8,0,   2.4344,1.9272,0,        2.44327,1.919976,-0.106466,
+       2.467347,1.900368,-0.189274,    2.4187,1.76295,-0.2184, 2.3959,1.790025,-0.12285,
+       2.3959,1.790025,-0.12285,       2.44327,1.919976,-0.106466,     2.467347,1.900368,-0.189274,
+       2.502829,1.871472,-0.248422,    2.4523,1.72305,-0.28665,        2.4187,1.76295,-0.2184,
+       2.4187,1.76295,-0.2184, 2.467347,1.900368,-0.189274,    2.502829,1.871472,-0.248422,
+       2.545914,1.836384,-0.28391,     2.4931,1.6746,-0.3276,  2.4523,1.72305,-0.28665,
+       2.4523,1.72305,-0.28665,        2.502829,1.871472,-0.248422,    2.545914,1.836384,-0.28391,
+       2.5928,1.7982,-0.29574, 2.5375,1.621875,-0.34125,       2.4931,1.6746,-0.3276,
+       2.4931,1.6746,-0.3276,  2.545914,1.836384,-0.28391,     2.5928,1.7982,-0.29574,
+       2.639686,1.760016,-0.28391,     2.5819,1.56915,-0.3276, 2.5375,1.621875,-0.34125,
+       2.5375,1.621875,-0.34125,       2.5928,1.7982,-0.29574, 2.639686,1.760016,-0.28391,
+       2.682771,1.724928,-0.248422,    2.6227,1.5207,-0.28665, 2.5819,1.56915,-0.3276,
+       2.5819,1.56915,-0.3276, 2.639686,1.760016,-0.28391,     2.682771,1.724928,-0.248422,
+       2.718253,1.696032,-0.189274,    2.6563,1.4808,-0.2184,  2.6227,1.5207,-0.28665,
+       2.6227,1.5207,-0.28665, 2.682771,1.724928,-0.248422,    2.718253,1.696032,-0.189274,
+       2.74233,1.676424,-0.106466,     2.6791,1.453725,-0.12285,       2.6563,1.4808,-0.2184,
+       2.6563,1.4808,-0.2184,  2.718253,1.696032,-0.189274,    2.74233,1.676424,-0.106466,
+       2.7512,1.6692,0,        2.6875,1.44375,0,       2.6791,1.453725,-0.12285,
+       2.6791,1.453725,-0.12285,       2.74233,1.676424,-0.106466,     2.7512,1.6692,0,
+       2.487343,2.052375,-0.091411,    2.44327,1.919976,-0.106466,     2.4344,1.9272,0,
+       2.4344,1.9272,0,        2.4777,2.0571,0,        2.487343,2.052375,-0.091411,
+       2.513518,2.03955,-0.162509,     2.467347,1.900368,-0.189274,    2.44327,1.919976,-0.106466,
+       2.44327,1.919976,-0.106466,     2.487343,2.052375,-0.091411,    2.513518,2.03955,-0.162509,
+       2.55209,2.02065,-0.213293,      2.502829,1.871472,-0.248422,    2.467347,1.900368,-0.189274,
+       2.467347,1.900368,-0.189274,    2.513518,2.03955,-0.162509,     2.55209,2.02065,-0.213293,
+       2.598929,1.9977,-0.243763,      2.545914,1.836384,-0.28391,     2.502829,1.871472,-0.248422,
+       2.502829,1.871472,-0.248422,    2.55209,2.02065,-0.213293,      2.598929,1.9977,-0.243763,
+       2.6499,1.972725,-0.25392,       2.5928,1.7982,-0.29574, 2.545914,1.836384,-0.28391,
+       2.545914,1.836384,-0.28391,     2.598929,1.9977,-0.243763,      2.6499,1.972725,-0.25392,
+       2.700871,1.94775,-0.243763,     2.639686,1.760016,-0.28391,     2.5928,1.7982,-0.29574,
+       2.5928,1.7982,-0.29574, 2.6499,1.972725,-0.25392,       2.700871,1.94775,-0.243763,
+       2.74771,1.9248,-0.213293,       2.682771,1.724928,-0.248422,    2.639686,1.760016,-0.28391,
+       2.639686,1.760016,-0.28391,     2.700871,1.94775,-0.243763,     2.74771,1.9248,-0.213293,
+       2.786282,1.9059,-0.162509,      2.718253,1.696032,-0.189274,    2.682771,1.724928,-0.248422,
+       2.682771,1.724928,-0.248422,    2.74771,1.9248,-0.213293,       2.786282,1.9059,-0.162509,
+       2.812457,1.893075,-0.091411,    2.74233,1.676424,-0.106466,     2.718253,1.696032,-0.189274,
+       2.718253,1.696032,-0.189274,    2.786282,1.9059,-0.162509,      2.812457,1.893075,-0.091411,
+       2.8221,1.88835,0,       2.7512,1.6692,0,        2.74233,1.676424,-0.106466,
+       2.74233,1.676424,-0.106466,     2.812457,1.893075,-0.091411,    2.8221,1.88835,0,
+       2.539821,2.180796,-0.079013,    2.487343,2.052375,-0.091411,    2.4777,2.0571,0,
+       2.4777,2.0571,0,        2.5288,2.1834,0,        2.539821,2.180796,-0.079013,
+       2.569734,2.173728,-0.140467,    2.513518,2.03955,-0.162509,     2.487343,2.052375,-0.091411,
+       2.487343,2.052375,-0.091411,    2.539821,2.180796,-0.079013,    2.569734,2.173728,-0.140467,
+       2.613818,2.163312,-0.184363,    2.55209,2.02065,-0.213293,      2.513518,2.03955,-0.162509,
+       2.513518,2.03955,-0.162509,     2.569734,2.173728,-0.140467,    2.613818,2.163312,-0.184363,
+       2.667347,2.150664,-0.210701,    2.598929,1.9977,-0.243763,      2.55209,2.02065,-0.213293,
+       2.55209,2.02065,-0.213293,      2.613818,2.163312,-0.184363,    2.667347,2.150664,-0.210701,
+       2.7256,2.1369,-0.21948, 2.6499,1.972725,-0.25392,       2.598929,1.9977,-0.243763,
+       2.598929,1.9977,-0.243763,      2.667347,2.150664,-0.210701,    2.7256,2.1369,-0.21948,
+       2.783853,2.123136,-0.210701,    2.700871,1.94775,-0.243763,     2.6499,1.972725,-0.25392,
+       2.6499,1.972725,-0.25392,       2.7256,2.1369,-0.21948, 2.783853,2.123136,-0.210701,
+       2.837382,2.110488,-0.184363,    2.74771,1.9248,-0.213293,       2.700871,1.94775,-0.243763,
+       2.700871,1.94775,-0.243763,     2.783853,2.123136,-0.210701,    2.837382,2.110488,-0.184363,
+       2.881466,2.100072,-0.140467,    2.786282,1.9059,-0.162509,      2.74771,1.9248,-0.213293,
+       2.74771,1.9248,-0.213293,       2.837382,2.110488,-0.184363,    2.881466,2.100072,-0.140467,
+       2.911379,2.093004,-0.079013,    2.812457,1.893075,-0.091411,    2.786282,1.9059,-0.162509,
+       2.786282,1.9059,-0.162509,      2.881466,2.100072,-0.140467,    2.911379,2.093004,-0.079013,
+       2.9224,2.0904,0,        2.8221,1.88835,0,       2.812457,1.893075,-0.091411,
+       2.812457,1.893075,-0.091411,    2.911379,2.093004,-0.079013,    2.9224,2.0904,0,
+       2.612406,2.298813,-0.0706,      2.539821,2.180796,-0.079013,    2.5288,2.1834,0,
+       2.5288,2.1834,0,        2.5991,2.2998,0,        2.612406,2.298813,-0.0706,
+       2.648521,2.296134,-0.12551,     2.569734,2.173728,-0.140467,    2.539821,2.180796,-0.079013,
+       2.539821,2.180796,-0.079013,    2.612406,2.298813,-0.0706,      2.648521,2.296134,-0.12551,
+       2.701743,2.292186,-0.164732,    2.613818,2.163312,-0.184363,    2.569734,2.173728,-0.140467,
+       2.569734,2.173728,-0.140467,    2.648521,2.296134,-0.12551,     2.701743,2.292186,-0.164732,
+       2.76637,2.287392,-0.188266,     2.667347,2.150664,-0.210701,    2.613818,2.163312,-0.184363,
+       2.613818,2.163312,-0.184363,    2.701743,2.292186,-0.164732,    2.76637,2.287392,-0.188266,
+       2.8367,2.282175,-0.19611,       2.7256,2.1369,-0.21948, 2.667347,2.150664,-0.210701,
+       2.667347,2.150664,-0.210701,    2.76637,2.287392,-0.188266,     2.8367,2.282175,-0.19611,
+       2.90703,2.276958,-0.188266,     2.783853,2.123136,-0.210701,    2.7256,2.1369,-0.21948,
+       2.7256,2.1369,-0.21948, 2.8367,2.282175,-0.19611,       2.90703,2.276958,-0.188266,
+       2.971657,2.272164,-0.164732,    2.837382,2.110488,-0.184363,    2.783853,2.123136,-0.210701,
+       2.783853,2.123136,-0.210701,    2.90703,2.276958,-0.188266,     2.971657,2.272164,-0.164732,
+       3.024879,2.268216,-0.12551,     2.881466,2.100072,-0.140467,    2.837382,2.110488,-0.184363,
+       2.837382,2.110488,-0.184363,    2.971657,2.272164,-0.164732,    3.024879,2.268216,-0.12551,
+       3.060994,2.265537,-0.0706,      2.911379,2.093004,-0.079013,    2.881466,2.100072,-0.140467,
+       2.881466,2.100072,-0.140467,    3.024879,2.268216,-0.12551,     3.060994,2.265537,-0.0706,
+       3.0743,2.26455,0,       2.9224,2.0904,0,        2.911379,2.093004,-0.079013,
+       2.911379,2.093004,-0.079013,    3.060994,2.265537,-0.0706,      3.0743,2.26455,0,
+       2.7168,2.4,-0.0675,     2.612406,2.298813,-0.0706,      2.5991,2.2998,0,
+       2.5991,2.2998,0,        2.7,2.4,0,      2.7168,2.4,-0.0675,
+       2.7624,2.4,-0.12,       2.648521,2.296134,-0.12551,     2.612406,2.298813,-0.0706,
+       2.612406,2.298813,-0.0706,      2.7168,2.4,-0.0675,     2.7624,2.4,-0.12,
+       2.8296,2.4,-0.1575,     2.701743,2.292186,-0.164732,    2.648521,2.296134,-0.12551,
+       2.648521,2.296134,-0.12551,     2.7624,2.4,-0.12,       2.8296,2.4,-0.1575,
+       2.9112,2.4,-0.18,       2.76637,2.287392,-0.188266,     2.701743,2.292186,-0.164732,
+       2.701743,2.292186,-0.164732,    2.8296,2.4,-0.1575,     2.9112,2.4,-0.18,
+       3,2.4,-0.1875,  2.8367,2.282175,-0.19611,       2.76637,2.287392,-0.188266,
+       2.76637,2.287392,-0.188266,     2.9112,2.4,-0.18,       3,2.4,-0.1875,
+       3.0888,2.4,-0.18,       2.90703,2.276958,-0.188266,     2.8367,2.282175,-0.19611,
+       2.8367,2.282175,-0.19611,       3,2.4,-0.1875,  3.0888,2.4,-0.18,
+       3.1704,2.4,-0.1575,     2.971657,2.272164,-0.164732,    2.90703,2.276958,-0.188266,
+       2.90703,2.276958,-0.188266,     3.0888,2.4,-0.18,       3.1704,2.4,-0.1575,
+       3.2376,2.4,-0.12,       3.024879,2.268216,-0.12551,     2.971657,2.272164,-0.164732,
+       2.971657,2.272164,-0.164732,    3.1704,2.4,-0.1575,     3.2376,2.4,-0.12,
+       3.2832,2.4,-0.0675,     3.060994,2.265537,-0.0706,      3.024879,2.268216,-0.12551,
+       3.024879,2.268216,-0.12551,     3.2376,2.4,-0.12,       3.2832,2.4,-0.0675,
+       3.3,2.4,0,      3.0743,2.26455,0,       3.060994,2.265537,-0.0706,
+       3.060994,2.265537,-0.0706,      3.2832,2.4,-0.0675,     3.3,2.4,0,
+       2.057206,0.715929,0.1751,       1.7,0.6231,0.1782,      1.7,0.6,0,
+       1.7,0.6,0,      2.0607,0.69495,0,       2.057206,0.715929,0.1751,
+       2.047721,0.772872,0.31129,      1.7,0.6858,0.3168,      1.7,0.6231,0.1782,
+       1.7,0.6231,0.1782,      2.057206,0.715929,0.1751,       2.047721,0.772872,0.31129,
+       2.033743,0.856788,0.408568,     1.7,0.7782,0.4158,      1.7,0.6858,0.3168,
+       1.7,0.6858,0.3168,      2.047721,0.772872,0.31129,      2.033743,0.856788,0.408568,
+       2.01677,0.958686,0.466934,      1.7,0.8904,0.4752,      1.7,0.7782,0.4158,
+       1.7,0.7782,0.4158,      2.033743,0.856788,0.408568,     2.01677,0.958686,0.466934,
+       1.9983,1.069575,0.48639,        1.7,1.0125,0.495,       1.7,0.8904,0.4752,
+       1.7,0.8904,0.4752,      2.01677,0.958686,0.466934,      1.9983,1.069575,0.48639,
+       1.97983,1.180464,0.466934,      1.7,1.1346,0.4752,      1.7,1.0125,0.495,
+       1.7,1.0125,0.495,       1.9983,1.069575,0.48639,        1.97983,1.180464,0.466934,
+       1.962857,1.282362,0.408568,     1.7,1.2468,0.4158,      1.7,1.1346,0.4752,
+       1.7,1.1346,0.4752,      1.97983,1.180464,0.466934,      1.962857,1.282362,0.408568,
+       1.948879,1.366278,0.31129,      1.7,1.3392,0.3168,      1.7,1.2468,0.4158,
+       1.7,1.2468,0.4158,      1.962857,1.282362,0.408568,     1.948879,1.366278,0.31129,
+       1.939394,1.423221,0.1751,       1.7,1.4019,0.1782,      1.7,1.3392,0.3168,
+       1.7,1.3392,0.3168,      1.948879,1.366278,0.31129,      1.939394,1.423221,0.1751,
+       1.9359,1.4442,0,        1.7,1.425,0,    1.7,1.4019,0.1782,
+       1.7,1.4019,0.1782,      1.939394,1.423221,0.1751,       1.9359,1.4442,0,
+       2.311821,0.85608,0.166687,      2.057206,0.715929,0.1751,       2.0607,0.69495,0,
+       2.0607,0.69495,0,       2.3176,0.8376,0,        2.311821,0.85608,0.166687,
+       2.296134,0.90624,0.296333,      2.047721,0.772872,0.31129,      2.057206,0.715929,0.1751,
+       2.057206,0.715929,0.1751,       2.311821,0.85608,0.166687,      2.296134,0.90624,0.296333,
+       2.273018,0.98016,0.388937,      2.033743,0.856788,0.408568,     2.047721,0.772872,0.31129,
+       2.047721,0.772872,0.31129,      2.296134,0.90624,0.296333,      2.273018,0.98016,0.388937,
+       2.244947,1.06992,0.444499,      2.01677,0.958686,0.466934,      2.033743,0.856788,0.408568,
+       2.033743,0.856788,0.408568,     2.273018,0.98016,0.388937,      2.244947,1.06992,0.444499,
+       2.2144,1.1676,0.46302,  1.9983,1.069575,0.48639,        2.01677,0.958686,0.466934,
+       2.01677,0.958686,0.466934,      2.244947,1.06992,0.444499,      2.2144,1.1676,0.46302,
+       2.183853,1.26528,0.444499,      1.97983,1.180464,0.466934,      1.9983,1.069575,0.48639,
+       1.9983,1.069575,0.48639,        2.2144,1.1676,0.46302,  2.183853,1.26528,0.444499,
+       2.155782,1.35504,0.388937,      1.962857,1.282362,0.408568,     1.97983,1.180464,0.466934,
+       1.97983,1.180464,0.466934,      2.183853,1.26528,0.444499,      2.155782,1.35504,0.388937,
+       2.132666,1.42896,0.296333,      1.948879,1.366278,0.31129,      1.962857,1.282362,0.408568,
+       1.962857,1.282362,0.408568,     2.155782,1.35504,0.388937,      2.132666,1.42896,0.296333,
+       2.116979,1.47912,0.166687,      1.939394,1.423221,0.1751,       1.948879,1.366278,0.31129,
+       1.948879,1.366278,0.31129,      2.132666,1.42896,0.296333,      2.116979,1.47912,0.166687,
+       2.1112,1.4976,0,        1.9359,1.4442,0,        1.939394,1.423221,0.1751,
+       1.939394,1.423221,0.1751,       2.116979,1.47912,0.166687,      2.1112,1.4976,0,
+       2.485743,1.032879,0.154289,     2.311821,0.85608,0.166687,      2.3176,0.8376,0,
+       2.3176,0.8376,0,        2.4929,1.01715,0,       2.485743,1.032879,0.154289,
+       2.466318,1.075572,0.274291,     2.296134,0.90624,0.296333,      2.311821,0.85608,0.166687,
+       2.311821,0.85608,0.166687,      2.485743,1.032879,0.154289,     2.466318,1.075572,0.274291,
+       2.43769,1.138488,0.360007,      2.273018,0.98016,0.388937,      2.296134,0.90624,0.296333,
+       2.296134,0.90624,0.296333,      2.466318,1.075572,0.274291,     2.43769,1.138488,0.360007,
+       2.402929,1.214886,0.411437,     2.244947,1.06992,0.444499,      2.273018,0.98016,0.388937,
+       2.273018,0.98016,0.388937,      2.43769,1.138488,0.360007,      2.402929,1.214886,0.411437,
+       2.3651,1.298025,0.42858,        2.2144,1.1676,0.46302,  2.244947,1.06992,0.444499,
+       2.244947,1.06992,0.444499,      2.402929,1.214886,0.411437,     2.3651,1.298025,0.42858,
+       2.327271,1.381164,0.411437,     2.183853,1.26528,0.444499,      2.2144,1.1676,0.46302,
+       2.2144,1.1676,0.46302,  2.3651,1.298025,0.42858,        2.327271,1.381164,0.411437,
+       2.29251,1.457562,0.360007,      2.155782,1.35504,0.388937,      2.183853,1.26528,0.444499,
+       2.183853,1.26528,0.444499,      2.327271,1.381164,0.411437,     2.29251,1.457562,0.360007,
+       2.263882,1.520478,0.274291,     2.132666,1.42896,0.296333,      2.155782,1.35504,0.388937,
+       2.155782,1.35504,0.388937,      2.29251,1.457562,0.360007,      2.263882,1.520478,0.274291,
+       2.244457,1.563171,0.154289,     2.116979,1.47912,0.166687,      2.132666,1.42896,0.296333,
+       2.132666,1.42896,0.296333,      2.263882,1.520478,0.274291,     2.244457,1.563171,0.154289,
+       2.2373,1.5789,0,        2.1112,1.4976,0,        2.116979,1.47912,0.166687,
+       2.116979,1.47912,0.166687,      2.244457,1.563171,0.154289,     2.2373,1.5789,0,
+       2.60087,1.235652,0.139234,      2.485743,1.032879,0.154289,     2.4929,1.01715,0,
+       2.4929,1.01715,0,       2.6088,1.2228,0,        2.60087,1.235652,0.139234,
+       2.579347,1.270536,0.247526,     2.466318,1.075572,0.274291,     2.485743,1.032879,0.154289,
+       2.485743,1.032879,0.154289,     2.60087,1.235652,0.139234,      2.579347,1.270536,0.247526,
+       2.547629,1.321944,0.324878,     2.43769,1.138488,0.360007,      2.466318,1.075572,0.274291,
+       2.466318,1.075572,0.274291,     2.579347,1.270536,0.247526,     2.547629,1.321944,0.324878,
+       2.509114,1.384368,0.37129,      2.402929,1.214886,0.411437,     2.43769,1.138488,0.360007,
+       2.43769,1.138488,0.360007,      2.547629,1.321944,0.324878,     2.509114,1.384368,0.37129,
+       2.4672,1.4523,0.38676,  2.3651,1.298025,0.42858,        2.402929,1.214886,0.411437,
+       2.402929,1.214886,0.411437,     2.509114,1.384368,0.37129,      2.4672,1.4523,0.38676,
+       2.425286,1.520232,0.37129,      2.327271,1.381164,0.411437,     2.3651,1.298025,0.42858,
+       2.3651,1.298025,0.42858,        2.4672,1.4523,0.38676,  2.425286,1.520232,0.37129,
+       2.386771,1.582656,0.324878,     2.29251,1.457562,0.360007,      2.327271,1.381164,0.411437,
+       2.327271,1.381164,0.411437,     2.425286,1.520232,0.37129,      2.386771,1.582656,0.324878,
+       2.355053,1.634064,0.247526,     2.263882,1.520478,0.274291,     2.29251,1.457562,0.360007,
+       2.29251,1.457562,0.360007,      2.386771,1.582656,0.324878,     2.355053,1.634064,0.247526,
+       2.33353,1.668948,0.139234,      2.244457,1.563171,0.154289,     2.263882,1.520478,0.274291,
+       2.263882,1.520478,0.274291,     2.355053,1.634064,0.247526,     2.33353,1.668948,0.139234,
+       2.3256,1.6818,0,        2.2373,1.5789,0,        2.244457,1.563171,0.154289,
+       2.244457,1.563171,0.154289,     2.33353,1.668948,0.139234,      2.3256,1.6818,0,
+       2.6791,1.453725,0.12285,        2.60087,1.235652,0.139234,      2.6088,1.2228,0,
+       2.6088,1.2228,0,        2.6875,1.44375,0,       2.6791,1.453725,0.12285,
+       2.6563,1.4808,0.2184,   2.579347,1.270536,0.247526,     2.60087,1.235652,0.139234,
+       2.60087,1.235652,0.139234,      2.6791,1.453725,0.12285,        2.6563,1.4808,0.2184,
+       2.6227,1.5207,0.28665,  2.547629,1.321944,0.324878,     2.579347,1.270536,0.247526,
+       2.579347,1.270536,0.247526,     2.6563,1.4808,0.2184,   2.6227,1.5207,0.28665,
+       2.5819,1.56915,0.3276,  2.509114,1.384368,0.37129,      2.547629,1.321944,0.324878,
+       2.547629,1.321944,0.324878,     2.6227,1.5207,0.28665,  2.5819,1.56915,0.3276,
+       2.5375,1.621875,0.34125,        2.4672,1.4523,0.38676,  2.509114,1.384368,0.37129,
+       2.509114,1.384368,0.37129,      2.5819,1.56915,0.3276,  2.5375,1.621875,0.34125,
+       2.4931,1.6746,0.3276,   2.425286,1.520232,0.37129,      2.4672,1.4523,0.38676,
+       2.4672,1.4523,0.38676,  2.5375,1.621875,0.34125,        2.4931,1.6746,0.3276,
+       2.4523,1.72305,0.28665, 2.386771,1.582656,0.324878,     2.425286,1.520232,0.37129,
+       2.425286,1.520232,0.37129,      2.4931,1.6746,0.3276,   2.4523,1.72305,0.28665,
+       2.4187,1.76295,0.2184,  2.355053,1.634064,0.247526,     2.386771,1.582656,0.324878,
+       2.386771,1.582656,0.324878,     2.4523,1.72305,0.28665, 2.4187,1.76295,0.2184,
+       2.3959,1.790025,0.12285,        2.33353,1.668948,0.139234,      2.355053,1.634064,0.247526,
+       2.355053,1.634064,0.247526,     2.4187,1.76295,0.2184,  2.3959,1.790025,0.12285,
+       2.3875,1.8,0,   2.3256,1.6818,0,        2.33353,1.668948,0.139234,
+       2.33353,1.668948,0.139234,      2.3959,1.790025,0.12285,        2.3875,1.8,0,
+       2.74233,1.676424,0.106466,      2.6791,1.453725,0.12285,        2.6875,1.44375,0,
+       2.6875,1.44375,0,       2.7512,1.6692,0,        2.74233,1.676424,0.106466,
+       2.718253,1.696032,0.189274,     2.6563,1.4808,0.2184,   2.6791,1.453725,0.12285,
+       2.6791,1.453725,0.12285,        2.74233,1.676424,0.106466,      2.718253,1.696032,0.189274,
+       2.682771,1.724928,0.248422,     2.6227,1.5207,0.28665,  2.6563,1.4808,0.2184,
+       2.6563,1.4808,0.2184,   2.718253,1.696032,0.189274,     2.682771,1.724928,0.248422,
+       2.639686,1.760016,0.28391,      2.5819,1.56915,0.3276,  2.6227,1.5207,0.28665,
+       2.6227,1.5207,0.28665,  2.682771,1.724928,0.248422,     2.639686,1.760016,0.28391,
+       2.5928,1.7982,0.29574,  2.5375,1.621875,0.34125,        2.5819,1.56915,0.3276,
+       2.5819,1.56915,0.3276,  2.639686,1.760016,0.28391,      2.5928,1.7982,0.29574,
+       2.545914,1.836384,0.28391,      2.4931,1.6746,0.3276,   2.5375,1.621875,0.34125,
+       2.5375,1.621875,0.34125,        2.5928,1.7982,0.29574,  2.545914,1.836384,0.28391,
+       2.502829,1.871472,0.248422,     2.4523,1.72305,0.28665, 2.4931,1.6746,0.3276,
+       2.4931,1.6746,0.3276,   2.545914,1.836384,0.28391,      2.502829,1.871472,0.248422,
+       2.467347,1.900368,0.189274,     2.4187,1.76295,0.2184,  2.4523,1.72305,0.28665,
+       2.4523,1.72305,0.28665, 2.502829,1.871472,0.248422,     2.467347,1.900368,0.189274,
+       2.44327,1.919976,0.106466,      2.3959,1.790025,0.12285,        2.4187,1.76295,0.2184,
+       2.4187,1.76295,0.2184,  2.467347,1.900368,0.189274,     2.44327,1.919976,0.106466,
+       2.4344,1.9272,0,        2.3875,1.8,0,   2.3959,1.790025,0.12285,
+       2.3959,1.790025,0.12285,        2.44327,1.919976,0.106466,      2.4344,1.9272,0,
+       2.812457,1.893075,0.091411,     2.74233,1.676424,0.106466,      2.7512,1.6692,0,
+       2.7512,1.6692,0,        2.8221,1.88835,0,       2.812457,1.893075,0.091411,
+       2.786282,1.9059,0.162509,       2.718253,1.696032,0.189274,     2.74233,1.676424,0.106466,
+       2.74233,1.676424,0.106466,      2.812457,1.893075,0.091411,     2.786282,1.9059,0.162509,
+       2.74771,1.9248,0.213293,        2.682771,1.724928,0.248422,     2.718253,1.696032,0.189274,
+       2.718253,1.696032,0.189274,     2.786282,1.9059,0.162509,       2.74771,1.9248,0.213293,
+       2.700871,1.94775,0.243763,      2.639686,1.760016,0.28391,      2.682771,1.724928,0.248422,
+       2.682771,1.724928,0.248422,     2.74771,1.9248,0.213293,        2.700871,1.94775,0.243763,
+       2.6499,1.972725,0.25392,        2.5928,1.7982,0.29574,  2.639686,1.760016,0.28391,
+       2.639686,1.760016,0.28391,      2.700871,1.94775,0.243763,      2.6499,1.972725,0.25392,
+       2.598929,1.9977,0.243763,       2.545914,1.836384,0.28391,      2.5928,1.7982,0.29574,
+       2.5928,1.7982,0.29574,  2.6499,1.972725,0.25392,        2.598929,1.9977,0.243763,
+       2.55209,2.02065,0.213293,       2.502829,1.871472,0.248422,     2.545914,1.836384,0.28391,
+       2.545914,1.836384,0.28391,      2.598929,1.9977,0.243763,       2.55209,2.02065,0.213293,
+       2.513518,2.03955,0.162509,      2.467347,1.900368,0.189274,     2.502829,1.871472,0.248422,
+       2.502829,1.871472,0.248422,     2.55209,2.02065,0.213293,       2.513518,2.03955,0.162509,
+       2.487343,2.052375,0.091411,     2.44327,1.919976,0.106466,      2.467347,1.900368,0.189274,
+       2.467347,1.900368,0.189274,     2.513518,2.03955,0.162509,      2.487343,2.052375,0.091411,
+       2.4777,2.0571,0,        2.4344,1.9272,0,        2.44327,1.919976,0.106466,
+       2.44327,1.919976,0.106466,      2.487343,2.052375,0.091411,     2.4777,2.0571,0,
+       2.911379,2.093004,0.079013,     2.812457,1.893075,0.091411,     2.8221,1.88835,0,
+       2.8221,1.88835,0,       2.9224,2.0904,0,        2.911379,2.093004,0.079013,
+       2.881466,2.100072,0.140467,     2.786282,1.9059,0.162509,       2.812457,1.893075,0.091411,
+       2.812457,1.893075,0.091411,     2.911379,2.093004,0.079013,     2.881466,2.100072,0.140467,
+       2.837382,2.110488,0.184363,     2.74771,1.9248,0.213293,        2.786282,1.9059,0.162509,
+       2.786282,1.9059,0.162509,       2.881466,2.100072,0.140467,     2.837382,2.110488,0.184363,
+       2.783853,2.123136,0.210701,     2.700871,1.94775,0.243763,      2.74771,1.9248,0.213293,
+       2.74771,1.9248,0.213293,        2.837382,2.110488,0.184363,     2.783853,2.123136,0.210701,
+       2.7256,2.1369,0.21948,  2.6499,1.972725,0.25392,        2.700871,1.94775,0.243763,
+       2.700871,1.94775,0.243763,      2.783853,2.123136,0.210701,     2.7256,2.1369,0.21948,
+       2.667347,2.150664,0.210701,     2.598929,1.9977,0.243763,       2.6499,1.972725,0.25392,
+       2.6499,1.972725,0.25392,        2.7256,2.1369,0.21948,  2.667347,2.150664,0.210701,
+       2.613818,2.163312,0.184363,     2.55209,2.02065,0.213293,       2.598929,1.9977,0.243763,
+       2.598929,1.9977,0.243763,       2.667347,2.150664,0.210701,     2.613818,2.163312,0.184363,
+       2.569734,2.173728,0.140467,     2.513518,2.03955,0.162509,      2.55209,2.02065,0.213293,
+       2.55209,2.02065,0.213293,       2.613818,2.163312,0.184363,     2.569734,2.173728,0.140467,
+       2.539821,2.180796,0.079013,     2.487343,2.052375,0.091411,     2.513518,2.03955,0.162509,
+       2.513518,2.03955,0.162509,      2.569734,2.173728,0.140467,     2.539821,2.180796,0.079013,
+       2.5288,2.1834,0,        2.4777,2.0571,0,        2.487343,2.052375,0.091411,
+       2.487343,2.052375,0.091411,     2.539821,2.180796,0.079013,     2.5288,2.1834,0,
+       3.060994,2.265537,0.0706,       2.911379,2.093004,0.079013,     2.9224,2.0904,0,
+       2.9224,2.0904,0,        3.0743,2.26455,0,       3.060994,2.265537,0.0706,
+       3.024879,2.268216,0.12551,      2.881466,2.100072,0.140467,     2.911379,2.093004,0.079013,
+       2.911379,2.093004,0.079013,     3.060994,2.265537,0.0706,       3.024879,2.268216,0.12551,
+       2.971657,2.272164,0.164732,     2.837382,2.110488,0.184363,     2.881466,2.100072,0.140467,
+       2.881466,2.100072,0.140467,     3.024879,2.268216,0.12551,      2.971657,2.272164,0.164732,
+       2.90703,2.276958,0.188266,      2.783853,2.123136,0.210701,     2.837382,2.110488,0.184363,
+       2.837382,2.110488,0.184363,     2.971657,2.272164,0.164732,     2.90703,2.276958,0.188266,
+       2.8367,2.282175,0.19611,        2.7256,2.1369,0.21948,  2.783853,2.123136,0.210701,
+       2.783853,2.123136,0.210701,     2.90703,2.276958,0.188266,      2.8367,2.282175,0.19611,
+       2.76637,2.287392,0.188266,      2.667347,2.150664,0.210701,     2.7256,2.1369,0.21948,
+       2.7256,2.1369,0.21948,  2.8367,2.282175,0.19611,        2.76637,2.287392,0.188266,
+       2.701743,2.292186,0.164732,     2.613818,2.163312,0.184363,     2.667347,2.150664,0.210701,
+       2.667347,2.150664,0.210701,     2.76637,2.287392,0.188266,      2.701743,2.292186,0.164732,
+       2.648521,2.296134,0.12551,      2.569734,2.173728,0.140467,     2.613818,2.163312,0.184363,
+       2.613818,2.163312,0.184363,     2.701743,2.292186,0.164732,     2.648521,2.296134,0.12551,
+       2.612406,2.298813,0.0706,       2.539821,2.180796,0.079013,     2.569734,2.173728,0.140467,
+       2.569734,2.173728,0.140467,     2.648521,2.296134,0.12551,      2.612406,2.298813,0.0706,
+       2.5991,2.2998,0,        2.5288,2.1834,0,        2.539821,2.180796,0.079013,
+       2.539821,2.180796,0.079013,     2.612406,2.298813,0.0706,       2.5991,2.2998,0,
+       3.2832,2.4,0.0675,      3.060994,2.265537,0.0706,       3.0743,2.26455,0,
+       3.0743,2.26455,0,       3.3,2.4,0,      3.2832,2.4,0.0675,
+       3.2376,2.4,0.12,        3.024879,2.268216,0.12551,      3.060994,2.265537,0.0706,
+       3.060994,2.265537,0.0706,       3.2832,2.4,0.0675,      3.2376,2.4,0.12,
+       3.1704,2.4,0.1575,      2.971657,2.272164,0.164732,     3.024879,2.268216,0.12551,
+       3.024879,2.268216,0.12551,      3.2376,2.4,0.12,        3.1704,2.4,0.1575,
+       3.0888,2.4,0.18,        2.90703,2.276958,0.188266,      2.971657,2.272164,0.164732,
+       2.971657,2.272164,0.164732,     3.1704,2.4,0.1575,      3.0888,2.4,0.18,
+       3,2.4,0.1875,   2.8367,2.282175,0.19611,        2.90703,2.276958,0.188266,
+       2.90703,2.276958,0.188266,      3.0888,2.4,0.18,        3,2.4,0.1875,
+       2.9112,2.4,0.18,        2.76637,2.287392,0.188266,      2.8367,2.282175,0.19611,
+       2.8367,2.282175,0.19611,        3,2.4,0.1875,   2.9112,2.4,0.18,
+       2.8296,2.4,0.1575,      2.701743,2.292186,0.164732,     2.76637,2.287392,0.188266,
+       2.76637,2.287392,0.188266,      2.9112,2.4,0.18,        2.8296,2.4,0.1575,
+       2.7624,2.4,0.12,        2.648521,2.296134,0.12551,      2.701743,2.292186,0.164732,
+       2.701743,2.292186,0.164732,     2.8296,2.4,0.1575,      2.7624,2.4,0.12,
+       2.7168,2.4,0.0675,      2.612406,2.298813,0.0706,       2.648521,2.296134,0.12551,
+       2.648521,2.296134,0.12551,      2.7624,2.4,0.12,        2.7168,2.4,0.0675,
+       2.7,2.4,0,      2.5991,2.2998,0,        2.612406,2.298813,0.0706,
+       2.612406,2.298813,0.0706,       2.7168,2.4,0.0675,      2.7,2.4,0,
+       2.747407,2.420406,-0.066744,    2.7168,2.4,-0.0675,     2.7,2.4,0,
+       2.7,2.4,0,      2.7298,2.42025,0,       2.747407,2.420406,-0.066744,
+       2.795198,2.420829,-0.118656,    2.7624,2.4,-0.12,       2.7168,2.4,-0.0675,
+       2.7168,2.4,-0.0675,     2.747407,2.420406,-0.066744,    2.795198,2.420829,-0.118656,
+       2.865626,2.421453,-0.155736,    2.8296,2.4,-0.1575,     2.7624,2.4,-0.12,
+       2.7624,2.4,-0.12,       2.795198,2.420829,-0.118656,    2.865626,2.421453,-0.155736,
+       2.951146,2.42221,-0.177984,     2.9112,2.4,-0.18,       2.8296,2.4,-0.1575,
+       2.8296,2.4,-0.1575,     2.865626,2.421453,-0.155736,    2.951146,2.42221,-0.177984,
+       3.044212,2.423034,-0.1854,      3,2.4,-0.1875,  2.9112,2.4,-0.18,
+       2.9112,2.4,-0.18,       2.951146,2.42221,-0.177984,     3.044212,2.423034,-0.1854,
+       3.137279,2.423859,-0.177984,    3.0888,2.4,-0.18,       3,2.4,-0.1875,
+       3,2.4,-0.1875,  3.044212,2.423034,-0.1854,      3.137279,2.423859,-0.177984,
+       3.222799,2.424616,-0.155736,    3.1704,2.4,-0.1575,     3.0888,2.4,-0.18,
+       3.0888,2.4,-0.18,       3.137279,2.423859,-0.177984,    3.222799,2.424616,-0.155736,
+       3.293227,2.42524,-0.118656,     3.2376,2.4,-0.12,       3.1704,2.4,-0.1575,
+       3.1704,2.4,-0.1575,     3.222799,2.424616,-0.155736,    3.293227,2.42524,-0.118656,
+       3.341018,2.425663,-0.066744,    3.2832,2.4,-0.0675,     3.2376,2.4,-0.12,
+       3.2376,2.4,-0.12,       3.293227,2.42524,-0.118656,     3.341018,2.425663,-0.066744,
+       3.358625,2.425819,0,    3.3,2.4,0,      3.2832,2.4,-0.0675,
+       3.2832,2.4,-0.0675,     3.341018,2.425663,-0.066744,    3.358625,2.425819,0,
+       2.776365,2.436302,-0.064692,    2.747407,2.420406,-0.066744,    2.7298,2.42025,0,
+       2.7298,2.42025,0,       2.7584,2.436,0, 2.776365,2.436302,-0.064692,
+       2.825126,2.437123,-0.115008,    2.795198,2.420829,-0.118656,    2.747407,2.420406,-0.066744,
+       2.747407,2.420406,-0.066744,    2.776365,2.436302,-0.064692,    2.825126,2.437123,-0.115008,
+       2.896986,2.438333,-0.150948,    2.865626,2.421453,-0.155736,    2.795198,2.420829,-0.118656,
+       2.795198,2.420829,-0.118656,    2.825126,2.437123,-0.115008,    2.896986,2.438333,-0.150948,
+       2.984243,2.439802,-0.172512,    2.951146,2.42221,-0.177984,     2.865626,2.421453,-0.155736,
+       2.865626,2.421453,-0.155736,    2.896986,2.438333,-0.150948,    2.984243,2.439802,-0.172512,
+       3.0792,2.4414,-0.1797,  3.044212,2.423034,-0.1854,      2.951146,2.42221,-0.177984,
+       2.951146,2.42221,-0.177984,     2.984243,2.439802,-0.172512,    3.0792,2.4414,-0.1797,
+       3.174157,2.442998,-0.172512,    3.137279,2.423859,-0.177984,    3.044212,2.423034,-0.1854,
+       3.044212,2.423034,-0.1854,      3.0792,2.4414,-0.1797,  3.174157,2.442998,-0.172512,
+       3.261414,2.444467,-0.150948,    3.222799,2.424616,-0.155736,    3.137279,2.423859,-0.177984,
+       3.137279,2.423859,-0.177984,    3.174157,2.442998,-0.172512,    3.261414,2.444467,-0.150948,
+       3.333274,2.445677,-0.115008,    3.293227,2.42524,-0.118656,     3.222799,2.424616,-0.155736,
+       3.222799,2.424616,-0.155736,    3.261414,2.444467,-0.150948,    3.333274,2.445677,-0.115008,
+       3.382035,2.446498,-0.064692,    3.341018,2.425663,-0.066744,    3.293227,2.42524,-0.118656,
+       3.293227,2.42524,-0.118656,     3.333274,2.445677,-0.115008,    3.382035,2.446498,-0.064692,
+       3.4,2.4468,0,   3.358625,2.425819,0,    3.341018,2.425663,-0.066744,
+       3.341018,2.425663,-0.066744,    3.382035,2.446498,-0.064692,    3.4,2.4468,0,
+       2.802528,2.44768,-0.061668,     2.776365,2.436302,-0.064692,    2.7584,2.436,0,
+       2.7584,2.436,0, 2.7846,2.44725,0,       2.802528,2.44768,-0.061668,
+       2.851189,2.448847,-0.109632,    2.825126,2.437123,-0.115008,    2.776365,2.436302,-0.064692,
+       2.776365,2.436302,-0.064692,    2.802528,2.44768,-0.061668,     2.851189,2.448847,-0.109632,
+       2.922899,2.450567,-0.143892,    2.896986,2.438333,-0.150948,    2.825126,2.437123,-0.115008,
+       2.825126,2.437123,-0.115008,    2.851189,2.448847,-0.109632,    2.922899,2.450567,-0.143892,
+       3.009977,2.452655,-0.164448,    2.984243,2.439802,-0.172512,    2.896986,2.438333,-0.150948,
+       2.896986,2.438333,-0.150948,    2.922899,2.450567,-0.143892,    3.009977,2.452655,-0.164448,
+       3.104737,2.454928,-0.1713,      3.0792,2.4414,-0.1797,  2.984243,2.439802,-0.172512,
+       2.984243,2.439802,-0.172512,    3.009977,2.452655,-0.164448,    3.104737,2.454928,-0.1713,
+       3.199498,2.457201,-0.164448,    3.174157,2.442998,-0.172512,    3.0792,2.4414,-0.1797,
+       3.0792,2.4414,-0.1797,  3.104737,2.454928,-0.1713,      3.199498,2.457201,-0.164448,
+       3.286576,2.459289,-0.143892,    3.261414,2.444467,-0.150948,    3.174157,2.442998,-0.172512,
+       3.174157,2.442998,-0.172512,    3.199498,2.457201,-0.164448,    3.286576,2.459289,-0.143892,
+       3.358286,2.461009,-0.109632,    3.333274,2.445677,-0.115008,    3.261414,2.444467,-0.150948,
+       3.261414,2.444467,-0.150948,    3.286576,2.459289,-0.143892,    3.358286,2.461009,-0.109632,
+       3.406947,2.462176,-0.061668,    3.382035,2.446498,-0.064692,    3.333274,2.445677,-0.115008,
+       3.333274,2.445677,-0.115008,    3.358286,2.461009,-0.109632,    3.406947,2.462176,-0.061668,
+       3.424875,2.462606,0,    3.4,2.4468,0,   3.382035,2.446498,-0.064692,
+       3.382035,2.446498,-0.064692,    3.406947,2.462176,-0.061668,    3.424875,2.462606,0,
+       2.82475,2.454529,-0.057996,     2.802528,2.44768,-0.061668,     2.7846,2.44725,0,
+       2.7846,2.44725,0,       2.8072,2.454,0, 2.82475,2.454529,-0.057996,
+       2.872387,2.455966,-0.103104,    2.851189,2.448847,-0.109632,    2.802528,2.44768,-0.061668,
+       2.802528,2.44768,-0.061668,     2.82475,2.454529,-0.057996,     2.872387,2.455966,-0.103104,
+       2.942589,2.458082,-0.135324,    2.922899,2.450567,-0.143892,    2.851189,2.448847,-0.109632,
+       2.851189,2.448847,-0.109632,    2.872387,2.455966,-0.103104,    2.942589,2.458082,-0.135324,
+       3.027834,2.460653,-0.154656,    3.009977,2.452655,-0.164448,    2.922899,2.450567,-0.143892,
+       2.922899,2.450567,-0.143892,    2.942589,2.458082,-0.135324,    3.027834,2.460653,-0.154656,
+       3.1206,2.46345,-0.1611, 3.104737,2.454928,-0.1713,      3.009977,2.452655,-0.164448,
+       3.009977,2.452655,-0.164448,    3.027834,2.460653,-0.154656,    3.1206,2.46345,-0.1611,
+       3.213366,2.466247,-0.154656,    3.199498,2.457201,-0.164448,    3.104737,2.454928,-0.1713,
+       3.104737,2.454928,-0.1713,      3.1206,2.46345,-0.1611, 3.213366,2.466247,-0.154656,
+       3.298611,2.468818,-0.135324,    3.286576,2.459289,-0.143892,    3.199498,2.457201,-0.164448,
+       3.199498,2.457201,-0.164448,    3.213366,2.466247,-0.154656,    3.298611,2.468818,-0.135324,
+       3.368813,2.470934,-0.103104,    3.358286,2.461009,-0.109632,    3.286576,2.459289,-0.143892,
+       3.286576,2.459289,-0.143892,    3.298611,2.468818,-0.135324,    3.368813,2.470934,-0.103104,
+       3.41645,2.472371,-0.057996,     3.406947,2.462176,-0.061668,    3.358286,2.461009,-0.109632,
+       3.358286,2.461009,-0.109632,    3.368813,2.470934,-0.103104,    3.41645,2.472371,-0.057996,
+       3.434,2.4729,0, 3.424875,2.462606,0,    3.406947,2.462176,-0.061668,
+       3.406947,2.462176,-0.061668,    3.41645,2.472371,-0.057996,     3.434,2.4729,0,
+       2.841887,2.456841,-0.054,       2.82475,2.454529,-0.057996,     2.8072,2.454,0,
+       2.8072,2.454,0, 2.825,2.45625,0,        2.841887,2.456841,-0.054,
+       2.887725,2.458444,-0.096,       2.872387,2.455966,-0.103104,    2.82475,2.454529,-0.057996,
+       2.82475,2.454529,-0.057996,     2.841887,2.456841,-0.054,       2.887725,2.458444,-0.096,
+       2.955275,2.460806,-0.126,       2.942589,2.458082,-0.135324,    2.872387,2.455966,-0.103104,
+       2.872387,2.455966,-0.103104,    2.887725,2.458444,-0.096,       2.955275,2.460806,-0.126,
+       3.0373,2.463675,-0.144, 3.027834,2.460653,-0.154656,    2.942589,2.458082,-0.135324,
+       2.942589,2.458082,-0.135324,    2.955275,2.460806,-0.126,       3.0373,2.463675,-0.144,
+       3.126562,2.466797,-0.15,        3.1206,2.46345,-0.1611, 3.027834,2.460653,-0.154656,
+       3.027834,2.460653,-0.154656,    3.0373,2.463675,-0.144, 3.126562,2.466797,-0.15,
+       3.215825,2.469919,-0.144,       3.213366,2.466247,-0.154656,    3.1206,2.46345,-0.1611,
+       3.1206,2.46345,-0.1611, 3.126562,2.466797,-0.15,        3.215825,2.469919,-0.144,
+       3.29785,2.472787,-0.126,        3.298611,2.468818,-0.135324,    3.213366,2.466247,-0.154656,
+       3.213366,2.466247,-0.154656,    3.215825,2.469919,-0.144,       3.29785,2.472787,-0.126,
+       3.3654,2.47515,-0.096,  3.368813,2.470934,-0.103104,    3.298611,2.468818,-0.135324,
+       3.298611,2.468818,-0.135324,    3.29785,2.472787,-0.126,        3.3654,2.47515,-0.096,
+       3.411237,2.476753,-0.054,       3.41645,2.472371,-0.057996,     3.368813,2.470934,-0.103104,
+       3.368813,2.470934,-0.103104,    3.3654,2.47515,-0.096,  3.411237,2.476753,-0.054,
+       3.428125,2.477344,0,    3.434,2.4729,0, 3.41645,2.472371,-0.057996,
+       3.41645,2.472371,-0.057996,     3.411237,2.476753,-0.054,       3.428125,2.477344,0,
+       2.852794,2.454605,-0.050004,    2.841887,2.456841,-0.054,       2.825,2.45625,0,
+       2.825,2.45625,0,        2.8368,2.454,0, 2.852794,2.454605,-0.050004,
+       2.896205,2.456246,-0.088896,    2.887725,2.458444,-0.096,       2.841887,2.456841,-0.054,
+       2.841887,2.456841,-0.054,       2.852794,2.454605,-0.050004,    2.896205,2.456246,-0.088896,
+       2.960179,2.458666,-0.116676,    2.955275,2.460806,-0.126,       2.887725,2.458444,-0.096,
+       2.887725,2.458444,-0.096,       2.896205,2.456246,-0.088896,    2.960179,2.458666,-0.116676,
+       3.037862,2.461603,-0.133344,    3.0373,2.463675,-0.144, 2.955275,2.460806,-0.126,
+       2.955275,2.460806,-0.126,       2.960179,2.458666,-0.116676,    3.037862,2.461603,-0.133344,
+       3.1224,2.4648,-0.1389,  3.126562,2.466797,-0.15,        3.0373,2.463675,-0.144,
+       3.0373,2.463675,-0.144, 3.037862,2.461603,-0.133344,    3.1224,2.4648,-0.1389,
+       3.206938,2.467997,-0.133344,    3.215825,2.469919,-0.144,       3.126562,2.466797,-0.15,
+       3.126562,2.466797,-0.15,        3.1224,2.4648,-0.1389,  3.206938,2.467997,-0.133344,
+       3.284621,2.470934,-0.116676,    3.29785,2.472787,-0.126,        3.215825,2.469919,-0.144,
+       3.215825,2.469919,-0.144,       3.206938,2.467997,-0.133344,    3.284621,2.470934,-0.116676,
+       3.348595,2.473354,-0.088896,    3.3654,2.47515,-0.096,  3.29785,2.472787,-0.126,
+       3.29785,2.472787,-0.126,        3.284621,2.470934,-0.116676,    3.348595,2.473354,-0.088896,
+       3.392006,2.474995,-0.050004,    3.411237,2.476753,-0.054,       3.3654,2.47515,-0.096,
+       3.3654,2.47515,-0.096,  3.348595,2.473354,-0.088896,    3.392006,2.474995,-0.050004,
+       3.408,2.4756,0, 3.428125,2.477344,0,    3.411237,2.476753,-0.054,
+       3.411237,2.476753,-0.054,       3.392006,2.474995,-0.050004,    3.408,2.4756,0,
+       2.856323,2.447812,-0.046332,    2.852794,2.454605,-0.050004,    2.8368,2.454,0,
+       2.8368,2.454,0, 2.8414,2.44725,0,       2.856323,2.447812,-0.046332,
+       2.896829,2.449338,-0.082368,    2.896205,2.456246,-0.088896,    2.852794,2.454605,-0.050004,
+       2.852794,2.454605,-0.050004,    2.856323,2.447812,-0.046332,    2.896829,2.449338,-0.082368,
+       2.956523,2.451588,-0.108108,    2.960179,2.458666,-0.116676,    2.896205,2.456246,-0.088896,
+       2.896205,2.456246,-0.088896,    2.896829,2.449338,-0.082368,    2.956523,2.451588,-0.108108,
+       3.029007,2.454319,-0.123552,    3.037862,2.461603,-0.133344,    2.960179,2.458666,-0.116676,
+       2.960179,2.458666,-0.116676,    2.956523,2.451588,-0.108108,    3.029007,2.454319,-0.123552,
+       3.107887,2.457291,-0.1287,      3.1224,2.4648,-0.1389,  3.037862,2.461603,-0.133344,
+       3.037862,2.461603,-0.133344,    3.029007,2.454319,-0.123552,    3.107887,2.457291,-0.1287,
+       3.186768,2.460263,-0.123552,    3.206938,2.467997,-0.133344,    3.1224,2.4648,-0.1389,
+       3.1224,2.4648,-0.1389,  3.107887,2.457291,-0.1287,      3.186768,2.460263,-0.123552,
+       3.259252,2.462994,-0.108108,    3.284621,2.470934,-0.116676,    3.206938,2.467997,-0.133344,
+       3.206938,2.467997,-0.133344,    3.186768,2.460263,-0.123552,    3.259252,2.462994,-0.108108,
+       3.318946,2.465243,-0.082368,    3.348595,2.473354,-0.088896,    3.284621,2.470934,-0.116676,
+       3.284621,2.470934,-0.116676,    3.259252,2.462994,-0.108108,    3.318946,2.465243,-0.082368,
+       3.359452,2.466769,-0.046332,    3.392006,2.474995,-0.050004,    3.348595,2.473354,-0.088896,
+       3.348595,2.473354,-0.088896,    3.318946,2.465243,-0.082368,    3.359452,2.466769,-0.046332,
+       3.374375,2.467331,0,    3.408,2.4756,0, 3.392006,2.474995,-0.050004,
+       3.392006,2.474995,-0.050004,    3.359452,2.466769,-0.046332,    3.374375,2.467331,0,
+       2.851331,2.436454,-0.043308,    2.856323,2.447812,-0.046332,    2.8414,2.44725,0,
+       2.8414,2.44725,0,       2.8376,2.436,0, 2.851331,2.436454,-0.043308,
+       2.888602,2.437685,-0.076992,    2.896829,2.449338,-0.082368,    2.856323,2.447812,-0.046332,
+       2.856323,2.447812,-0.046332,    2.851331,2.436454,-0.043308,    2.888602,2.437685,-0.076992,
+       2.943526,2.439499,-0.101052,    2.956523,2.451588,-0.108108,    2.896829,2.449338,-0.082368,
+       2.896829,2.449338,-0.082368,    2.888602,2.437685,-0.076992,    2.943526,2.439499,-0.101052,
+       3.010221,2.441702,-0.115488,    3.029007,2.454319,-0.123552,    2.956523,2.451588,-0.108108,
+       2.956523,2.451588,-0.108108,    2.943526,2.439499,-0.101052,    3.010221,2.441702,-0.115488,
+       3.0828,2.4441,-0.1203,  3.107887,2.457291,-0.1287,      3.029007,2.454319,-0.123552,
+       3.029007,2.454319,-0.123552,    3.010221,2.441702,-0.115488,    3.0828,2.4441,-0.1203,
+       3.155379,2.446498,-0.115488,    3.186768,2.460263,-0.123552,    3.107887,2.457291,-0.1287,
+       3.107887,2.457291,-0.1287,      3.0828,2.4441,-0.1203,  3.155379,2.446498,-0.115488,
+       3.222074,2.448701,-0.101052,    3.259252,2.462994,-0.108108,    3.186768,2.460263,-0.123552,
+       3.186768,2.460263,-0.123552,    3.155379,2.446498,-0.115488,    3.222074,2.448701,-0.101052,
+       3.276998,2.450515,-0.076992,    3.318946,2.465243,-0.082368,    3.259252,2.462994,-0.108108,
+       3.259252,2.462994,-0.108108,    3.222074,2.448701,-0.101052,    3.276998,2.450515,-0.076992,
+       3.314269,2.451746,-0.043308,    3.359452,2.466769,-0.046332,    3.318946,2.465243,-0.082368,
+       3.318946,2.465243,-0.082368,    3.276998,2.450515,-0.076992,    3.314269,2.451746,-0.043308,
+       3.328,2.4522,0, 3.374375,2.467331,0,    3.359452,2.466769,-0.046332,
+       3.359452,2.466769,-0.046332,    3.314269,2.451746,-0.043308,    3.328,2.4522,0,
+       2.836672,2.420519,-0.041256,    2.851331,2.436454,-0.043308,    2.8376,2.436,0,
+       2.8376,2.436,0, 2.8242,2.42025,0,       2.836672,2.420519,-0.041256,
+       2.870524,2.42125,-0.073344,     2.888602,2.437685,-0.076992,    2.851331,2.436454,-0.043308,
+       2.851331,2.436454,-0.043308,    2.836672,2.420519,-0.041256,    2.870524,2.42125,-0.073344,
+       2.920412,2.422328,-0.096264,    2.943526,2.439499,-0.101052,    2.888602,2.437685,-0.076992,
+       2.888602,2.437685,-0.076992,    2.870524,2.42125,-0.073344,     2.920412,2.422328,-0.096264,
+       2.98099,2.423636,-0.110016,     3.010221,2.441702,-0.115488,    2.943526,2.439499,-0.101052,
+       2.943526,2.439499,-0.101052,    2.920412,2.422328,-0.096264,    2.98099,2.423636,-0.110016,
+       3.046912,2.425059,-0.1146,      3.0828,2.4441,-0.1203,  3.010221,2.441702,-0.115488,
+       3.010221,2.441702,-0.115488,    2.98099,2.423636,-0.110016,     3.046912,2.425059,-0.1146,
+       3.112835,2.426483,-0.110016,    3.155379,2.446498,-0.115488,    3.0828,2.4441,-0.1203,
+       3.0828,2.4441,-0.1203,  3.046912,2.425059,-0.1146,      3.112835,2.426483,-0.110016,
+       3.173413,2.427791,-0.096264,    3.222074,2.448701,-0.101052,    3.155379,2.446498,-0.115488,
+       3.155379,2.446498,-0.115488,    3.112835,2.426483,-0.110016,    3.173413,2.427791,-0.096264,
+       3.223301,2.428868,-0.073344,    3.276998,2.450515,-0.076992,    3.222074,2.448701,-0.101052,
+       3.222074,2.448701,-0.101052,    3.173413,2.427791,-0.096264,    3.223301,2.428868,-0.073344,
+       3.257153,2.429599,-0.041256,    3.314269,2.451746,-0.043308,    3.276998,2.450515,-0.076992,
+       3.276998,2.450515,-0.076992,    3.223301,2.428868,-0.073344,    3.257153,2.429599,-0.041256,
+       3.269625,2.429869,0,    3.328,2.4522,0, 3.314269,2.451746,-0.043308,
+       3.314269,2.451746,-0.043308,    3.257153,2.429599,-0.041256,    3.269625,2.429869,0,
+       2.8112,2.4,-0.0405,     2.836672,2.420519,-0.041256,    2.8242,2.42025,0,
+       2.8242,2.42025,0,       2.8,2.4,0,      2.8112,2.4,-0.0405,
+       2.8416,2.4,-0.072,      2.870524,2.42125,-0.073344,     2.836672,2.420519,-0.041256,
+       2.836672,2.420519,-0.041256,    2.8112,2.4,-0.0405,     2.8416,2.4,-0.072,
+       2.8864,2.4,-0.0945,     2.920412,2.422328,-0.096264,    2.870524,2.42125,-0.073344,
+       2.870524,2.42125,-0.073344,     2.8416,2.4,-0.072,      2.8864,2.4,-0.0945,
+       2.9408,2.4,-0.108,      2.98099,2.423636,-0.110016,     2.920412,2.422328,-0.096264,
+       2.920412,2.422328,-0.096264,    2.8864,2.4,-0.0945,     2.9408,2.4,-0.108,
+       3,2.4,-0.1125,  3.046912,2.425059,-0.1146,      2.98099,2.423636,-0.110016,
+       2.98099,2.423636,-0.110016,     2.9408,2.4,-0.108,      3,2.4,-0.1125,
+       3.0592,2.4,-0.108,      3.112835,2.426483,-0.110016,    3.046912,2.425059,-0.1146,
+       3.046912,2.425059,-0.1146,      3,2.4,-0.1125,  3.0592,2.4,-0.108,
+       3.1136,2.4,-0.0945,     3.173413,2.427791,-0.096264,    3.112835,2.426483,-0.110016,
+       3.112835,2.426483,-0.110016,    3.0592,2.4,-0.108,      3.1136,2.4,-0.0945,
+       3.1584,2.4,-0.072,      3.223301,2.428868,-0.073344,    3.173413,2.427791,-0.096264,
+       3.173413,2.427791,-0.096264,    3.1136,2.4,-0.0945,     3.1584,2.4,-0.072,
+       3.1888,2.4,-0.0405,     3.257153,2.429599,-0.041256,    3.223301,2.428868,-0.073344,
+       3.223301,2.428868,-0.073344,    3.1584,2.4,-0.072,      3.1888,2.4,-0.0405,
+       3.2,2.4,0,      3.269625,2.429869,0,    3.257153,2.429599,-0.041256,
+       3.257153,2.429599,-0.041256,    3.1888,2.4,-0.0405,     3.2,2.4,0,
+       3.341018,2.425663,0.066744,     3.2832,2.4,0.0675,      3.3,2.4,0,
+       3.3,2.4,0,      3.358625,2.425819,0,    3.341018,2.425663,0.066744,
+       3.293227,2.42524,0.118656,      3.2376,2.4,0.12,        3.2832,2.4,0.0675,
+       3.2832,2.4,0.0675,      3.341018,2.425663,0.066744,     3.293227,2.42524,0.118656,
+       3.222799,2.424616,0.155736,     3.1704,2.4,0.1575,      3.2376,2.4,0.12,
+       3.2376,2.4,0.12,        3.293227,2.42524,0.118656,      3.222799,2.424616,0.155736,
+       3.137279,2.423859,0.177984,     3.0888,2.4,0.18,        3.1704,2.4,0.1575,
+       3.1704,2.4,0.1575,      3.222799,2.424616,0.155736,     3.137279,2.423859,0.177984,
+       3.044212,2.423034,0.1854,       3,2.4,0.1875,   3.0888,2.4,0.18,
+       3.0888,2.4,0.18,        3.137279,2.423859,0.177984,     3.044212,2.423034,0.1854,
+       2.951146,2.42221,0.177984,      2.9112,2.4,0.18,        3,2.4,0.1875,
+       3,2.4,0.1875,   3.044212,2.423034,0.1854,       2.951146,2.42221,0.177984,
+       2.865626,2.421453,0.155736,     2.8296,2.4,0.1575,      2.9112,2.4,0.18,
+       2.9112,2.4,0.18,        2.951146,2.42221,0.177984,      2.865626,2.421453,0.155736,
+       2.795198,2.420829,0.118656,     2.7624,2.4,0.12,        2.8296,2.4,0.1575,
+       2.8296,2.4,0.1575,      2.865626,2.421453,0.155736,     2.795198,2.420829,0.118656,
+       2.747407,2.420406,0.066744,     2.7168,2.4,0.0675,      2.7624,2.4,0.12,
+       2.7624,2.4,0.12,        2.795198,2.420829,0.118656,     2.747407,2.420406,0.066744,
+       2.7298,2.42025,0,       2.7,2.4,0,      2.7168,2.4,0.0675,
+       2.7168,2.4,0.0675,      2.747407,2.420406,0.066744,     2.7298,2.42025,0,
+       3.382035,2.446498,0.064692,     3.341018,2.425663,0.066744,     3.358625,2.425819,0,
+       3.358625,2.425819,0,    3.4,2.4468,0,   3.382035,2.446498,0.064692,
+       3.333274,2.445677,0.115008,     3.293227,2.42524,0.118656,      3.341018,2.425663,0.066744,
+       3.341018,2.425663,0.066744,     3.382035,2.446498,0.064692,     3.333274,2.445677,0.115008,
+       3.261414,2.444467,0.150948,     3.222799,2.424616,0.155736,     3.293227,2.42524,0.118656,
+       3.293227,2.42524,0.118656,      3.333274,2.445677,0.115008,     3.261414,2.444467,0.150948,
+       3.174157,2.442998,0.172512,     3.137279,2.423859,0.177984,     3.222799,2.424616,0.155736,
+       3.222799,2.424616,0.155736,     3.261414,2.444467,0.150948,     3.174157,2.442998,0.172512,
+       3.0792,2.4414,0.1797,   3.044212,2.423034,0.1854,       3.137279,2.423859,0.177984,
+       3.137279,2.423859,0.177984,     3.174157,2.442998,0.172512,     3.0792,2.4414,0.1797,
+       2.984243,2.439802,0.172512,     2.951146,2.42221,0.177984,      3.044212,2.423034,0.1854,
+       3.044212,2.423034,0.1854,       3.0792,2.4414,0.1797,   2.984243,2.439802,0.172512,
+       2.896986,2.438333,0.150948,     2.865626,2.421453,0.155736,     2.951146,2.42221,0.177984,
+       2.951146,2.42221,0.177984,      2.984243,2.439802,0.172512,     2.896986,2.438333,0.150948,
+       2.825126,2.437123,0.115008,     2.795198,2.420829,0.118656,     2.865626,2.421453,0.155736,
+       2.865626,2.421453,0.155736,     2.896986,2.438333,0.150948,     2.825126,2.437123,0.115008,
+       2.776365,2.436302,0.064692,     2.747407,2.420406,0.066744,     2.795198,2.420829,0.118656,
+       2.795198,2.420829,0.118656,     2.825126,2.437123,0.115008,     2.776365,2.436302,0.064692,
+       2.7584,2.436,0, 2.7298,2.42025,0,       2.747407,2.420406,0.066744,
+       2.747407,2.420406,0.066744,     2.776365,2.436302,0.064692,     2.7584,2.436,0,
+       3.406947,2.462176,0.061668,     3.382035,2.446498,0.064692,     3.4,2.4468,0,
+       3.4,2.4468,0,   3.424875,2.462606,0,    3.406947,2.462176,0.061668,
+       3.358286,2.461009,0.109632,     3.333274,2.445677,0.115008,     3.382035,2.446498,0.064692,
+       3.382035,2.446498,0.064692,     3.406947,2.462176,0.061668,     3.358286,2.461009,0.109632,
+       3.286576,2.459289,0.143892,     3.261414,2.444467,0.150948,     3.333274,2.445677,0.115008,
+       3.333274,2.445677,0.115008,     3.358286,2.461009,0.109632,     3.286576,2.459289,0.143892,
+       3.199498,2.457201,0.164448,     3.174157,2.442998,0.172512,     3.261414,2.444467,0.150948,
+       3.261414,2.444467,0.150948,     3.286576,2.459289,0.143892,     3.199498,2.457201,0.164448,
+       3.104738,2.454928,0.1713,       3.0792,2.4414,0.1797,   3.174157,2.442998,0.172512,
+       3.174157,2.442998,0.172512,     3.199498,2.457201,0.164448,     3.104738,2.454928,0.1713,
+       3.009977,2.452655,0.164448,     2.984243,2.439802,0.172512,     3.0792,2.4414,0.1797,
+       3.0792,2.4414,0.1797,   3.104738,2.454928,0.1713,       3.009977,2.452655,0.164448,
+       2.922899,2.450567,0.143892,     2.896986,2.438333,0.150948,     2.984243,2.439802,0.172512,
+       2.984243,2.439802,0.172512,     3.009977,2.452655,0.164448,     2.922899,2.450567,0.143892,
+       2.851189,2.448847,0.109632,     2.825126,2.437123,0.115008,     2.896986,2.438333,0.150948,
+       2.896986,2.438333,0.150948,     2.922899,2.450567,0.143892,     2.851189,2.448847,0.109632,
+       2.802528,2.44768,0.061668,      2.776365,2.436302,0.064692,     2.825126,2.437123,0.115008,
+       2.825126,2.437123,0.115008,     2.851189,2.448847,0.109632,     2.802528,2.44768,0.061668,
+       2.7846,2.44725,0,       2.7584,2.436,0, 2.776365,2.436302,0.064692,
+       2.776365,2.436302,0.064692,     2.802528,2.44768,0.061668,      2.7846,2.44725,0,
+       3.41645,2.472371,0.057996,      3.406947,2.462176,0.061668,     3.424875,2.462606,0,
+       3.424875,2.462606,0,    3.434,2.4729,0, 3.41645,2.472371,0.057996,
+       3.368813,2.470934,0.103104,     3.358286,2.461009,0.109632,     3.406947,2.462176,0.061668,
+       3.406947,2.462176,0.061668,     3.41645,2.472371,0.057996,      3.368813,2.470934,0.103104,
+       3.298611,2.468818,0.135324,     3.286576,2.459289,0.143892,     3.358286,2.461009,0.109632,
+       3.358286,2.461009,0.109632,     3.368813,2.470934,0.103104,     3.298611,2.468818,0.135324,
+       3.213366,2.466247,0.154656,     3.199498,2.457201,0.164448,     3.286576,2.459289,0.143892,
+       3.286576,2.459289,0.143892,     3.298611,2.468818,0.135324,     3.213366,2.466247,0.154656,
+       3.1206,2.46345,0.1611,  3.104738,2.454928,0.1713,       3.199498,2.457201,0.164448,
+       3.199498,2.457201,0.164448,     3.213366,2.466247,0.154656,     3.1206,2.46345,0.1611,
+       3.027834,2.460653,0.154656,     3.009977,2.452655,0.164448,     3.104738,2.454928,0.1713,
+       3.104738,2.454928,0.1713,       3.1206,2.46345,0.1611,  3.027834,2.460653,0.154656,
+       2.942589,2.458082,0.135324,     2.922899,2.450567,0.143892,     3.009977,2.452655,0.164448,
+       3.009977,2.452655,0.164448,     3.027834,2.460653,0.154656,     2.942589,2.458082,0.135324,
+       2.872387,2.455966,0.103104,     2.851189,2.448847,0.109632,     2.922899,2.450567,0.143892,
+       2.922899,2.450567,0.143892,     2.942589,2.458082,0.135324,     2.872387,2.455966,0.103104,
+       2.82475,2.454529,0.057996,      2.802528,2.44768,0.061668,      2.851189,2.448847,0.109632,
+       2.851189,2.448847,0.109632,     2.872387,2.455966,0.103104,     2.82475,2.454529,0.057996,
+       2.8072,2.454,0, 2.7846,2.44725,0,       2.802528,2.44768,0.061668,
+       2.802528,2.44768,0.061668,      2.82475,2.454529,0.057996,      2.8072,2.454,0,
+       3.411237,2.476753,0.054,        3.41645,2.472371,0.057996,      3.434,2.4729,0,
+       3.434,2.4729,0, 3.428125,2.477344,0,    3.411237,2.476753,0.054,
+       3.3654,2.47515,0.096,   3.368813,2.470934,0.103104,     3.41645,2.472371,0.057996,
+       3.41645,2.472371,0.057996,      3.411237,2.476753,0.054,        3.3654,2.47515,0.096,
+       3.29785,2.472788,0.126, 3.298611,2.468818,0.135324,     3.368813,2.470934,0.103104,
+       3.368813,2.470934,0.103104,     3.3654,2.47515,0.096,   3.29785,2.472788,0.126,
+       3.215825,2.469919,0.144,        3.213366,2.466247,0.154656,     3.298611,2.468818,0.135324,
+       3.298611,2.468818,0.135324,     3.29785,2.472788,0.126, 3.215825,2.469919,0.144,
+       3.126562,2.466797,0.15, 3.1206,2.46345,0.1611,  3.213366,2.466247,0.154656,
+       3.213366,2.466247,0.154656,     3.215825,2.469919,0.144,        3.126562,2.466797,0.15,
+       3.0373,2.463675,0.144,  3.027834,2.460653,0.154656,     3.1206,2.46345,0.1611,
+       3.1206,2.46345,0.1611,  3.126562,2.466797,0.15, 3.0373,2.463675,0.144,
+       2.955275,2.460806,0.126,        2.942589,2.458082,0.135324,     3.027834,2.460653,0.154656,
+       3.027834,2.460653,0.154656,     3.0373,2.463675,0.144,  2.955275,2.460806,0.126,
+       2.887725,2.458444,0.096,        2.872387,2.455966,0.103104,     2.942589,2.458082,0.135324,
+       2.942589,2.458082,0.135324,     2.955275,2.460806,0.126,        2.887725,2.458444,0.096,
+       2.841887,2.456841,0.054,        2.82475,2.454529,0.057996,      2.872387,2.455966,0.103104,
+       2.872387,2.455966,0.103104,     2.887725,2.458444,0.096,        2.841887,2.456841,0.054,
+       2.825,2.45625,0,        2.8072,2.454,0, 2.82475,2.454529,0.057996,
+       2.82475,2.454529,0.057996,      2.841887,2.456841,0.054,        2.825,2.45625,0,
+       3.392006,2.474995,0.050004,     3.411237,2.476753,0.054,        3.428125,2.477344,0,
+       3.428125,2.477344,0,    3.408,2.4756,0, 3.392006,2.474995,0.050004,
+       3.348595,2.473354,0.088896,     3.3654,2.47515,0.096,   3.411237,2.476753,0.054,
+       3.411237,2.476753,0.054,        3.392006,2.474995,0.050004,     3.348595,2.473354,0.088896,
+       3.284621,2.470934,0.116676,     3.29785,2.472788,0.126, 3.3654,2.47515,0.096,
+       3.3654,2.47515,0.096,   3.348595,2.473354,0.088896,     3.284621,2.470934,0.116676,
+       3.206938,2.467997,0.133344,     3.215825,2.469919,0.144,        3.29785,2.472788,0.126,
+       3.29785,2.472788,0.126, 3.284621,2.470934,0.116676,     3.206938,2.467997,0.133344,
+       3.1224,2.4648,0.1389,   3.126562,2.466797,0.15, 3.215825,2.469919,0.144,
+       3.215825,2.469919,0.144,        3.206938,2.467997,0.133344,     3.1224,2.4648,0.1389,
+       3.037862,2.461603,0.133344,     3.0373,2.463675,0.144,  3.126562,2.466797,0.15,
+       3.126562,2.466797,0.15, 3.1224,2.4648,0.1389,   3.037862,2.461603,0.133344,
+       2.960179,2.458666,0.116676,     2.955275,2.460806,0.126,        3.0373,2.463675,0.144,
+       3.0373,2.463675,0.144,  3.037862,2.461603,0.133344,     2.960179,2.458666,0.116676,
+       2.896205,2.456246,0.088896,     2.887725,2.458444,0.096,        2.955275,2.460806,0.126,
+       2.955275,2.460806,0.126,        2.960179,2.458666,0.116676,     2.896205,2.456246,0.088896,
+       2.852794,2.454605,0.050004,     2.841887,2.456841,0.054,        2.887725,2.458444,0.096,
+       2.887725,2.458444,0.096,        2.896205,2.456246,0.088896,     2.852794,2.454605,0.050004,
+       2.8368,2.454,0, 2.825,2.45625,0,        2.841887,2.456841,0.054,
+       2.841887,2.456841,0.054,        2.852794,2.454605,0.050004,     2.8368,2.454,0,
+       3.359452,2.466769,0.046332,     3.392006,2.474995,0.050004,     3.408,2.4756,0,
+       3.408,2.4756,0, 3.374375,2.467331,0,    3.359452,2.466769,0.046332,
+       3.318946,2.465243,0.082368,     3.348595,2.473354,0.088896,     3.392006,2.474995,0.050004,
+       3.392006,2.474995,0.050004,     3.359452,2.466769,0.046332,     3.318946,2.465243,0.082368,
+       3.259252,2.462994,0.108108,     3.284621,2.470934,0.116676,     3.348595,2.473354,0.088896,
+       3.348595,2.473354,0.088896,     3.318946,2.465243,0.082368,     3.259252,2.462994,0.108108,
+       3.186768,2.460263,0.123552,     3.206938,2.467997,0.133344,     3.284621,2.470934,0.116676,
+       3.284621,2.470934,0.116676,     3.259252,2.462994,0.108108,     3.186768,2.460263,0.123552,
+       3.107887,2.457291,0.1287,       3.1224,2.4648,0.1389,   3.206938,2.467997,0.133344,
+       3.206938,2.467997,0.133344,     3.186768,2.460263,0.123552,     3.107887,2.457291,0.1287,
+       3.029007,2.454319,0.123552,     3.037862,2.461603,0.133344,     3.1224,2.4648,0.1389,
+       3.1224,2.4648,0.1389,   3.107887,2.457291,0.1287,       3.029007,2.454319,0.123552,
+       2.956523,2.451588,0.108108,     2.960179,2.458666,0.116676,     3.037862,2.461603,0.133344,
+       3.037862,2.461603,0.133344,     3.029007,2.454319,0.123552,     2.956523,2.451588,0.108108,
+       2.896829,2.449338,0.082368,     2.896205,2.456246,0.088896,     2.960179,2.458666,0.116676,
+       2.960179,2.458666,0.116676,     2.956523,2.451588,0.108108,     2.896829,2.449338,0.082368,
+       2.856323,2.447812,0.046332,     2.852794,2.454605,0.050004,     2.896205,2.456246,0.088896,
+       2.896205,2.456246,0.088896,     2.896829,2.449338,0.082368,     2.856323,2.447812,0.046332,
+       2.8414,2.44725,0,       2.8368,2.454,0, 2.852794,2.454605,0.050004,
+       2.852794,2.454605,0.050004,     2.856323,2.447812,0.046332,     2.8414,2.44725,0,
+       3.314269,2.451746,0.043308,     3.359452,2.466769,0.046332,     3.374375,2.467331,0,
+       3.374375,2.467331,0,    3.328,2.4522,0, 3.314269,2.451746,0.043308,
+       3.276998,2.450515,0.076992,     3.318946,2.465243,0.082368,     3.359452,2.466769,0.046332,
+       3.359452,2.466769,0.046332,     3.314269,2.451746,0.043308,     3.276998,2.450515,0.076992,
+       3.222074,2.448701,0.101052,     3.259252,2.462994,0.108108,     3.318946,2.465243,0.082368,
+       3.318946,2.465243,0.082368,     3.276998,2.450515,0.076992,     3.222074,2.448701,0.101052,
+       3.155379,2.446498,0.115488,     3.186768,2.460263,0.123552,     3.259252,2.462994,0.108108,
+       3.259252,2.462994,0.108108,     3.222074,2.448701,0.101052,     3.155379,2.446498,0.115488,
+       3.0828,2.4441,0.1203,   3.107887,2.457291,0.1287,       3.186768,2.460263,0.123552,
+       3.186768,2.460263,0.123552,     3.155379,2.446498,0.115488,     3.0828,2.4441,0.1203,
+       3.010221,2.441702,0.115488,     3.029007,2.454319,0.123552,     3.107887,2.457291,0.1287,
+       3.107887,2.457291,0.1287,       3.0828,2.4441,0.1203,   3.010221,2.441702,0.115488,
+       2.943526,2.439499,0.101052,     2.956523,2.451588,0.108108,     3.029007,2.454319,0.123552,
+       3.029007,2.454319,0.123552,     3.010221,2.441702,0.115488,     2.943526,2.439499,0.101052,
+       2.888602,2.437685,0.076992,     2.896829,2.449338,0.082368,     2.956523,2.451588,0.108108,
+       2.956523,2.451588,0.108108,     2.943526,2.439499,0.101052,     2.888602,2.437685,0.076992,
+       2.851331,2.436454,0.043308,     2.856323,2.447812,0.046332,     2.896829,2.449338,0.082368,
+       2.896829,2.449338,0.082368,     2.888602,2.437685,0.076992,     2.851331,2.436454,0.043308,
+       2.8376,2.436,0, 2.8414,2.44725,0,       2.856323,2.447812,0.046332,
+       2.856323,2.447812,0.046332,     2.851331,2.436454,0.043308,     2.8376,2.436,0,
+       3.257153,2.429599,0.041256,     3.314269,2.451746,0.043308,     3.328,2.4522,0,
+       3.328,2.4522,0, 3.269625,2.429869,0,    3.257153,2.429599,0.041256,
+       3.223301,2.428868,0.073344,     3.276998,2.450515,0.076992,     3.314269,2.451746,0.043308,
+       3.314269,2.451746,0.043308,     3.257153,2.429599,0.041256,     3.223301,2.428868,0.073344,
+       3.173413,2.427791,0.096264,     3.222074,2.448701,0.101052,     3.276998,2.450515,0.076992,
+       3.276998,2.450515,0.076992,     3.223301,2.428868,0.073344,     3.173413,2.427791,0.096264,
+       3.112835,2.426483,0.110016,     3.155379,2.446498,0.115488,     3.222074,2.448701,0.101052,
+       3.222074,2.448701,0.101052,     3.173413,2.427791,0.096264,     3.112835,2.426483,0.110016,
+       3.046912,2.425059,0.1146,       3.0828,2.4441,0.1203,   3.155379,2.446498,0.115488,
+       3.155379,2.446498,0.115488,     3.112835,2.426483,0.110016,     3.046912,2.425059,0.1146,
+       2.98099,2.423636,0.110016,      3.010221,2.441702,0.115488,     3.0828,2.4441,0.1203,
+       3.0828,2.4441,0.1203,   3.046912,2.425059,0.1146,       2.98099,2.423636,0.110016,
+       2.920412,2.422328,0.096264,     2.943526,2.439499,0.101052,     3.010221,2.441702,0.115488,
+       3.010221,2.441702,0.115488,     2.98099,2.423636,0.110016,      2.920412,2.422328,0.096264,
+       2.870524,2.42125,0.073344,      2.888602,2.437685,0.076992,     2.943526,2.439499,0.101052,
+       2.943526,2.439499,0.101052,     2.920412,2.422328,0.096264,     2.870524,2.42125,0.073344,
+       2.836672,2.420519,0.041256,     2.851331,2.436454,0.043308,     2.888602,2.437685,0.076992,
+       2.888602,2.437685,0.076992,     2.870524,2.42125,0.073344,      2.836672,2.420519,0.041256,
+       2.8242,2.42025,0,       2.8376,2.436,0, 2.851331,2.436454,0.043308,
+       2.851331,2.436454,0.043308,     2.836672,2.420519,0.041256,     2.8242,2.42025,0,
+       3.1888,2.4,0.0405,      3.257153,2.429599,0.041256,     3.269625,2.429869,0,
+       3.269625,2.429869,0,    3.2,2.4,0,      3.1888,2.4,0.0405,
+       3.1584,2.4,0.072,       3.223301,2.428868,0.073344,     3.257153,2.429599,0.041256,
+       3.257153,2.429599,0.041256,     3.1888,2.4,0.0405,      3.1584,2.4,0.072,
+       3.1136,2.4,0.0945,      3.173413,2.427791,0.096264,     3.223301,2.428868,0.073344,
+       3.223301,2.428868,0.073344,     3.1584,2.4,0.072,       3.1136,2.4,0.0945,
+       3.0592,2.4,0.108,       3.112835,2.426483,0.110016,     3.173413,2.427791,0.096264,
+       3.173413,2.427791,0.096264,     3.1136,2.4,0.0945,      3.0592,2.4,0.108,
+       3,2.4,0.1125,   3.046912,2.425059,0.1146,       3.112835,2.426483,0.110016,
+       3.112835,2.426483,0.110016,     3.0592,2.4,0.108,       3,2.4,0.1125,
+       2.9408,2.4,0.108,       2.98099,2.423636,0.110016,      3.046912,2.425059,0.1146,
+       3.046912,2.425059,0.1146,       3,2.4,0.1125,   2.9408,2.4,0.108,
+       2.8864,2.4,0.0945,      2.920412,2.422328,0.096264,     2.98099,2.423636,0.110016,
+       2.98099,2.423636,0.110016,      2.9408,2.4,0.108,       2.8864,2.4,0.0945,
+       2.8416,2.4,0.072,       2.870524,2.42125,0.073344,      2.920412,2.422328,0.096264,
+       2.920412,2.422328,0.096264,     2.8864,2.4,0.0945,      2.8416,2.4,0.072,
+       2.8112,2.4,0.0405,      2.836672,2.420519,0.041256,     2.870524,2.42125,0.073344,
+       2.870524,2.42125,0.073344,      2.8416,2.4,0.072,       2.8112,2.4,0.0405,
+       2.8,2.4,0,      2.8242,2.42025,0,       2.836672,2.420519,0.041256,
+       2.836672,2.420519,0.041256,     2.8112,2.4,0.0405,      2.8,2.4,0,
+       0,3.15,0,       0.1946,3.14145,0,       0.192107,3.14145,-0.032048,
+       0,3.15,0,       0.192107,3.14145,-0.032048,     0.18487,3.14145,-0.062272,
+       0,3.15,0,       0.18487,3.14145,-0.062272,      0.173255,3.14145,-0.090306,
+       0,3.15,0,       0.173255,3.14145,-0.090306,     0.157626,3.14145,-0.115787,
+       0,3.15,0,       0.157626,3.14145,-0.115787,     0.138348,3.14145,-0.138348,
+       0,3.15,0,       0.138348,3.14145,-0.138348,     0.115787,3.14145,-0.157626,
+       0,3.15,0,       0.115787,3.14145,-0.157626,     0.090306,3.14145,-0.173255,
+       0,3.15,0,       0.090306,3.14145,-0.173255,     0.062272,3.14145,-0.18487,
+       0,3.15,0,       0.062272,3.14145,-0.18487,      0.032048,3.14145,-0.192107,
+       0,3.15,0,       0.032048,3.14145,-0.192107,     0,3.14145,-0.1946,
+       0.304843,3.1176,-0.050855,      0.192107,3.14145,-0.032048,     0.1946,3.14145,0,
+       0.1946,3.14145,0,       0.3088,3.1176,0,        0.304843,3.1176,-0.050855,
+       0.29336,3.1176,-0.098814,       0.18487,3.14145,-0.062272,      0.192107,3.14145,-0.032048,
+       0.192107,3.14145,-0.032048,     0.304843,3.1176,-0.050855,      0.29336,3.1176,-0.098814,
+       0.274928,3.1176,-0.143301,      0.173255,3.14145,-0.090306,     0.18487,3.14145,-0.062272,
+       0.18487,3.14145,-0.062272,      0.29336,3.1176,-0.098814,       0.274928,3.1176,-0.143301,
+       0.250127,3.1176,-0.183734,      0.157626,3.14145,-0.115787,     0.173255,3.14145,-0.090306,
+       0.173255,3.14145,-0.090306,     0.274928,3.1176,-0.143301,      0.250127,3.1176,-0.183734,
+       0.219536,3.1176,-0.219536,      0.138348,3.14145,-0.138348,     0.157626,3.14145,-0.115787,
+       0.157626,3.14145,-0.115787,     0.250127,3.1176,-0.183734,      0.219536,3.1176,-0.219536,
+       0.183734,3.1176,-0.250127,      0.115787,3.14145,-0.157626,     0.138348,3.14145,-0.138348,
+       0.138348,3.14145,-0.138348,     0.219536,3.1176,-0.219536,      0.183734,3.1176,-0.250127,
+       0.143301,3.1176,-0.274928,      0.090306,3.14145,-0.173255,     0.115787,3.14145,-0.157626,
+       0.115787,3.14145,-0.157626,     0.183734,3.1176,-0.250127,      0.143301,3.1176,-0.274928,
+       0.098814,3.1176,-0.29336,       0.062272,3.14145,-0.18487,      0.090306,3.14145,-0.173255,
+       0.090306,3.14145,-0.173255,     0.143301,3.1176,-0.274928,      0.098814,3.1176,-0.29336,
+       0.050855,3.1176,-0.304843,      0.032048,3.14145,-0.192107,     0.062272,3.14145,-0.18487,
+       0.062272,3.14145,-0.18487,      0.098814,3.1176,-0.29336,       0.050855,3.1176,-0.304843,
+       0,3.1176,-0.3088,       0,3.14145,-0.1946,      0.032048,3.14145,-0.192107,
+       0.032048,3.14145,-0.192107,     0.050855,3.1176,-0.304843,      0,3.1176,-0.3088,
+       0.35361,3.08115,-0.058988,      0.304843,3.1176,-0.050855,      0.3088,3.1176,0,
+       0.3088,3.1176,0,        0.3582,3.08115,0,       0.35361,3.08115,-0.058988,
+       0.340289,3.08115,-0.114619,     0.29336,3.1176,-0.098814,       0.304843,3.1176,-0.050855,
+       0.304843,3.1176,-0.050855,      0.35361,3.08115,-0.058988,      0.340289,3.08115,-0.114619,
+       0.318907,3.08115,-0.166221,     0.274928,3.1176,-0.143301,      0.29336,3.1176,-0.098814,
+       0.29336,3.1176,-0.098814,       0.340289,3.08115,-0.114619,     0.318907,3.08115,-0.166221,
+       0.290138,3.08115,-0.213123,     0.250127,3.1176,-0.183734,      0.274928,3.1176,-0.143301,
+       0.274928,3.1176,-0.143301,      0.318907,3.08115,-0.166221,     0.290138,3.08115,-0.213123,
+       0.254653,3.08115,-0.254653,     0.219536,3.1176,-0.219536,      0.250127,3.1176,-0.183734,
+       0.250127,3.1176,-0.183734,      0.290138,3.08115,-0.213123,     0.254653,3.08115,-0.254653,
+       0.213123,3.08115,-0.290138,     0.183734,3.1176,-0.250127,      0.219536,3.1176,-0.219536,
+       0.219536,3.1176,-0.219536,      0.254653,3.08115,-0.254653,     0.213123,3.08115,-0.290138,
+       0.166221,3.08115,-0.318907,     0.143301,3.1176,-0.274928,      0.183734,3.1176,-0.250127,
+       0.183734,3.1176,-0.250127,      0.213123,3.08115,-0.290138,     0.166221,3.08115,-0.318907,
+       0.114619,3.08115,-0.340289,     0.098814,3.1176,-0.29336,       0.143301,3.1176,-0.274928,
+       0.143301,3.1176,-0.274928,      0.166221,3.08115,-0.318907,     0.114619,3.08115,-0.340289,
+       0.058988,3.08115,-0.35361,      0.050855,3.1176,-0.304843,      0.098814,3.1176,-0.29336,
+       0.098814,3.1176,-0.29336,       0.114619,3.08115,-0.340289,     0.058988,3.08115,-0.35361,
+       0,3.08115,-0.3582,      0,3.1176,-0.3088,       0.050855,3.1176,-0.304843,
+       0.050855,3.1176,-0.304843,      0.058988,3.08115,-0.35361,      0,3.08115,-0.3582,
+       0.353807,3.0348,-0.059016,      0.35361,3.08115,-0.058988,      0.3582,3.08115,0,
+       0.3582,3.08115,0,       0.3584,3.0348,0,        0.353807,3.0348,-0.059016,
+       0.340477,3.0348,-0.114676,      0.340289,3.08115,-0.114619,     0.35361,3.08115,-0.058988,
+       0.35361,3.08115,-0.058988,      0.353807,3.0348,-0.059016,      0.340477,3.0348,-0.114676,
+       0.319082,3.0348,-0.166306,      0.318907,3.08115,-0.166221,     0.340289,3.08115,-0.114619,
+       0.340289,3.08115,-0.114619,     0.340477,3.0348,-0.114676,      0.319082,3.0348,-0.166306,
+       0.290295,3.0348,-0.213234,      0.290138,3.08115,-0.213123,     0.318907,3.08115,-0.166221,
+       0.318907,3.08115,-0.166221,     0.319082,3.0348,-0.166306,      0.290295,3.0348,-0.213234,
+       0.254788,3.0348,-0.254788,      0.254653,3.08115,-0.254653,     0.290138,3.08115,-0.213123,
+       0.290138,3.08115,-0.213123,     0.290295,3.0348,-0.213234,      0.254788,3.0348,-0.254788,
+       0.213234,3.0348,-0.290295,      0.213123,3.08115,-0.290138,     0.254653,3.08115,-0.254653,
+       0.254653,3.08115,-0.254653,     0.254788,3.0348,-0.254788,      0.213234,3.0348,-0.290295,
+       0.166306,3.0348,-0.319082,      0.166221,3.08115,-0.318907,     0.213123,3.08115,-0.290138,
+       0.213123,3.08115,-0.290138,     0.213234,3.0348,-0.290295,      0.166306,3.0348,-0.319082,
+       0.114676,3.0348,-0.340477,      0.114619,3.08115,-0.340289,     0.166221,3.08115,-0.318907,
+       0.166221,3.08115,-0.318907,     0.166306,3.0348,-0.319082,      0.114676,3.0348,-0.340477,
+       0.059016,3.0348,-0.353807,      0.058988,3.08115,-0.35361,      0.114619,3.08115,-0.340289,
+       0.114619,3.08115,-0.340289,     0.114676,3.0348,-0.340477,      0.059016,3.0348,-0.353807,
+       0,3.0348,-0.3584,       0,3.08115,-0.3582,      0.058988,3.08115,-0.35361,
+       0.058988,3.08115,-0.35361,      0.059016,3.0348,-0.353807,      0,3.0348,-0.3584,
+       0.320834,2.98125,-0.053508,     0.353807,3.0348,-0.059016,      0.3584,3.0348,0,
+       0.3584,3.0348,0,        0.325,2.98125,0,        0.320834,2.98125,-0.053508,
+       0.308744,2.98125,-0.103976,     0.340477,3.0348,-0.114676,      0.353807,3.0348,-0.059016,
+       0.353807,3.0348,-0.059016,      0.320834,2.98125,-0.053508,     0.308744,2.98125,-0.103976,
+       0.28934,2.98125,-0.150793,      0.319082,3.0348,-0.166306,      0.340477,3.0348,-0.114676,
+       0.340477,3.0348,-0.114676,      0.308744,2.98125,-0.103976,     0.28934,2.98125,-0.150793,
+       0.263232,2.98125,-0.193348,     0.290295,3.0348,-0.213234,      0.319082,3.0348,-0.166306,
+       0.319082,3.0348,-0.166306,      0.28934,2.98125,-0.150793,      0.263232,2.98125,-0.193348,
+       0.231031,2.98125,-0.231031,     0.254788,3.0348,-0.254788,      0.290295,3.0348,-0.213234,
+       0.290295,3.0348,-0.213234,      0.263232,2.98125,-0.193348,     0.231031,2.98125,-0.231031,
+       0.193348,2.98125,-0.263232,     0.213234,3.0348,-0.290295,      0.254788,3.0348,-0.254788,
+       0.254788,3.0348,-0.254788,      0.231031,2.98125,-0.231031,     0.193348,2.98125,-0.263232,
+       0.150793,2.98125,-0.28934,      0.166306,3.0348,-0.319082,      0.213234,3.0348,-0.290295,
+       0.213234,3.0348,-0.290295,      0.193348,2.98125,-0.263232,     0.150793,2.98125,-0.28934,
+       0.103976,2.98125,-0.308744,     0.114676,3.0348,-0.340477,      0.166306,3.0348,-0.319082,
+       0.166306,3.0348,-0.319082,      0.150793,2.98125,-0.28934,      0.103976,2.98125,-0.308744,
+       0.053508,2.98125,-0.320834,     0.059016,3.0348,-0.353807,      0.114676,3.0348,-0.340477,
+       0.114676,3.0348,-0.340477,      0.103976,2.98125,-0.308744,     0.053508,2.98125,-0.320834,
+       0,2.98125,-0.325,       0,3.0348,-0.3584,       0.059016,3.0348,-0.353807,
+       0.059016,3.0348,-0.353807,      0.053508,2.98125,-0.320834,     0,2.98125,-0.325,
+       0.270092,2.9232,-0.045032,      0.320834,2.98125,-0.053508,     0.325,2.98125,0,
+       0.325,2.98125,0,        0.2736,2.9232,0,        0.270092,2.9232,-0.045032,
+       0.25991,2.9232,-0.087511,       0.308744,2.98125,-0.103976,     0.320834,2.98125,-0.053508,
+       0.320834,2.98125,-0.053508,     0.270092,2.9232,-0.045032,      0.25991,2.9232,-0.087511,
+       0.243569,2.9232,-0.12692,       0.28934,2.98125,-0.150793,      0.308744,2.98125,-0.103976,
+       0.308744,2.98125,-0.103976,     0.25991,2.9232,-0.087511,       0.243569,2.9232,-0.12692,
+       0.221585,2.9232,-0.162745,      0.263232,2.98125,-0.193348,     0.28934,2.98125,-0.150793,
+       0.28934,2.98125,-0.150793,      0.243569,2.9232,-0.12692,       0.221585,2.9232,-0.162745,
+       0.194472,2.9232,-0.194472,      0.231031,2.98125,-0.231031,     0.263232,2.98125,-0.193348,
+       0.263232,2.98125,-0.193348,     0.221585,2.9232,-0.162745,      0.194472,2.9232,-0.194472,
+       0.162745,2.9232,-0.221585,      0.193348,2.98125,-0.263232,     0.231031,2.98125,-0.231031,
+       0.231031,2.98125,-0.231031,     0.194472,2.9232,-0.194472,      0.162745,2.9232,-0.221585,
+       0.12692,2.9232,-0.243569,       0.150793,2.98125,-0.28934,      0.193348,2.98125,-0.263232,
+       0.193348,2.98125,-0.263232,     0.162745,2.9232,-0.221585,      0.12692,2.9232,-0.243569,
+       0.087511,2.9232,-0.25991,       0.103976,2.98125,-0.308744,     0.150793,2.98125,-0.28934,
+       0.150793,2.98125,-0.28934,      0.12692,2.9232,-0.243569,       0.087511,2.9232,-0.25991,
+       0.045032,2.9232,-0.270092,      0.053508,2.98125,-0.320834,     0.103976,2.98125,-0.308744,
+       0.103976,2.98125,-0.308744,     0.087511,2.9232,-0.25991,       0.045032,2.9232,-0.270092,
+       0,2.9232,-0.2736,       0,2.98125,-0.325,       0.053508,2.98125,-0.320834,
+       0.053508,2.98125,-0.320834,     0.045032,2.9232,-0.270092,      0,2.9232,-0.2736,
+       0.216979,2.86335,-0.036157,     0.270092,2.9232,-0.045032,      0.2736,2.9232,0,
+       0.2736,2.9232,0,        0.2198,2.86335,0,       0.216979,2.86335,-0.036157,
+       0.208794,2.86335,-0.07027,      0.25991,2.9232,-0.087511,       0.270092,2.9232,-0.045032,
+       0.270092,2.9232,-0.045032,      0.216979,2.86335,-0.036157,     0.208794,2.86335,-0.07027,
+       0.195658,2.86335,-0.101925,     0.243569,2.9232,-0.12692,       0.25991,2.9232,-0.087511,
+       0.25991,2.9232,-0.087511,       0.208794,2.86335,-0.07027,      0.195658,2.86335,-0.101925,
+       0.177989,2.86335,-0.130707,     0.221585,2.9232,-0.162745,      0.243569,2.9232,-0.12692,
+       0.243569,2.9232,-0.12692,       0.195658,2.86335,-0.101925,     0.177989,2.86335,-0.130707,
+       0.1562,2.86335,-0.1562, 0.194472,2.9232,-0.194472,      0.221585,2.9232,-0.162745,
+       0.221585,2.9232,-0.162745,      0.177989,2.86335,-0.130707,     0.1562,2.86335,-0.1562,
+       0.130707,2.86335,-0.177989,     0.162745,2.9232,-0.221585,      0.194472,2.9232,-0.194472,
+       0.194472,2.9232,-0.194472,      0.1562,2.86335,-0.1562, 0.130707,2.86335,-0.177989,
+       0.101925,2.86335,-0.195658,     0.12692,2.9232,-0.243569,       0.162745,2.9232,-0.221585,
+       0.162745,2.9232,-0.221585,      0.130707,2.86335,-0.177989,     0.101925,2.86335,-0.195658,
+       0.07027,2.86335,-0.208794,      0.087511,2.9232,-0.25991,       0.12692,2.9232,-0.243569,
+       0.12692,2.9232,-0.243569,       0.101925,2.86335,-0.195658,     0.07027,2.86335,-0.208794,
+       0.036157,2.86335,-0.216979,     0.045032,2.9232,-0.270092,      0.087511,2.9232,-0.25991,
+       0.087511,2.9232,-0.25991,       0.07027,2.86335,-0.208794,      0.036157,2.86335,-0.216979,
+       0,2.86335,-0.2198,      0,2.9232,-0.2736,       0.045032,2.9232,-0.270092,
+       0.045032,2.9232,-0.270092,      0.036157,2.86335,-0.216979,     0,2.86335,-0.2198,
+       0.176897,2.8044,-0.02945,       0.216979,2.86335,-0.036157,     0.2198,2.86335,0,
+       0.2198,2.86335,0,       0.1792,2.8044,0,        0.176897,2.8044,-0.02945,
+       0.170215,2.8044,-0.057246,      0.208794,2.86335,-0.07027,      0.216979,2.86335,-0.036157,
+       0.216979,2.86335,-0.036157,     0.176897,2.8044,-0.02945,       0.170215,2.8044,-0.057246,
+       0.159496,2.8044,-0.083047,      0.195658,2.86335,-0.101925,     0.208794,2.86335,-0.07027,
+       0.208794,2.86335,-0.07027,      0.170215,2.8044,-0.057246,      0.159496,2.8044,-0.083047,
+       0.145078,2.8044,-0.106513,      0.177989,2.86335,-0.130707,     0.195658,2.86335,-0.101925,
+       0.195658,2.86335,-0.101925,     0.159496,2.8044,-0.083047,      0.145078,2.8044,-0.106513,
+       0.127304,2.8044,-0.127304,      0.1562,2.86335,-0.1562, 0.177989,2.86335,-0.130707,
+       0.177989,2.86335,-0.130707,     0.145078,2.8044,-0.106513,      0.127304,2.8044,-0.127304,
+       0.106513,2.8044,-0.145078,      0.130707,2.86335,-0.177989,     0.1562,2.86335,-0.1562,
+       0.1562,2.86335,-0.1562, 0.127304,2.8044,-0.127304,      0.106513,2.8044,-0.145078,
+       0.083047,2.8044,-0.159496,      0.101925,2.86335,-0.195658,     0.130707,2.86335,-0.177989,
+       0.130707,2.86335,-0.177989,     0.106513,2.8044,-0.145078,      0.083047,2.8044,-0.159496,
+       0.057246,2.8044,-0.170215,      0.07027,2.86335,-0.208794,      0.101925,2.86335,-0.195658,
+       0.101925,2.86335,-0.195658,     0.083047,2.8044,-0.159496,      0.057246,2.8044,-0.170215,
+       0.02945,2.8044,-0.176897,       0.036157,2.86335,-0.216979,     0.07027,2.86335,-0.208794,
+       0.07027,2.86335,-0.208794,      0.057246,2.8044,-0.170215,      0.02945,2.8044,-0.176897,
+       0,2.8044,-0.1792,       0,2.86335,-0.2198,      0.036157,2.86335,-0.216979,
+       0.036157,2.86335,-0.216979,     0.02945,2.8044,-0.176897,       0,2.8044,-0.1792,
+       0.165245,2.74905,-0.02748,      0.176897,2.8044,-0.02945,       0.1792,2.8044,0,
+       0.1792,2.8044,0,        0.1674,2.74905,0,       0.165245,2.74905,-0.02748,
+       0.158995,2.74905,-0.053428,     0.170215,2.8044,-0.057246,      0.176897,2.8044,-0.02945,
+       0.176897,2.8044,-0.02945,       0.165245,2.74905,-0.02748,      0.158995,2.74905,-0.053428,
+       0.148969,2.74905,-0.077523,     0.159496,2.8044,-0.083047,      0.170215,2.8044,-0.057246,
+       0.170215,2.8044,-0.057246,      0.158995,2.74905,-0.053428,     0.148969,2.74905,-0.077523,
+       0.135489,2.74905,-0.099446,     0.145078,2.8044,-0.106513,      0.159496,2.8044,-0.083047,
+       0.159496,2.8044,-0.083047,      0.148969,2.74905,-0.077523,     0.135489,2.74905,-0.099446,
+       0.118874,2.74905,-0.118874,     0.127304,2.8044,-0.127304,      0.145078,2.8044,-0.106513,
+       0.145078,2.8044,-0.106513,      0.135489,2.74905,-0.099446,     0.118874,2.74905,-0.118874,
+       0.099446,2.74905,-0.135489,     0.106513,2.8044,-0.145078,      0.127304,2.8044,-0.127304,
+       0.127304,2.8044,-0.127304,      0.118874,2.74905,-0.118874,     0.099446,2.74905,-0.135489,
+       0.077523,2.74905,-0.148969,     0.083047,2.8044,-0.159496,      0.106513,2.8044,-0.145078,
+       0.106513,2.8044,-0.145078,      0.099446,2.74905,-0.135489,     0.077523,2.74905,-0.148969,
+       0.053428,2.74905,-0.158995,     0.057246,2.8044,-0.170215,      0.083047,2.8044,-0.159496,
+       0.083047,2.8044,-0.159496,      0.077523,2.74905,-0.148969,     0.053428,2.74905,-0.158995,
+       0.02748,2.74905,-0.165245,      0.02945,2.8044,-0.176897,       0.057246,2.8044,-0.170215,
+       0.057246,2.8044,-0.170215,      0.053428,2.74905,-0.158995,     0.02748,2.74905,-0.165245,
+       0,2.74905,-0.1674,      0,2.8044,-0.1792,       0.02945,2.8044,-0.176897,
+       0.02945,2.8044,-0.176897,       0.02748,2.74905,-0.165245,      0,2.74905,-0.1674,
+       0.197424,2.7,-0.032816, 0.165245,2.74905,-0.02748,      0.1674,2.74905,0,
+       0.1674,2.74905,0,       0.2,2.7,0,      0.197424,2.7,-0.032816,
+       0.189952,2.7,-0.063808, 0.158995,2.74905,-0.053428,     0.165245,2.74905,-0.02748,
+       0.165245,2.74905,-0.02748,      0.197424,2.7,-0.032816, 0.189952,2.7,-0.063808,
+       0.177968,2.7,-0.092592, 0.148969,2.74905,-0.077523,     0.158995,2.74905,-0.053428,
+       0.158995,2.74905,-0.053428,     0.189952,2.7,-0.063808, 0.177968,2.7,-0.092592,
+       0.161856,2.7,-0.118784, 0.135489,2.74905,-0.099446,     0.148969,2.74905,-0.077523,
+       0.148969,2.74905,-0.077523,     0.177968,2.7,-0.092592, 0.161856,2.7,-0.118784,
+       0.142,2.7,-0.142,       0.118874,2.74905,-0.118874,     0.135489,2.74905,-0.099446,
+       0.135489,2.74905,-0.099446,     0.161856,2.7,-0.118784, 0.142,2.7,-0.142,
+       0.118784,2.7,-0.161856, 0.099446,2.74905,-0.135489,     0.118874,2.74905,-0.118874,
+       0.118874,2.74905,-0.118874,     0.142,2.7,-0.142,       0.118784,2.7,-0.161856,
+       0.092592,2.7,-0.177968, 0.077523,2.74905,-0.148969,     0.099446,2.74905,-0.135489,
+       0.099446,2.74905,-0.135489,     0.118784,2.7,-0.161856, 0.092592,2.7,-0.177968,
+       0.063808,2.7,-0.189952, 0.053428,2.74905,-0.158995,     0.077523,2.74905,-0.148969,
+       0.077523,2.74905,-0.148969,     0.092592,2.7,-0.177968, 0.063808,2.7,-0.189952,
+       0.032816,2.7,-0.197424, 0.02748,2.74905,-0.165245,      0.053428,2.74905,-0.158995,
+       0.053428,2.74905,-0.158995,     0.063808,2.7,-0.189952, 0.032816,2.7,-0.197424,
+       0,2.7,-0.2,     0,2.74905,-0.1674,      0.02748,2.74905,-0.165245,
+       0.02748,2.74905,-0.165245,      0.032816,2.7,-0.197424, 0,2.7,-0.2,
+       0,3.15,0,       0,3.14145,-0.1946,      -0.032048,3.14145,-0.192107,
+       0,3.15,0,       -0.032048,3.14145,-0.192107,    -0.062272,3.14145,-0.18487,
+       0,3.15,0,       -0.062272,3.14145,-0.18487,     -0.090306,3.14145,-0.173255,
+       0,3.15,0,       -0.090306,3.14145,-0.173255,    -0.115787,3.14145,-0.157626,
+       0,3.15,0,       -0.115787,3.14145,-0.157626,    -0.138348,3.14145,-0.138348,
+       0,3.15,0,       -0.138348,3.14145,-0.138348,    -0.157626,3.14145,-0.115787,
+       0,3.15,0,       -0.157626,3.14145,-0.115787,    -0.173255,3.14145,-0.090306,
+       0,3.15,0,       -0.173255,3.14145,-0.090306,    -0.18487,3.14145,-0.062272,
+       0,3.15,0,       -0.18487,3.14145,-0.062272,     -0.192107,3.14145,-0.032048,
+       0,3.15,0,       -0.192107,3.14145,-0.032048,    -0.1946,3.14145,0,
+       -0.050855,3.1176,-0.304843,     -0.032048,3.14145,-0.192107,    0,3.14145,-0.1946,
+       0,3.14145,-0.1946,      0,3.1176,-0.3088,       -0.050855,3.1176,-0.304843,
+       -0.098814,3.1176,-0.29336,      -0.062272,3.14145,-0.18487,     -0.032048,3.14145,-0.192107,
+       -0.032048,3.14145,-0.192107,    -0.050855,3.1176,-0.304843,     -0.098814,3.1176,-0.29336,
+       -0.143301,3.1176,-0.274928,     -0.090306,3.14145,-0.173255,    -0.062272,3.14145,-0.18487,
+       -0.062272,3.14145,-0.18487,     -0.098814,3.1176,-0.29336,      -0.143301,3.1176,-0.274928,
+       -0.183734,3.1176,-0.250127,     -0.115787,3.14145,-0.157626,    -0.090306,3.14145,-0.173255,
+       -0.090306,3.14145,-0.173255,    -0.143301,3.1176,-0.274928,     -0.183734,3.1176,-0.250127,
+       -0.219536,3.1176,-0.219536,     -0.138348,3.14145,-0.138348,    -0.115787,3.14145,-0.157626,
+       -0.115787,3.14145,-0.157626,    -0.183734,3.1176,-0.250127,     -0.219536,3.1176,-0.219536,
+       -0.250127,3.1176,-0.183734,     -0.157626,3.14145,-0.115787,    -0.138348,3.14145,-0.138348,
+       -0.138348,3.14145,-0.138348,    -0.219536,3.1176,-0.219536,     -0.250127,3.1176,-0.183734,
+       -0.274928,3.1176,-0.143301,     -0.173255,3.14145,-0.090306,    -0.157626,3.14145,-0.115787,
+       -0.157626,3.14145,-0.115787,    -0.250127,3.1176,-0.183734,     -0.274928,3.1176,-0.143301,
+       -0.29336,3.1176,-0.098814,      -0.18487,3.14145,-0.062272,     -0.173255,3.14145,-0.090306,
+       -0.173255,3.14145,-0.090306,    -0.274928,3.1176,-0.143301,     -0.29336,3.1176,-0.098814,
+       -0.304843,3.1176,-0.050855,     -0.192107,3.14145,-0.032048,    -0.18487,3.14145,-0.062272,
+       -0.18487,3.14145,-0.062272,     -0.29336,3.1176,-0.098814,      -0.304843,3.1176,-0.050855,
+       -0.3088,3.1176,0,       -0.1946,3.14145,0,      -0.192107,3.14145,-0.032048,
+       -0.192107,3.14145,-0.032048,    -0.304843,3.1176,-0.050855,     -0.3088,3.1176,0,
+       -0.058988,3.08115,-0.35361,     -0.050855,3.1176,-0.304843,     0,3.1176,-0.3088,
+       0,3.1176,-0.3088,       0,3.08115,-0.3582,      -0.058988,3.08115,-0.35361,
+       -0.114619,3.08115,-0.340289,    -0.098814,3.1176,-0.29336,      -0.050855,3.1176,-0.304843,
+       -0.050855,3.1176,-0.304843,     -0.058988,3.08115,-0.35361,     -0.114619,3.08115,-0.340289,
+       -0.166221,3.08115,-0.318907,    -0.143301,3.1176,-0.274928,     -0.098814,3.1176,-0.29336,
+       -0.098814,3.1176,-0.29336,      -0.114619,3.08115,-0.340289,    -0.166221,3.08115,-0.318907,
+       -0.213123,3.08115,-0.290138,    -0.183734,3.1176,-0.250127,     -0.143301,3.1176,-0.274928,
+       -0.143301,3.1176,-0.274928,     -0.166221,3.08115,-0.318907,    -0.213123,3.08115,-0.290138,
+       -0.254653,3.08115,-0.254653,    -0.219536,3.1176,-0.219536,     -0.183734,3.1176,-0.250127,
+       -0.183734,3.1176,-0.250127,     -0.213123,3.08115,-0.290138,    -0.254653,3.08115,-0.254653,
+       -0.290138,3.08115,-0.213123,    -0.250127,3.1176,-0.183734,     -0.219536,3.1176,-0.219536,
+       -0.219536,3.1176,-0.219536,     -0.254653,3.08115,-0.254653,    -0.290138,3.08115,-0.213123,
+       -0.318907,3.08115,-0.166221,    -0.274928,3.1176,-0.143301,     -0.250127,3.1176,-0.183734,
+       -0.250127,3.1176,-0.183734,     -0.290138,3.08115,-0.213123,    -0.318907,3.08115,-0.166221,
+       -0.340289,3.08115,-0.114619,    -0.29336,3.1176,-0.098814,      -0.274928,3.1176,-0.143301,
+       -0.274928,3.1176,-0.143301,     -0.318907,3.08115,-0.166221,    -0.340289,3.08115,-0.114619,
+       -0.35361,3.08115,-0.058988,     -0.304843,3.1176,-0.050855,     -0.29336,3.1176,-0.098814,
+       -0.29336,3.1176,-0.098814,      -0.340289,3.08115,-0.114619,    -0.35361,3.08115,-0.058988,
+       -0.3582,3.08115,0,      -0.3088,3.1176,0,       -0.304843,3.1176,-0.050855,
+       -0.304843,3.1176,-0.050855,     -0.35361,3.08115,-0.058988,     -0.3582,3.08115,0,
+       -0.059016,3.0348,-0.353807,     -0.058988,3.08115,-0.35361,     0,3.08115,-0.3582,
+       0,3.08115,-0.3582,      0,3.0348,-0.3584,       -0.059016,3.0348,-0.353807,
+       -0.114676,3.0348,-0.340477,     -0.114619,3.08115,-0.340289,    -0.058988,3.08115,-0.35361,
+       -0.058988,3.08115,-0.35361,     -0.059016,3.0348,-0.353807,     -0.114676,3.0348,-0.340477,
+       -0.166306,3.0348,-0.319082,     -0.166221,3.08115,-0.318907,    -0.114619,3.08115,-0.340289,
+       -0.114619,3.08115,-0.340289,    -0.114676,3.0348,-0.340477,     -0.166306,3.0348,-0.319082,
+       -0.213234,3.0348,-0.290295,     -0.213123,3.08115,-0.290138,    -0.166221,3.08115,-0.318907,
+       -0.166221,3.08115,-0.318907,    -0.166306,3.0348,-0.319082,     -0.213234,3.0348,-0.290295,
+       -0.254788,3.0348,-0.254788,     -0.254653,3.08115,-0.254653,    -0.213123,3.08115,-0.290138,
+       -0.213123,3.08115,-0.290138,    -0.213234,3.0348,-0.290295,     -0.254788,3.0348,-0.254788,
+       -0.290295,3.0348,-0.213234,     -0.290138,3.08115,-0.213123,    -0.254653,3.08115,-0.254653,
+       -0.254653,3.08115,-0.254653,    -0.254788,3.0348,-0.254788,     -0.290295,3.0348,-0.213234,
+       -0.319082,3.0348,-0.166306,     -0.318907,3.08115,-0.166221,    -0.290138,3.08115,-0.213123,
+       -0.290138,3.08115,-0.213123,    -0.290295,3.0348,-0.213234,     -0.319082,3.0348,-0.166306,
+       -0.340477,3.0348,-0.114676,     -0.340289,3.08115,-0.114619,    -0.318907,3.08115,-0.166221,
+       -0.318907,3.08115,-0.166221,    -0.319082,3.0348,-0.166306,     -0.340477,3.0348,-0.114676,
+       -0.353807,3.0348,-0.059016,     -0.35361,3.08115,-0.058988,     -0.340289,3.08115,-0.114619,
+       -0.340289,3.08115,-0.114619,    -0.340477,3.0348,-0.114676,     -0.353807,3.0348,-0.059016,
+       -0.3584,3.0348,0,       -0.3582,3.08115,0,      -0.35361,3.08115,-0.058988,
+       -0.35361,3.08115,-0.058988,     -0.353807,3.0348,-0.059016,     -0.3584,3.0348,0,
+       -0.053508,2.98125,-0.320834,    -0.059016,3.0348,-0.353807,     0,3.0348,-0.3584,
+       0,3.0348,-0.3584,       0,2.98125,-0.325,       -0.053508,2.98125,-0.320834,
+       -0.103976,2.98125,-0.308744,    -0.114676,3.0348,-0.340477,     -0.059016,3.0348,-0.353807,
+       -0.059016,3.0348,-0.353807,     -0.053508,2.98125,-0.320834,    -0.103976,2.98125,-0.308744,
+       -0.150793,2.98125,-0.28934,     -0.166306,3.0348,-0.319082,     -0.114676,3.0348,-0.340477,
+       -0.114676,3.0348,-0.340477,     -0.103976,2.98125,-0.308744,    -0.150793,2.98125,-0.28934,
+       -0.193348,2.98125,-0.263232,    -0.213234,3.0348,-0.290295,     -0.166306,3.0348,-0.319082,
+       -0.166306,3.0348,-0.319082,     -0.150793,2.98125,-0.28934,     -0.193348,2.98125,-0.263232,
+       -0.231031,2.98125,-0.231031,    -0.254788,3.0348,-0.254788,     -0.213234,3.0348,-0.290295,
+       -0.213234,3.0348,-0.290295,     -0.193348,2.98125,-0.263232,    -0.231031,2.98125,-0.231031,
+       -0.263232,2.98125,-0.193348,    -0.290295,3.0348,-0.213234,     -0.254788,3.0348,-0.254788,
+       -0.254788,3.0348,-0.254788,     -0.231031,2.98125,-0.231031,    -0.263232,2.98125,-0.193348,
+       -0.28934,2.98125,-0.150793,     -0.319082,3.0348,-0.166306,     -0.290295,3.0348,-0.213234,
+       -0.290295,3.0348,-0.213234,     -0.263232,2.98125,-0.193348,    -0.28934,2.98125,-0.150793,
+       -0.308744,2.98125,-0.103976,    -0.340477,3.0348,-0.114676,     -0.319082,3.0348,-0.166306,
+       -0.319082,3.0348,-0.166306,     -0.28934,2.98125,-0.150793,     -0.308744,2.98125,-0.103976,
+       -0.320834,2.98125,-0.053508,    -0.353807,3.0348,-0.059016,     -0.340477,3.0348,-0.114676,
+       -0.340477,3.0348,-0.114676,     -0.308744,2.98125,-0.103976,    -0.320834,2.98125,-0.053508,
+       -0.325,2.98125,0,       -0.3584,3.0348,0,       -0.353807,3.0348,-0.059016,
+       -0.353807,3.0348,-0.059016,     -0.320834,2.98125,-0.053508,    -0.325,2.98125,0,
+       -0.045032,2.9232,-0.270092,     -0.053508,2.98125,-0.320834,    0,2.98125,-0.325,
+       0,2.98125,-0.325,       0,2.9232,-0.2736,       -0.045032,2.9232,-0.270092,
+       -0.087511,2.9232,-0.25991,      -0.103976,2.98125,-0.308744,    -0.053508,2.98125,-0.320834,
+       -0.053508,2.98125,-0.320834,    -0.045032,2.9232,-0.270092,     -0.087511,2.9232,-0.25991,
+       -0.12692,2.9232,-0.243569,      -0.150793,2.98125,-0.28934,     -0.103976,2.98125,-0.308744,
+       -0.103976,2.98125,-0.308744,    -0.087511,2.9232,-0.25991,      -0.12692,2.9232,-0.243569,
+       -0.162745,2.9232,-0.221585,     -0.193348,2.98125,-0.263232,    -0.150793,2.98125,-0.28934,
+       -0.150793,2.98125,-0.28934,     -0.12692,2.9232,-0.243569,      -0.162745,2.9232,-0.221585,
+       -0.194472,2.9232,-0.194472,     -0.231031,2.98125,-0.231031,    -0.193348,2.98125,-0.263232,
+       -0.193348,2.98125,-0.263232,    -0.162745,2.9232,-0.221585,     -0.194472,2.9232,-0.194472,
+       -0.221585,2.9232,-0.162745,     -0.263232,2.98125,-0.193348,    -0.231031,2.98125,-0.231031,
+       -0.231031,2.98125,-0.231031,    -0.194472,2.9232,-0.194472,     -0.221585,2.9232,-0.162745,
+       -0.243569,2.9232,-0.12692,      -0.28934,2.98125,-0.150793,     -0.263232,2.98125,-0.193348,
+       -0.263232,2.98125,-0.193348,    -0.221585,2.9232,-0.162745,     -0.243569,2.9232,-0.12692,
+       -0.25991,2.9232,-0.087511,      -0.308744,2.98125,-0.103976,    -0.28934,2.98125,-0.150793,
+       -0.28934,2.98125,-0.150793,     -0.243569,2.9232,-0.12692,      -0.25991,2.9232,-0.087511,
+       -0.270092,2.9232,-0.045032,     -0.320834,2.98125,-0.053508,    -0.308744,2.98125,-0.103976,
+       -0.308744,2.98125,-0.103976,    -0.25991,2.9232,-0.087511,      -0.270092,2.9232,-0.045032,
+       -0.2736,2.9232,0,       -0.325,2.98125,0,       -0.320834,2.98125,-0.053508,
+       -0.320834,2.98125,-0.053508,    -0.270092,2.9232,-0.045032,     -0.2736,2.9232,0,
+       -0.036157,2.86335,-0.216979,    -0.045032,2.9232,-0.270092,     0,2.9232,-0.2736,
+       0,2.9232,-0.2736,       0,2.86335,-0.2198,      -0.036157,2.86335,-0.216979,
+       -0.07027,2.86335,-0.208794,     -0.087511,2.9232,-0.25991,      -0.045032,2.9232,-0.270092,
+       -0.045032,2.9232,-0.270092,     -0.036157,2.86335,-0.216979,    -0.07027,2.86335,-0.208794,
+       -0.101925,2.86335,-0.195658,    -0.12692,2.9232,-0.243569,      -0.087511,2.9232,-0.25991,
+       -0.087511,2.9232,-0.25991,      -0.07027,2.86335,-0.208794,     -0.101925,2.86335,-0.195658,
+       -0.130707,2.86335,-0.177989,    -0.162745,2.9232,-0.221585,     -0.12692,2.9232,-0.243569,
+       -0.12692,2.9232,-0.243569,      -0.101925,2.86335,-0.195658,    -0.130707,2.86335,-0.177989,
+       -0.1562,2.86335,-0.1562,        -0.194472,2.9232,-0.194472,     -0.162745,2.9232,-0.221585,
+       -0.162745,2.9232,-0.221585,     -0.130707,2.86335,-0.177989,    -0.1562,2.86335,-0.1562,
+       -0.177989,2.86335,-0.130707,    -0.221585,2.9232,-0.162745,     -0.194472,2.9232,-0.194472,
+       -0.194472,2.9232,-0.194472,     -0.1562,2.86335,-0.1562,        -0.177989,2.86335,-0.130707,
+       -0.195658,2.86335,-0.101925,    -0.243569,2.9232,-0.12692,      -0.221585,2.9232,-0.162745,
+       -0.221585,2.9232,-0.162745,     -0.177989,2.86335,-0.130707,    -0.195658,2.86335,-0.101925,
+       -0.208794,2.86335,-0.07027,     -0.25991,2.9232,-0.087511,      -0.243569,2.9232,-0.12692,
+       -0.243569,2.9232,-0.12692,      -0.195658,2.86335,-0.101925,    -0.208794,2.86335,-0.07027,
+       -0.216979,2.86335,-0.036157,    -0.270092,2.9232,-0.045032,     -0.25991,2.9232,-0.087511,
+       -0.25991,2.9232,-0.087511,      -0.208794,2.86335,-0.07027,     -0.216979,2.86335,-0.036157,
+       -0.2198,2.86335,0,      -0.2736,2.9232,0,       -0.270092,2.9232,-0.045032,
+       -0.270092,2.9232,-0.045032,     -0.216979,2.86335,-0.036157,    -0.2198,2.86335,0,
+       -0.02945,2.8044,-0.176897,      -0.036157,2.86335,-0.216979,    0,2.86335,-0.2198,
+       0,2.86335,-0.2198,      0,2.8044,-0.1792,       -0.02945,2.8044,-0.176897,
+       -0.057246,2.8044,-0.170215,     -0.07027,2.86335,-0.208794,     -0.036157,2.86335,-0.216979,
+       -0.036157,2.86335,-0.216979,    -0.02945,2.8044,-0.176897,      -0.057246,2.8044,-0.170215,
+       -0.083047,2.8044,-0.159496,     -0.101925,2.86335,-0.195658,    -0.07027,2.86335,-0.208794,
+       -0.07027,2.86335,-0.208794,     -0.057246,2.8044,-0.170215,     -0.083047,2.8044,-0.159496,
+       -0.106513,2.8044,-0.145078,     -0.130707,2.86335,-0.177989,    -0.101925,2.86335,-0.195658,
+       -0.101925,2.86335,-0.195658,    -0.083047,2.8044,-0.159496,     -0.106513,2.8044,-0.145078,
+       -0.127304,2.8044,-0.127304,     -0.1562,2.86335,-0.1562,        -0.130707,2.86335,-0.177989,
+       -0.130707,2.86335,-0.177989,    -0.106513,2.8044,-0.145078,     -0.127304,2.8044,-0.127304,
+       -0.145078,2.8044,-0.106513,     -0.177989,2.86335,-0.130707,    -0.1562,2.86335,-0.1562,
+       -0.1562,2.86335,-0.1562,        -0.127304,2.8044,-0.127304,     -0.145078,2.8044,-0.106513,
+       -0.159496,2.8044,-0.083047,     -0.195658,2.86335,-0.101925,    -0.177989,2.86335,-0.130707,
+       -0.177989,2.86335,-0.130707,    -0.145078,2.8044,-0.106513,     -0.159496,2.8044,-0.083047,
+       -0.170215,2.8044,-0.057246,     -0.208794,2.86335,-0.07027,     -0.195658,2.86335,-0.101925,
+       -0.195658,2.86335,-0.101925,    -0.159496,2.8044,-0.083047,     -0.170215,2.8044,-0.057246,
+       -0.176897,2.8044,-0.02945,      -0.216979,2.86335,-0.036157,    -0.208794,2.86335,-0.07027,
+       -0.208794,2.86335,-0.07027,     -0.170215,2.8044,-0.057246,     -0.176897,2.8044,-0.02945,
+       -0.1792,2.8044,0,       -0.2198,2.86335,0,      -0.216979,2.86335,-0.036157,
+       -0.216979,2.86335,-0.036157,    -0.176897,2.8044,-0.02945,      -0.1792,2.8044,0,
+       -0.02748,2.74905,-0.165245,     -0.02945,2.8044,-0.176897,      0,2.8044,-0.1792,
+       0,2.8044,-0.1792,       0,2.74905,-0.1674,      -0.02748,2.74905,-0.165245,
+       -0.053428,2.74905,-0.158995,    -0.057246,2.8044,-0.170215,     -0.02945,2.8044,-0.176897,
+       -0.02945,2.8044,-0.176897,      -0.02748,2.74905,-0.165245,     -0.053428,2.74905,-0.158995,
+       -0.077523,2.74905,-0.148969,    -0.083047,2.8044,-0.159496,     -0.057246,2.8044,-0.170215,
+       -0.057246,2.8044,-0.170215,     -0.053428,2.74905,-0.158995,    -0.077523,2.74905,-0.148969,
+       -0.099446,2.74905,-0.135489,    -0.106513,2.8044,-0.145078,     -0.083047,2.8044,-0.159496,
+       -0.083047,2.8044,-0.159496,     -0.077523,2.74905,-0.148969,    -0.099446,2.74905,-0.135489,
+       -0.118874,2.74905,-0.118874,    -0.127304,2.8044,-0.127304,     -0.106513,2.8044,-0.145078,
+       -0.106513,2.8044,-0.145078,     -0.099446,2.74905,-0.135489,    -0.118874,2.74905,-0.118874,
+       -0.135489,2.74905,-0.099446,    -0.145078,2.8044,-0.106513,     -0.127304,2.8044,-0.127304,
+       -0.127304,2.8044,-0.127304,     -0.118874,2.74905,-0.118874,    -0.135489,2.74905,-0.099446,
+       -0.148969,2.74905,-0.077523,    -0.159496,2.8044,-0.083047,     -0.145078,2.8044,-0.106513,
+       -0.145078,2.8044,-0.106513,     -0.135489,2.74905,-0.099446,    -0.148969,2.74905,-0.077523,
+       -0.158995,2.74905,-0.053428,    -0.170215,2.8044,-0.057246,     -0.159496,2.8044,-0.083047,
+       -0.159496,2.8044,-0.083047,     -0.148969,2.74905,-0.077523,    -0.158995,2.74905,-0.053428,
+       -0.165245,2.74905,-0.02748,     -0.176897,2.8044,-0.02945,      -0.170215,2.8044,-0.057246,
+       -0.170215,2.8044,-0.057246,     -0.158995,2.74905,-0.053428,    -0.165245,2.74905,-0.02748,
+       -0.1674,2.74905,0,      -0.1792,2.8044,0,       -0.176897,2.8044,-0.02945,
+       -0.176897,2.8044,-0.02945,      -0.165245,2.74905,-0.02748,     -0.1674,2.74905,0,
+       -0.032816,2.7,-0.197424,        -0.02748,2.74905,-0.165245,     0,2.74905,-0.1674,
+       0,2.74905,-0.1674,      0,2.7,-0.2,     -0.032816,2.7,-0.197424,
+       -0.063808,2.7,-0.189952,        -0.053428,2.74905,-0.158995,    -0.02748,2.74905,-0.165245,
+       -0.02748,2.74905,-0.165245,     -0.032816,2.7,-0.197424,        -0.063808,2.7,-0.189952,
+       -0.092592,2.7,-0.177968,        -0.077523,2.74905,-0.148969,    -0.053428,2.74905,-0.158995,
+       -0.053428,2.74905,-0.158995,    -0.063808,2.7,-0.189952,        -0.092592,2.7,-0.177968,
+       -0.118784,2.7,-0.161856,        -0.099446,2.74905,-0.135489,    -0.077523,2.74905,-0.148969,
+       -0.077523,2.74905,-0.148969,    -0.092592,2.7,-0.177968,        -0.118784,2.7,-0.161856,
+       -0.142,2.7,-0.142,      -0.118874,2.74905,-0.118874,    -0.099446,2.74905,-0.135489,
+       -0.099446,2.74905,-0.135489,    -0.118784,2.7,-0.161856,        -0.142,2.7,-0.142,
+       -0.161856,2.7,-0.118784,        -0.135489,2.74905,-0.099446,    -0.118874,2.74905,-0.118874,
+       -0.118874,2.74905,-0.118874,    -0.142,2.7,-0.142,      -0.161856,2.7,-0.118784,
+       -0.177968,2.7,-0.092592,        -0.148969,2.74905,-0.077523,    -0.135489,2.74905,-0.099446,
+       -0.135489,2.74905,-0.099446,    -0.161856,2.7,-0.118784,        -0.177968,2.7,-0.092592,
+       -0.189952,2.7,-0.063808,        -0.158995,2.74905,-0.053428,    -0.148969,2.74905,-0.077523,
+       -0.148969,2.74905,-0.077523,    -0.177968,2.7,-0.092592,        -0.189952,2.7,-0.063808,
+       -0.197424,2.7,-0.032816,        -0.165245,2.74905,-0.02748,     -0.158995,2.74905,-0.053428,
+       -0.158995,2.74905,-0.053428,    -0.189952,2.7,-0.063808,        -0.197424,2.7,-0.032816,
+       -0.2,2.7,0,     -0.1674,2.74905,0,      -0.165245,2.74905,-0.02748,
+       -0.165245,2.74905,-0.02748,     -0.197424,2.7,-0.032816,        -0.2,2.7,0,
+       0,3.15,0,       -0.1946,3.14145,0,      -0.192107,3.14145,0.032048,
+       0,3.15,0,       -0.192107,3.14145,0.032048,     -0.18487,3.14145,0.062272,
+       0,3.15,0,       -0.18487,3.14145,0.062272,      -0.173255,3.14145,0.090306,
+       0,3.15,0,       -0.173255,3.14145,0.090306,     -0.157626,3.14145,0.115787,
+       0,3.15,0,       -0.157626,3.14145,0.115787,     -0.138348,3.14145,0.138348,
+       0,3.15,0,       -0.138348,3.14145,0.138348,     -0.115787,3.14145,0.157626,
+       0,3.15,0,       -0.115787,3.14145,0.157626,     -0.090306,3.14145,0.173255,
+       0,3.15,0,       -0.090306,3.14145,0.173255,     -0.062272,3.14145,0.18487,
+       0,3.15,0,       -0.062272,3.14145,0.18487,      -0.032048,3.14145,0.192107,
+       0,3.15,0,       -0.032048,3.14145,0.192107,     0,3.14145,0.1946,
+       -0.304843,3.1176,0.050855,      -0.192107,3.14145,0.032048,     -0.1946,3.14145,0,
+       -0.1946,3.14145,0,      -0.3088,3.1176,0,       -0.304843,3.1176,0.050855,
+       -0.29336,3.1176,0.098814,       -0.18487,3.14145,0.062272,      -0.192107,3.14145,0.032048,
+       -0.192107,3.14145,0.032048,     -0.304843,3.1176,0.050855,      -0.29336,3.1176,0.098814,
+       -0.274928,3.1176,0.143301,      -0.173255,3.14145,0.090306,     -0.18487,3.14145,0.062272,
+       -0.18487,3.14145,0.062272,      -0.29336,3.1176,0.098814,       -0.274928,3.1176,0.143301,
+       -0.250127,3.1176,0.183734,      -0.157626,3.14145,0.115787,     -0.173255,3.14145,0.090306,
+       -0.173255,3.14145,0.090306,     -0.274928,3.1176,0.143301,      -0.250127,3.1176,0.183734,
+       -0.219536,3.1176,0.219536,      -0.138348,3.14145,0.138348,     -0.157626,3.14145,0.115787,
+       -0.157626,3.14145,0.115787,     -0.250127,3.1176,0.183734,      -0.219536,3.1176,0.219536,
+       -0.183734,3.1176,0.250127,      -0.115787,3.14145,0.157626,     -0.138348,3.14145,0.138348,
+       -0.138348,3.14145,0.138348,     -0.219536,3.1176,0.219536,      -0.183734,3.1176,0.250127,
+       -0.143301,3.1176,0.274928,      -0.090306,3.14145,0.173255,     -0.115787,3.14145,0.157626,
+       -0.115787,3.14145,0.157626,     -0.183734,3.1176,0.250127,      -0.143301,3.1176,0.274928,
+       -0.098814,3.1176,0.29336,       -0.062272,3.14145,0.18487,      -0.090306,3.14145,0.173255,
+       -0.090306,3.14145,0.173255,     -0.143301,3.1176,0.274928,      -0.098814,3.1176,0.29336,
+       -0.050855,3.1176,0.304843,      -0.032048,3.14145,0.192107,     -0.062272,3.14145,0.18487,
+       -0.062272,3.14145,0.18487,      -0.098814,3.1176,0.29336,       -0.050855,3.1176,0.304843,
+       0,3.1176,0.3088,        0,3.14145,0.1946,       -0.032048,3.14145,0.192107,
+       -0.032048,3.14145,0.192107,     -0.050855,3.1176,0.304843,      0,3.1176,0.3088,
+       -0.35361,3.08115,0.058988,      -0.304843,3.1176,0.050855,      -0.3088,3.1176,0,
+       -0.3088,3.1176,0,       -0.3582,3.08115,0,      -0.35361,3.08115,0.058988,
+       -0.340289,3.08115,0.114619,     -0.29336,3.1176,0.098814,       -0.304843,3.1176,0.050855,
+       -0.304843,3.1176,0.050855,      -0.35361,3.08115,0.058988,      -0.340289,3.08115,0.114619,
+       -0.318907,3.08115,0.166221,     -0.274928,3.1176,0.143301,      -0.29336,3.1176,0.098814,
+       -0.29336,3.1176,0.098814,       -0.340289,3.08115,0.114619,     -0.318907,3.08115,0.166221,
+       -0.290138,3.08115,0.213123,     -0.250127,3.1176,0.183734,      -0.274928,3.1176,0.143301,
+       -0.274928,3.1176,0.143301,      -0.318907,3.08115,0.166221,     -0.290138,3.08115,0.213123,
+       -0.254653,3.08115,0.254653,     -0.219536,3.1176,0.219536,      -0.250127,3.1176,0.183734,
+       -0.250127,3.1176,0.183734,      -0.290138,3.08115,0.213123,     -0.254653,3.08115,0.254653,
+       -0.213123,3.08115,0.290138,     -0.183734,3.1176,0.250127,      -0.219536,3.1176,0.219536,
+       -0.219536,3.1176,0.219536,      -0.254653,3.08115,0.254653,     -0.213123,3.08115,0.290138,
+       -0.166221,3.08115,0.318907,     -0.143301,3.1176,0.274928,      -0.183734,3.1176,0.250127,
+       -0.183734,3.1176,0.250127,      -0.213123,3.08115,0.290138,     -0.166221,3.08115,0.318907,
+       -0.114619,3.08115,0.340289,     -0.098814,3.1176,0.29336,       -0.143301,3.1176,0.274928,
+       -0.143301,3.1176,0.274928,      -0.166221,3.08115,0.318907,     -0.114619,3.08115,0.340289,
+       -0.058988,3.08115,0.35361,      -0.050855,3.1176,0.304843,      -0.098814,3.1176,0.29336,
+       -0.098814,3.1176,0.29336,       -0.114619,3.08115,0.340289,     -0.058988,3.08115,0.35361,
+       0,3.08115,0.3582,       0,3.1176,0.3088,        -0.050855,3.1176,0.304843,
+       -0.050855,3.1176,0.304843,      -0.058988,3.08115,0.35361,      0,3.08115,0.3582,
+       -0.353807,3.0348,0.059016,      -0.35361,3.08115,0.058988,      -0.3582,3.08115,0,
+       -0.3582,3.08115,0,      -0.3584,3.0348,0,       -0.353807,3.0348,0.059016,
+       -0.340477,3.0348,0.114676,      -0.340289,3.08115,0.114619,     -0.35361,3.08115,0.058988,
+       -0.35361,3.08115,0.058988,      -0.353807,3.0348,0.059016,      -0.340477,3.0348,0.114676,
+       -0.319082,3.0348,0.166306,      -0.318907,3.08115,0.166221,     -0.340289,3.08115,0.114619,
+       -0.340289,3.08115,0.114619,     -0.340477,3.0348,0.114676,      -0.319082,3.0348,0.166306,
+       -0.290295,3.0348,0.213234,      -0.290138,3.08115,0.213123,     -0.318907,3.08115,0.166221,
+       -0.318907,3.08115,0.166221,     -0.319082,3.0348,0.166306,      -0.290295,3.0348,0.213234,
+       -0.254788,3.0348,0.254788,      -0.254653,3.08115,0.254653,     -0.290138,3.08115,0.213123,
+       -0.290138,3.08115,0.213123,     -0.290295,3.0348,0.213234,      -0.254788,3.0348,0.254788,
+       -0.213234,3.0348,0.290295,      -0.213123,3.08115,0.290138,     -0.254653,3.08115,0.254653,
+       -0.254653,3.08115,0.254653,     -0.254788,3.0348,0.254788,      -0.213234,3.0348,0.290295,
+       -0.166306,3.0348,0.319082,      -0.166221,3.08115,0.318907,     -0.213123,3.08115,0.290138,
+       -0.213123,3.08115,0.290138,     -0.213234,3.0348,0.290295,      -0.166306,3.0348,0.319082,
+       -0.114676,3.0348,0.340477,      -0.114619,3.08115,0.340289,     -0.166221,3.08115,0.318907,
+       -0.166221,3.08115,0.318907,     -0.166306,3.0348,0.319082,      -0.114676,3.0348,0.340477,
+       -0.059016,3.0348,0.353807,      -0.058988,3.08115,0.35361,      -0.114619,3.08115,0.340289,
+       -0.114619,3.08115,0.340289,     -0.114676,3.0348,0.340477,      -0.059016,3.0348,0.353807,
+       0,3.0348,0.3584,        0,3.08115,0.3582,       -0.058988,3.08115,0.35361,
+       -0.058988,3.08115,0.35361,      -0.059016,3.0348,0.353807,      0,3.0348,0.3584,
+       -0.320834,2.98125,0.053508,     -0.353807,3.0348,0.059016,      -0.3584,3.0348,0,
+       -0.3584,3.0348,0,       -0.325,2.98125,0,       -0.320834,2.98125,0.053508,
+       -0.308744,2.98125,0.103976,     -0.340477,3.0348,0.114676,      -0.353807,3.0348,0.059016,
+       -0.353807,3.0348,0.059016,      -0.320834,2.98125,0.053508,     -0.308744,2.98125,0.103976,
+       -0.28934,2.98125,0.150793,      -0.319082,3.0348,0.166306,      -0.340477,3.0348,0.114676,
+       -0.340477,3.0348,0.114676,      -0.308744,2.98125,0.103976,     -0.28934,2.98125,0.150793,
+       -0.263232,2.98125,0.193348,     -0.290295,3.0348,0.213234,      -0.319082,3.0348,0.166306,
+       -0.319082,3.0348,0.166306,      -0.28934,2.98125,0.150793,      -0.263232,2.98125,0.193348,
+       -0.231031,2.98125,0.231031,     -0.254788,3.0348,0.254788,      -0.290295,3.0348,0.213234,
+       -0.290295,3.0348,0.213234,      -0.263232,2.98125,0.193348,     -0.231031,2.98125,0.231031,
+       -0.193348,2.98125,0.263232,     -0.213234,3.0348,0.290295,      -0.254788,3.0348,0.254788,
+       -0.254788,3.0348,0.254788,      -0.231031,2.98125,0.231031,     -0.193348,2.98125,0.263232,
+       -0.150793,2.98125,0.28934,      -0.166306,3.0348,0.319082,      -0.213234,3.0348,0.290295,
+       -0.213234,3.0348,0.290295,      -0.193348,2.98125,0.263232,     -0.150793,2.98125,0.28934,
+       -0.103976,2.98125,0.308744,     -0.114676,3.0348,0.340477,      -0.166306,3.0348,0.319082,
+       -0.166306,3.0348,0.319082,      -0.150793,2.98125,0.28934,      -0.103976,2.98125,0.308744,
+       -0.053508,2.98125,0.320834,     -0.059016,3.0348,0.353807,      -0.114676,3.0348,0.340477,
+       -0.114676,3.0348,0.340477,      -0.103976,2.98125,0.308744,     -0.053508,2.98125,0.320834,
+       0,2.98125,0.325,        0,3.0348,0.3584,        -0.059016,3.0348,0.353807,
+       -0.059016,3.0348,0.353807,      -0.053508,2.98125,0.320834,     0,2.98125,0.325,
+       -0.270092,2.9232,0.045032,      -0.320834,2.98125,0.053508,     -0.325,2.98125,0,
+       -0.325,2.98125,0,       -0.2736,2.9232,0,       -0.270092,2.9232,0.045032,
+       -0.25991,2.9232,0.087511,       -0.308744,2.98125,0.103976,     -0.320834,2.98125,0.053508,
+       -0.320834,2.98125,0.053508,     -0.270092,2.9232,0.045032,      -0.25991,2.9232,0.087511,
+       -0.243569,2.9232,0.12692,       -0.28934,2.98125,0.150793,      -0.308744,2.98125,0.103976,
+       -0.308744,2.98125,0.103976,     -0.25991,2.9232,0.087511,       -0.243569,2.9232,0.12692,
+       -0.221585,2.9232,0.162745,      -0.263232,2.98125,0.193348,     -0.28934,2.98125,0.150793,
+       -0.28934,2.98125,0.150793,      -0.243569,2.9232,0.12692,       -0.221585,2.9232,0.162745,
+       -0.194472,2.9232,0.194472,      -0.231031,2.98125,0.231031,     -0.263232,2.98125,0.193348,
+       -0.263232,2.98125,0.193348,     -0.221585,2.9232,0.162745,      -0.194472,2.9232,0.194472,
+       -0.162745,2.9232,0.221585,      -0.193348,2.98125,0.263232,     -0.231031,2.98125,0.231031,
+       -0.231031,2.98125,0.231031,     -0.194472,2.9232,0.194472,      -0.162745,2.9232,0.221585,
+       -0.12692,2.9232,0.243569,       -0.150793,2.98125,0.28934,      -0.193348,2.98125,0.263232,
+       -0.193348,2.98125,0.263232,     -0.162745,2.9232,0.221585,      -0.12692,2.9232,0.243569,
+       -0.087511,2.9232,0.25991,       -0.103976,2.98125,0.308744,     -0.150793,2.98125,0.28934,
+       -0.150793,2.98125,0.28934,      -0.12692,2.9232,0.243569,       -0.087511,2.9232,0.25991,
+       -0.045032,2.9232,0.270092,      -0.053508,2.98125,0.320834,     -0.103976,2.98125,0.308744,
+       -0.103976,2.98125,0.308744,     -0.087511,2.9232,0.25991,       -0.045032,2.9232,0.270092,
+       0,2.9232,0.2736,        0,2.98125,0.325,        -0.053508,2.98125,0.320834,
+       -0.053508,2.98125,0.320834,     -0.045032,2.9232,0.270092,      0,2.9232,0.2736,
+       -0.216979,2.86335,0.036157,     -0.270092,2.9232,0.045032,      -0.2736,2.9232,0,
+       -0.2736,2.9232,0,       -0.2198,2.86335,0,      -0.216979,2.86335,0.036157,
+       -0.208794,2.86335,0.07027,      -0.25991,2.9232,0.087511,       -0.270092,2.9232,0.045032,
+       -0.270092,2.9232,0.045032,      -0.216979,2.86335,0.036157,     -0.208794,2.86335,0.07027,
+       -0.195658,2.86335,0.101925,     -0.243569,2.9232,0.12692,       -0.25991,2.9232,0.087511,
+       -0.25991,2.9232,0.087511,       -0.208794,2.86335,0.07027,      -0.195658,2.86335,0.101925,
+       -0.177989,2.86335,0.130707,     -0.221585,2.9232,0.162745,      -0.243569,2.9232,0.12692,
+       -0.243569,2.9232,0.12692,       -0.195658,2.86335,0.101925,     -0.177989,2.86335,0.130707,
+       -0.1562,2.86335,0.1562, -0.194472,2.9232,0.194472,      -0.221585,2.9232,0.162745,
+       -0.221585,2.9232,0.162745,      -0.177989,2.86335,0.130707,     -0.1562,2.86335,0.1562,
+       -0.130707,2.86335,0.177989,     -0.162745,2.9232,0.221585,      -0.194472,2.9232,0.194472,
+       -0.194472,2.9232,0.194472,      -0.1562,2.86335,0.1562, -0.130707,2.86335,0.177989,
+       -0.101925,2.86335,0.195658,     -0.12692,2.9232,0.243569,       -0.162745,2.9232,0.221585,
+       -0.162745,2.9232,0.221585,      -0.130707,2.86335,0.177989,     -0.101925,2.86335,0.195658,
+       -0.07027,2.86335,0.208794,      -0.087511,2.9232,0.25991,       -0.12692,2.9232,0.243569,
+       -0.12692,2.9232,0.243569,       -0.101925,2.86335,0.195658,     -0.07027,2.86335,0.208794,
+       -0.036157,2.86335,0.216979,     -0.045032,2.9232,0.270092,      -0.087511,2.9232,0.25991,
+       -0.087511,2.9232,0.25991,       -0.07027,2.86335,0.208794,      -0.036157,2.86335,0.216979,
+       0,2.86335,0.2198,       0,2.9232,0.2736,        -0.045032,2.9232,0.270092,
+       -0.045032,2.9232,0.270092,      -0.036157,2.86335,0.216979,     0,2.86335,0.2198,
+       -0.176897,2.8044,0.02945,       -0.216979,2.86335,0.036157,     -0.2198,2.86335,0,
+       -0.2198,2.86335,0,      -0.1792,2.8044,0,       -0.176897,2.8044,0.02945,
+       -0.170215,2.8044,0.057246,      -0.208794,2.86335,0.07027,      -0.216979,2.86335,0.036157,
+       -0.216979,2.86335,0.036157,     -0.176897,2.8044,0.02945,       -0.170215,2.8044,0.057246,
+       -0.159496,2.8044,0.083047,      -0.195658,2.86335,0.101925,     -0.208794,2.86335,0.07027,
+       -0.208794,2.86335,0.07027,      -0.170215,2.8044,0.057246,      -0.159496,2.8044,0.083047,
+       -0.145078,2.8044,0.106513,      -0.177989,2.86335,0.130707,     -0.195658,2.86335,0.101925,
+       -0.195658,2.86335,0.101925,     -0.159496,2.8044,0.083047,      -0.145078,2.8044,0.106513,
+       -0.127304,2.8044,0.127304,      -0.1562,2.86335,0.1562, -0.177989,2.86335,0.130707,
+       -0.177989,2.86335,0.130707,     -0.145078,2.8044,0.106513,      -0.127304,2.8044,0.127304,
+       -0.106513,2.8044,0.145078,      -0.130707,2.86335,0.177989,     -0.1562,2.86335,0.1562,
+       -0.1562,2.86335,0.1562, -0.127304,2.8044,0.127304,      -0.106513,2.8044,0.145078,
+       -0.083047,2.8044,0.159496,      -0.101925,2.86335,0.195658,     -0.130707,2.86335,0.177989,
+       -0.130707,2.86335,0.177989,     -0.106513,2.8044,0.145078,      -0.083047,2.8044,0.159496,
+       -0.057246,2.8044,0.170215,      -0.07027,2.86335,0.208794,      -0.101925,2.86335,0.195658,
+       -0.101925,2.86335,0.195658,     -0.083047,2.8044,0.159496,      -0.057246,2.8044,0.170215,
+       -0.02945,2.8044,0.176897,       -0.036157,2.86335,0.216979,     -0.07027,2.86335,0.208794,
+       -0.07027,2.86335,0.208794,      -0.057246,2.8044,0.170215,      -0.02945,2.8044,0.176897,
+       0,2.8044,0.1792,        0,2.86335,0.2198,       -0.036157,2.86335,0.216979,
+       -0.036157,2.86335,0.216979,     -0.02945,2.8044,0.176897,       0,2.8044,0.1792,
+       -0.165245,2.74905,0.02748,      -0.176897,2.8044,0.02945,       -0.1792,2.8044,0,
+       -0.1792,2.8044,0,       -0.1674,2.74905,0,      -0.165245,2.74905,0.02748,
+       -0.158995,2.74905,0.053428,     -0.170215,2.8044,0.057246,      -0.176897,2.8044,0.02945,
+       -0.176897,2.8044,0.02945,       -0.165245,2.74905,0.02748,      -0.158995,2.74905,0.053428,
+       -0.148969,2.74905,0.077523,     -0.159496,2.8044,0.083047,      -0.170215,2.8044,0.057246,
+       -0.170215,2.8044,0.057246,      -0.158995,2.74905,0.053428,     -0.148969,2.74905,0.077523,
+       -0.135489,2.74905,0.099446,     -0.145078,2.8044,0.106513,      -0.159496,2.8044,0.083047,
+       -0.159496,2.8044,0.083047,      -0.148969,2.74905,0.077523,     -0.135489,2.74905,0.099446,
+       -0.118874,2.74905,0.118874,     -0.127304,2.8044,0.127304,      -0.145078,2.8044,0.106513,
+       -0.145078,2.8044,0.106513,      -0.135489,2.74905,0.099446,     -0.118874,2.74905,0.118874,
+       -0.099446,2.74905,0.135489,     -0.106513,2.8044,0.145078,      -0.127304,2.8044,0.127304,
+       -0.127304,2.8044,0.127304,      -0.118874,2.74905,0.118874,     -0.099446,2.74905,0.135489,
+       -0.077523,2.74905,0.148969,     -0.083047,2.8044,0.159496,      -0.106513,2.8044,0.145078,
+       -0.106513,2.8044,0.145078,      -0.099446,2.74905,0.135489,     -0.077523,2.74905,0.148969,
+       -0.053428,2.74905,0.158995,     -0.057246,2.8044,0.170215,      -0.083047,2.8044,0.159496,
+       -0.083047,2.8044,0.159496,      -0.077523,2.74905,0.148969,     -0.053428,2.74905,0.158995,
+       -0.02748,2.74905,0.165245,      -0.02945,2.8044,0.176897,       -0.057246,2.8044,0.170215,
+       -0.057246,2.8044,0.170215,      -0.053428,2.74905,0.158995,     -0.02748,2.74905,0.165245,
+       0,2.74905,0.1674,       0,2.8044,0.1792,        -0.02945,2.8044,0.176897,
+       -0.02945,2.8044,0.176897,       -0.02748,2.74905,0.165245,      0,2.74905,0.1674,
+       -0.197424,2.7,0.032816, -0.165245,2.74905,0.02748,      -0.1674,2.74905,0,
+       -0.1674,2.74905,0,      -0.2,2.7,0,     -0.197424,2.7,0.032816,
+       -0.189952,2.7,0.063808, -0.158995,2.74905,0.053428,     -0.165245,2.74905,0.02748,
+       -0.165245,2.74905,0.02748,      -0.197424,2.7,0.032816, -0.189952,2.7,0.063808,
+       -0.177968,2.7,0.092592, -0.148969,2.74905,0.077523,     -0.158995,2.74905,0.053428,
+       -0.158995,2.74905,0.053428,     -0.189952,2.7,0.063808, -0.177968,2.7,0.092592,
+       -0.161856,2.7,0.118784, -0.135489,2.74905,0.099446,     -0.148969,2.74905,0.077523,
+       -0.148969,2.74905,0.077523,     -0.177968,2.7,0.092592, -0.161856,2.7,0.118784,
+       -0.142,2.7,0.142,       -0.118874,2.74905,0.118874,     -0.135489,2.74905,0.099446,
+       -0.135489,2.74905,0.099446,     -0.161856,2.7,0.118784, -0.142,2.7,0.142,
+       -0.118784,2.7,0.161856, -0.099446,2.74905,0.135489,     -0.118874,2.74905,0.118874,
+       -0.118874,2.74905,0.118874,     -0.142,2.7,0.142,       -0.118784,2.7,0.161856,
+       -0.092592,2.7,0.177968, -0.077523,2.74905,0.148969,     -0.099446,2.74905,0.135489,
+       -0.099446,2.74905,0.135489,     -0.118784,2.7,0.161856, -0.092592,2.7,0.177968,
+       -0.063808,2.7,0.189952, -0.053428,2.74905,0.158995,     -0.077523,2.74905,0.148969,
+       -0.077523,2.74905,0.148969,     -0.092592,2.7,0.177968, -0.063808,2.7,0.189952,
+       -0.032816,2.7,0.197424, -0.02748,2.74905,0.165245,      -0.053428,2.74905,0.158995,
+       -0.053428,2.74905,0.158995,     -0.063808,2.7,0.189952, -0.032816,2.7,0.197424,
+       0,2.7,0.2,      0,2.74905,0.1674,       -0.02748,2.74905,0.165245,
+       -0.02748,2.74905,0.165245,      -0.032816,2.7,0.197424, 0,2.7,0.2,
+       0,3.15,0,       0,3.14145,0.1946,       0.032048,3.14145,0.192107,
+       0,3.15,0,       0.032048,3.14145,0.192107,      0.062272,3.14145,0.18487,
+       0,3.15,0,       0.062272,3.14145,0.18487,       0.090306,3.14145,0.173255,
+       0,3.15,0,       0.090306,3.14145,0.173255,      0.115787,3.14145,0.157626,
+       0,3.15,0,       0.115787,3.14145,0.157626,      0.138348,3.14145,0.138348,
+       0,3.15,0,       0.138348,3.14145,0.138348,      0.157626,3.14145,0.115787,
+       0,3.15,0,       0.157626,3.14145,0.115787,      0.173255,3.14145,0.090306,
+       0,3.15,0,       0.173255,3.14145,0.090306,      0.18487,3.14145,0.062272,
+       0,3.15,0,       0.18487,3.14145,0.062272,       0.192107,3.14145,0.032048,
+       0,3.15,0,       0.192107,3.14145,0.032048,      0.1946,3.14145,0,
+       0.050855,3.1176,0.304843,       0.032048,3.14145,0.192107,      0,3.14145,0.1946,
+       0,3.14145,0.1946,       0,3.1176,0.3088,        0.050855,3.1176,0.304843,
+       0.098814,3.1176,0.29336,        0.062272,3.14145,0.18487,       0.032048,3.14145,0.192107,
+       0.032048,3.14145,0.192107,      0.050855,3.1176,0.304843,       0.098814,3.1176,0.29336,
+       0.143301,3.1176,0.274928,       0.090306,3.14145,0.173255,      0.062272,3.14145,0.18487,
+       0.062272,3.14145,0.18487,       0.098814,3.1176,0.29336,        0.143301,3.1176,0.274928,
+       0.183734,3.1176,0.250127,       0.115787,3.14145,0.157626,      0.090306,3.14145,0.173255,
+       0.090306,3.14145,0.173255,      0.143301,3.1176,0.274928,       0.183734,3.1176,0.250127,
+       0.219536,3.1176,0.219536,       0.138348,3.14145,0.138348,      0.115787,3.14145,0.157626,
+       0.115787,3.14145,0.157626,      0.183734,3.1176,0.250127,       0.219536,3.1176,0.219536,
+       0.250127,3.1176,0.183734,       0.157626,3.14145,0.115787,      0.138348,3.14145,0.138348,
+       0.138348,3.14145,0.138348,      0.219536,3.1176,0.219536,       0.250127,3.1176,0.183734,
+       0.274928,3.1176,0.143301,       0.173255,3.14145,0.090306,      0.157626,3.14145,0.115787,
+       0.157626,3.14145,0.115787,      0.250127,3.1176,0.183734,       0.274928,3.1176,0.143301,
+       0.29336,3.1176,0.098814,        0.18487,3.14145,0.062272,       0.173255,3.14145,0.090306,
+       0.173255,3.14145,0.090306,      0.274928,3.1176,0.143301,       0.29336,3.1176,0.098814,
+       0.304843,3.1176,0.050855,       0.192107,3.14145,0.032048,      0.18487,3.14145,0.062272,
+       0.18487,3.14145,0.062272,       0.29336,3.1176,0.098814,        0.304843,3.1176,0.050855,
+       0.3088,3.1176,0,        0.1946,3.14145,0,       0.192107,3.14145,0.032048,
+       0.192107,3.14145,0.032048,      0.304843,3.1176,0.050855,       0.3088,3.1176,0,
+       0.058988,3.08115,0.35361,       0.050855,3.1176,0.304843,       0,3.1176,0.3088,
+       0,3.1176,0.3088,        0,3.08115,0.3582,       0.058988,3.08115,0.35361,
+       0.114619,3.08115,0.340289,      0.098814,3.1176,0.29336,        0.050855,3.1176,0.304843,
+       0.050855,3.1176,0.304843,       0.058988,3.08115,0.35361,       0.114619,3.08115,0.340289,
+       0.166221,3.08115,0.318907,      0.143301,3.1176,0.274928,       0.098814,3.1176,0.29336,
+       0.098814,3.1176,0.29336,        0.114619,3.08115,0.340289,      0.166221,3.08115,0.318907,
+       0.213123,3.08115,0.290138,      0.183734,3.1176,0.250127,       0.143301,3.1176,0.274928,
+       0.143301,3.1176,0.274928,       0.166221,3.08115,0.318907,      0.213123,3.08115,0.290138,
+       0.254653,3.08115,0.254653,      0.219536,3.1176,0.219536,       0.183734,3.1176,0.250127,
+       0.183734,3.1176,0.250127,       0.213123,3.08115,0.290138,      0.254653,3.08115,0.254653,
+       0.290138,3.08115,0.213123,      0.250127,3.1176,0.183734,       0.219536,3.1176,0.219536,
+       0.219536,3.1176,0.219536,       0.254653,3.08115,0.254653,      0.290138,3.08115,0.213123,
+       0.318907,3.08115,0.166221,      0.274928,3.1176,0.143301,       0.250127,3.1176,0.183734,
+       0.250127,3.1176,0.183734,       0.290138,3.08115,0.213123,      0.318907,3.08115,0.166221,
+       0.340289,3.08115,0.114619,      0.29336,3.1176,0.098814,        0.274928,3.1176,0.143301,
+       0.274928,3.1176,0.143301,       0.318907,3.08115,0.166221,      0.340289,3.08115,0.114619,
+       0.35361,3.08115,0.058988,       0.304843,3.1176,0.050855,       0.29336,3.1176,0.098814,
+       0.29336,3.1176,0.098814,        0.340289,3.08115,0.114619,      0.35361,3.08115,0.058988,
+       0.3582,3.08115,0,       0.3088,3.1176,0,        0.304843,3.1176,0.050855,
+       0.304843,3.1176,0.050855,       0.35361,3.08115,0.058988,       0.3582,3.08115,0,
+       0.059016,3.0348,0.353807,       0.058988,3.08115,0.35361,       0,3.08115,0.3582,
+       0,3.08115,0.3582,       0,3.0348,0.3584,        0.059016,3.0348,0.353807,
+       0.114676,3.0348,0.340477,       0.114619,3.08115,0.340289,      0.058988,3.08115,0.35361,
+       0.058988,3.08115,0.35361,       0.059016,3.0348,0.353807,       0.114676,3.0348,0.340477,
+       0.166306,3.0348,0.319082,       0.166221,3.08115,0.318907,      0.114619,3.08115,0.340289,
+       0.114619,3.08115,0.340289,      0.114676,3.0348,0.340477,       0.166306,3.0348,0.319082,
+       0.213234,3.0348,0.290295,       0.213123,3.08115,0.290138,      0.166221,3.08115,0.318907,
+       0.166221,3.08115,0.318907,      0.166306,3.0348,0.319082,       0.213234,3.0348,0.290295,
+       0.254788,3.0348,0.254788,       0.254653,3.08115,0.254653,      0.213123,3.08115,0.290138,
+       0.213123,3.08115,0.290138,      0.213234,3.0348,0.290295,       0.254788,3.0348,0.254788,
+       0.290295,3.0348,0.213234,       0.290138,3.08115,0.213123,      0.254653,3.08115,0.254653,
+       0.254653,3.08115,0.254653,      0.254788,3.0348,0.254788,       0.290295,3.0348,0.213234,
+       0.319082,3.0348,0.166306,       0.318907,3.08115,0.166221,      0.290138,3.08115,0.213123,
+       0.290138,3.08115,0.213123,      0.290295,3.0348,0.213234,       0.319082,3.0348,0.166306,
+       0.340477,3.0348,0.114676,       0.340289,3.08115,0.114619,      0.318907,3.08115,0.166221,
+       0.318907,3.08115,0.166221,      0.319082,3.0348,0.166306,       0.340477,3.0348,0.114676,
+       0.353807,3.0348,0.059016,       0.35361,3.08115,0.058988,       0.340289,3.08115,0.114619,
+       0.340289,3.08115,0.114619,      0.340477,3.0348,0.114676,       0.353807,3.0348,0.059016,
+       0.3584,3.0348,0,        0.3582,3.08115,0,       0.35361,3.08115,0.058988,
+       0.35361,3.08115,0.058988,       0.353807,3.0348,0.059016,       0.3584,3.0348,0,
+       0.053508,2.98125,0.320834,      0.059016,3.0348,0.353807,       0,3.0348,0.3584,
+       0,3.0348,0.3584,        0,2.98125,0.325,        0.053508,2.98125,0.320834,
+       0.103976,2.98125,0.308744,      0.114676,3.0348,0.340477,       0.059016,3.0348,0.353807,
+       0.059016,3.0348,0.353807,       0.053508,2.98125,0.320834,      0.103976,2.98125,0.308744,
+       0.150793,2.98125,0.28934,       0.166306,3.0348,0.319082,       0.114676,3.0348,0.340477,
+       0.114676,3.0348,0.340477,       0.103976,2.98125,0.308744,      0.150793,2.98125,0.28934,
+       0.193348,2.98125,0.263232,      0.213234,3.0348,0.290295,       0.166306,3.0348,0.319082,
+       0.166306,3.0348,0.319082,       0.150793,2.98125,0.28934,       0.193348,2.98125,0.263232,
+       0.231031,2.98125,0.231031,      0.254788,3.0348,0.254788,       0.213234,3.0348,0.290295,
+       0.213234,3.0348,0.290295,       0.193348,2.98125,0.263232,      0.231031,2.98125,0.231031,
+       0.263232,2.98125,0.193348,      0.290295,3.0348,0.213234,       0.254788,3.0348,0.254788,
+       0.254788,3.0348,0.254788,       0.231031,2.98125,0.231031,      0.263232,2.98125,0.193348,
+       0.28934,2.98125,0.150793,       0.319082,3.0348,0.166306,       0.290295,3.0348,0.213234,
+       0.290295,3.0348,0.213234,       0.263232,2.98125,0.193348,      0.28934,2.98125,0.150793,
+       0.308744,2.98125,0.103976,      0.340477,3.0348,0.114676,       0.319082,3.0348,0.166306,
+       0.319082,3.0348,0.166306,       0.28934,2.98125,0.150793,       0.308744,2.98125,0.103976,
+       0.320834,2.98125,0.053508,      0.353807,3.0348,0.059016,       0.340477,3.0348,0.114676,
+       0.340477,3.0348,0.114676,       0.308744,2.98125,0.103976,      0.320834,2.98125,0.053508,
+       0.325,2.98125,0,        0.3584,3.0348,0,        0.353807,3.0348,0.059016,
+       0.353807,3.0348,0.059016,       0.320834,2.98125,0.053508,      0.325,2.98125,0,
+       0.045032,2.9232,0.270092,       0.053508,2.98125,0.320834,      0,2.98125,0.325,
+       0,2.98125,0.325,        0,2.9232,0.2736,        0.045032,2.9232,0.270092,
+       0.087511,2.9232,0.25991,        0.103976,2.98125,0.308744,      0.053508,2.98125,0.320834,
+       0.053508,2.98125,0.320834,      0.045032,2.9232,0.270092,       0.087511,2.9232,0.25991,
+       0.12692,2.9232,0.243569,        0.150793,2.98125,0.28934,       0.103976,2.98125,0.308744,
+       0.103976,2.98125,0.308744,      0.087511,2.9232,0.25991,        0.12692,2.9232,0.243569,
+       0.162745,2.9232,0.221585,       0.193348,2.98125,0.263232,      0.150793,2.98125,0.28934,
+       0.150793,2.98125,0.28934,       0.12692,2.9232,0.243569,        0.162745,2.9232,0.221585,
+       0.194472,2.9232,0.194472,       0.231031,2.98125,0.231031,      0.193348,2.98125,0.263232,
+       0.193348,2.98125,0.263232,      0.162745,2.9232,0.221585,       0.194472,2.9232,0.194472,
+       0.221585,2.9232,0.162745,       0.263232,2.98125,0.193348,      0.231031,2.98125,0.231031,
+       0.231031,2.98125,0.231031,      0.194472,2.9232,0.194472,       0.221585,2.9232,0.162745,
+       0.243569,2.9232,0.12692,        0.28934,2.98125,0.150793,       0.263232,2.98125,0.193348,
+       0.263232,2.98125,0.193348,      0.221585,2.9232,0.162745,       0.243569,2.9232,0.12692,
+       0.25991,2.9232,0.087511,        0.308744,2.98125,0.103976,      0.28934,2.98125,0.150793,
+       0.28934,2.98125,0.150793,       0.243569,2.9232,0.12692,        0.25991,2.9232,0.087511,
+       0.270092,2.9232,0.045032,       0.320834,2.98125,0.053508,      0.308744,2.98125,0.103976,
+       0.308744,2.98125,0.103976,      0.25991,2.9232,0.087511,        0.270092,2.9232,0.045032,
+       0.2736,2.9232,0,        0.325,2.98125,0,        0.320834,2.98125,0.053508,
+       0.320834,2.98125,0.053508,      0.270092,2.9232,0.045032,       0.2736,2.9232,0,
+       0.036157,2.86335,0.216979,      0.045032,2.9232,0.270092,       0,2.9232,0.2736,
+       0,2.9232,0.2736,        0,2.86335,0.2198,       0.036157,2.86335,0.216979,
+       0.07027,2.86335,0.208794,       0.087511,2.9232,0.25991,        0.045032,2.9232,0.270092,
+       0.045032,2.9232,0.270092,       0.036157,2.86335,0.216979,      0.07027,2.86335,0.208794,
+       0.101925,2.86335,0.195658,      0.12692,2.9232,0.243569,        0.087511,2.9232,0.25991,
+       0.087511,2.9232,0.25991,        0.07027,2.86335,0.208794,       0.101925,2.86335,0.195658,
+       0.130707,2.86335,0.177989,      0.162745,2.9232,0.221585,       0.12692,2.9232,0.243569,
+       0.12692,2.9232,0.243569,        0.101925,2.86335,0.195658,      0.130707,2.86335,0.177989,
+       0.1562,2.86335,0.1562,  0.194472,2.9232,0.194472,       0.162745,2.9232,0.221585,
+       0.162745,2.9232,0.221585,       0.130707,2.86335,0.177989,      0.1562,2.86335,0.1562,
+       0.177989,2.86335,0.130707,      0.221585,2.9232,0.162745,       0.194472,2.9232,0.194472,
+       0.194472,2.9232,0.194472,       0.1562,2.86335,0.1562,  0.177989,2.86335,0.130707,
+       0.195658,2.86335,0.101925,      0.243569,2.9232,0.12692,        0.221585,2.9232,0.162745,
+       0.221585,2.9232,0.162745,       0.177989,2.86335,0.130707,      0.195658,2.86335,0.101925,
+       0.208794,2.86335,0.07027,       0.25991,2.9232,0.087511,        0.243569,2.9232,0.12692,
+       0.243569,2.9232,0.12692,        0.195658,2.86335,0.101925,      0.208794,2.86335,0.07027,
+       0.216979,2.86335,0.036157,      0.270092,2.9232,0.045032,       0.25991,2.9232,0.087511,
+       0.25991,2.9232,0.087511,        0.208794,2.86335,0.07027,       0.216979,2.86335,0.036157,
+       0.2198,2.86335,0,       0.2736,2.9232,0,        0.270092,2.9232,0.045032,
+       0.270092,2.9232,0.045032,       0.216979,2.86335,0.036157,      0.2198,2.86335,0,
+       0.02945,2.8044,0.176897,        0.036157,2.86335,0.216979,      0,2.86335,0.2198,
+       0,2.86335,0.2198,       0,2.8044,0.1792,        0.02945,2.8044,0.176897,
+       0.057246,2.8044,0.170215,       0.07027,2.86335,0.208794,       0.036157,2.86335,0.216979,
+       0.036157,2.86335,0.216979,      0.02945,2.8044,0.176897,        0.057246,2.8044,0.170215,
+       0.083047,2.8044,0.159496,       0.101925,2.86335,0.195658,      0.07027,2.86335,0.208794,
+       0.07027,2.86335,0.208794,       0.057246,2.8044,0.170215,       0.083047,2.8044,0.159496,
+       0.106513,2.8044,0.145078,       0.130707,2.86335,0.177989,      0.101925,2.86335,0.195658,
+       0.101925,2.86335,0.195658,      0.083047,2.8044,0.159496,       0.106513,2.8044,0.145078,
+       0.127304,2.8044,0.127304,       0.1562,2.86335,0.1562,  0.130707,2.86335,0.177989,
+       0.130707,2.86335,0.177989,      0.106513,2.8044,0.145078,       0.127304,2.8044,0.127304,
+       0.145078,2.8044,0.106513,       0.177989,2.86335,0.130707,      0.1562,2.86335,0.1562,
+       0.1562,2.86335,0.1562,  0.127304,2.8044,0.127304,       0.145078,2.8044,0.106513,
+       0.159496,2.8044,0.083047,       0.195658,2.86335,0.101925,      0.177989,2.86335,0.130707,
+       0.177989,2.86335,0.130707,      0.145078,2.8044,0.106513,       0.159496,2.8044,0.083047,
+       0.170215,2.8044,0.057246,       0.208794,2.86335,0.07027,       0.195658,2.86335,0.101925,
+       0.195658,2.86335,0.101925,      0.159496,2.8044,0.083047,       0.170215,2.8044,0.057246,
+       0.176897,2.8044,0.02945,        0.216979,2.86335,0.036157,      0.208794,2.86335,0.07027,
+       0.208794,2.86335,0.07027,       0.170215,2.8044,0.057246,       0.176897,2.8044,0.02945,
+       0.1792,2.8044,0,        0.2198,2.86335,0,       0.216979,2.86335,0.036157,
+       0.216979,2.86335,0.036157,      0.176897,2.8044,0.02945,        0.1792,2.8044,0,
+       0.02748,2.74905,0.165245,       0.02945,2.8044,0.176897,        0,2.8044,0.1792,
+       0,2.8044,0.1792,        0,2.74905,0.1674,       0.02748,2.74905,0.165245,
+       0.053428,2.74905,0.158995,      0.057246,2.8044,0.170215,       0.02945,2.8044,0.176897,
+       0.02945,2.8044,0.176897,        0.02748,2.74905,0.165245,       0.053428,2.74905,0.158995,
+       0.077523,2.74905,0.148969,      0.083047,2.8044,0.159496,       0.057246,2.8044,0.170215,
+       0.057246,2.8044,0.170215,       0.053428,2.74905,0.158995,      0.077523,2.74905,0.148969,
+       0.099446,2.74905,0.135489,      0.106513,2.8044,0.145078,       0.083047,2.8044,0.159496,
+       0.083047,2.8044,0.159496,       0.077523,2.74905,0.148969,      0.099446,2.74905,0.135489,
+       0.118874,2.74905,0.118874,      0.127304,2.8044,0.127304,       0.106513,2.8044,0.145078,
+       0.106513,2.8044,0.145078,       0.099446,2.74905,0.135489,      0.118874,2.74905,0.118874,
+       0.135489,2.74905,0.099446,      0.145078,2.8044,0.106513,       0.127304,2.8044,0.127304,
+       0.127304,2.8044,0.127304,       0.118874,2.74905,0.118874,      0.135489,2.74905,0.099446,
+       0.148969,2.74905,0.077523,      0.159496,2.8044,0.083047,       0.145078,2.8044,0.106513,
+       0.145078,2.8044,0.106513,       0.135489,2.74905,0.099446,      0.148969,2.74905,0.077523,
+       0.158995,2.74905,0.053428,      0.170215,2.8044,0.057246,       0.159496,2.8044,0.083047,
+       0.159496,2.8044,0.083047,       0.148969,2.74905,0.077523,      0.158995,2.74905,0.053428,
+       0.165245,2.74905,0.02748,       0.176897,2.8044,0.02945,        0.170215,2.8044,0.057246,
+       0.170215,2.8044,0.057246,       0.158995,2.74905,0.053428,      0.165245,2.74905,0.02748,
+       0.1674,2.74905,0,       0.1792,2.8044,0,        0.176897,2.8044,0.02945,
+       0.176897,2.8044,0.02945,        0.165245,2.74905,0.02748,       0.1674,2.74905,0,
+       0.032816,2.7,0.197424,  0.02748,2.74905,0.165245,       0,2.74905,0.1674,
+       0,2.74905,0.1674,       0,2.7,0.2,      0.032816,2.7,0.197424,
+       0.063808,2.7,0.189952,  0.053428,2.74905,0.158995,      0.02748,2.74905,0.165245,
+       0.02748,2.74905,0.165245,       0.032816,2.7,0.197424,  0.063808,2.7,0.189952,
+       0.092592,2.7,0.177968,  0.077523,2.74905,0.148969,      0.053428,2.74905,0.158995,
+       0.053428,2.74905,0.158995,      0.063808,2.7,0.189952,  0.092592,2.7,0.177968,
+       0.118784,2.7,0.161856,  0.099446,2.74905,0.135489,      0.077523,2.74905,0.148969,
+       0.077523,2.74905,0.148969,      0.092592,2.7,0.177968,  0.118784,2.7,0.161856,
+       0.142,2.7,0.142,        0.118874,2.74905,0.118874,      0.099446,2.74905,0.135489,
+       0.099446,2.74905,0.135489,      0.118784,2.7,0.161856,  0.142,2.7,0.142,
+       0.161856,2.7,0.118784,  0.135489,2.74905,0.099446,      0.118874,2.74905,0.118874,
+       0.118874,2.74905,0.118874,      0.142,2.7,0.142,        0.161856,2.7,0.118784,
+       0.177968,2.7,0.092592,  0.148969,2.74905,0.077523,      0.135489,2.74905,0.099446,
+       0.135489,2.74905,0.099446,      0.161856,2.7,0.118784,  0.177968,2.7,0.092592,
+       0.189952,2.7,0.063808,  0.158995,2.74905,0.053428,      0.148969,2.74905,0.077523,
+       0.148969,2.74905,0.077523,      0.177968,2.7,0.092592,  0.189952,2.7,0.063808,
+       0.197424,2.7,0.032816,  0.165245,2.74905,0.02748,       0.158995,2.74905,0.053428,
+       0.158995,2.74905,0.053428,      0.189952,2.7,0.063808,  0.197424,2.7,0.032816,
+       0.2,2.7,0,      0.1674,2.74905,0,       0.165245,2.74905,0.02748,
+       0.165245,2.74905,0.02748,       0.197424,2.7,0.032816,  0.2,2.7,0,
+       0.275801,2.6592,-0.045844,      0.197424,2.7,-0.032816, 0.2,2.7,0,
+       0.2,2.7,0,      0.2794,2.6592,0,        0.275801,2.6592,-0.045844,
+       0.265363,2.6592,-0.08914,       0.189952,2.7,-0.063808, 0.197424,2.7,-0.032816,
+       0.197424,2.7,-0.032816, 0.275801,2.6592,-0.045844,      0.265363,2.6592,-0.08914,
+       0.248621,2.6592,-0.129351,      0.177968,2.7,-0.092592, 0.189952,2.7,-0.063808,
+       0.189952,2.7,-0.063808, 0.265363,2.6592,-0.08914,       0.248621,2.6592,-0.129351,
+       0.226113,2.6592,-0.165941,      0.161856,2.7,-0.118784, 0.177968,2.7,-0.092592,
+       0.177968,2.7,-0.092592, 0.248621,2.6592,-0.129351,      0.226113,2.6592,-0.165941,
+       0.198374,2.6592,-0.198374,      0.142,2.7,-0.142,       0.161856,2.7,-0.118784,
+       0.161856,2.7,-0.118784, 0.226113,2.6592,-0.165941,      0.198374,2.6592,-0.198374,
+       0.165941,2.6592,-0.226113,      0.118784,2.7,-0.161856, 0.142,2.7,-0.142,
+       0.142,2.7,-0.142,       0.198374,2.6592,-0.198374,      0.165941,2.6592,-0.226113,
+       0.129351,2.6592,-0.248621,      0.092592,2.7,-0.177968, 0.118784,2.7,-0.161856,
+       0.118784,2.7,-0.161856, 0.165941,2.6592,-0.226113,      0.129351,2.6592,-0.248621,
+       0.08914,2.6592,-0.265363,       0.063808,2.7,-0.189952, 0.092592,2.7,-0.177968,
+       0.092592,2.7,-0.177968, 0.129351,2.6592,-0.248621,      0.08914,2.6592,-0.265363,
+       0.045844,2.6592,-0.275801,      0.032816,2.7,-0.197424, 0.063808,2.7,-0.189952,
+       0.063808,2.7,-0.189952, 0.08914,2.6592,-0.265363,       0.045844,2.6592,-0.275801,
+       0,2.6592,-0.2794,       0,2.7,-0.2,     0.032816,2.7,-0.197424,
+       0.032816,2.7,-0.197424, 0.045844,2.6592,-0.275801,      0,2.6592,-0.2794,
+       0.386161,2.6256,-0.064188,      0.275801,2.6592,-0.045844,      0.2794,2.6592,0,
+       0.2794,2.6592,0,        0.3912,2.6256,0,        0.386161,2.6256,-0.064188,
+       0.371546,2.6256,-0.124808,      0.265363,2.6592,-0.08914,       0.275801,2.6592,-0.045844,
+       0.275801,2.6592,-0.045844,      0.386161,2.6256,-0.064188,      0.371546,2.6256,-0.124808,
+       0.348105,2.6256,-0.18111,       0.248621,2.6592,-0.129351,      0.265363,2.6592,-0.08914,
+       0.265363,2.6592,-0.08914,       0.371546,2.6256,-0.124808,      0.348105,2.6256,-0.18111,
+       0.31659,2.6256,-0.232342,       0.226113,2.6592,-0.165941,      0.248621,2.6592,-0.129351,
+       0.248621,2.6592,-0.129351,      0.348105,2.6256,-0.18111,       0.31659,2.6256,-0.232342,
+       0.277752,2.6256,-0.277752,      0.198374,2.6592,-0.198374,      0.226113,2.6592,-0.165941,
+       0.226113,2.6592,-0.165941,      0.31659,2.6256,-0.232342,       0.277752,2.6256,-0.277752,
+       0.232342,2.6256,-0.31659,       0.165941,2.6592,-0.226113,      0.198374,2.6592,-0.198374,
+       0.198374,2.6592,-0.198374,      0.277752,2.6256,-0.277752,      0.232342,2.6256,-0.31659,
+       0.18111,2.6256,-0.348105,       0.129351,2.6592,-0.248621,      0.165941,2.6592,-0.226113,
+       0.165941,2.6592,-0.226113,      0.232342,2.6256,-0.31659,       0.18111,2.6256,-0.348105,
+       0.124808,2.6256,-0.371546,      0.08914,2.6592,-0.265363,       0.129351,2.6592,-0.248621,
+       0.129351,2.6592,-0.248621,      0.18111,2.6256,-0.348105,       0.124808,2.6256,-0.371546,
+       0.064188,2.6256,-0.386161,      0.045844,2.6592,-0.275801,      0.08914,2.6592,-0.265363,
+       0.08914,2.6592,-0.265363,       0.124808,2.6256,-0.371546,      0.064188,2.6256,-0.386161,
+       0,2.6256,-0.3912,       0,2.6592,-0.2794,       0.045844,2.6592,-0.275801,
+       0.045844,2.6592,-0.275801,      0.064188,2.6256,-0.386161,      0,2.6256,-0.3912,
+       0.519028,2.5974,-0.086273,      0.386161,2.6256,-0.064188,      0.3912,2.6256,0,
+       0.3912,2.6256,0,        0.5258,2.5974,0,        0.519028,2.5974,-0.086273,
+       0.499384,2.5974,-0.167751,      0.371546,2.6256,-0.124808,      0.386161,2.6256,-0.064188,
+       0.386161,2.6256,-0.064188,      0.519028,2.5974,-0.086273,      0.499384,2.5974,-0.167751,
+       0.467878,2.5974,-0.243424,      0.348105,2.6256,-0.18111,       0.371546,2.6256,-0.124808,
+       0.371546,2.6256,-0.124808,      0.499384,2.5974,-0.167751,      0.467878,2.5974,-0.243424,
+       0.425519,2.5974,-0.312283,      0.31659,2.6256,-0.232342,       0.348105,2.6256,-0.18111,
+       0.348105,2.6256,-0.18111,       0.467878,2.5974,-0.243424,      0.425519,2.5974,-0.312283,
+       0.373318,2.5974,-0.373318,      0.277752,2.6256,-0.277752,      0.31659,2.6256,-0.232342,
+       0.31659,2.6256,-0.232342,       0.425519,2.5974,-0.312283,      0.373318,2.5974,-0.373318,
+       0.312283,2.5974,-0.425519,      0.232342,2.6256,-0.31659,       0.277752,2.6256,-0.277752,
+       0.277752,2.6256,-0.277752,      0.373318,2.5974,-0.373318,      0.312283,2.5974,-0.425519,
+       0.243424,2.5974,-0.467878,      0.18111,2.6256,-0.348105,       0.232342,2.6256,-0.31659,
+       0.232342,2.6256,-0.31659,       0.312283,2.5974,-0.425519,      0.243424,2.5974,-0.467878,
+       0.167751,2.5974,-0.499384,      0.124808,2.6256,-0.371546,      0.18111,2.6256,-0.348105,
+       0.18111,2.6256,-0.348105,       0.243424,2.5974,-0.467878,      0.167751,2.5974,-0.499384,
+       0.086273,2.5974,-0.519028,      0.064188,2.6256,-0.386161,      0.124808,2.6256,-0.371546,
+       0.124808,2.6256,-0.371546,      0.167751,2.5974,-0.499384,      0.086273,2.5974,-0.519028,
+       0,2.5974,-0.5258,       0,2.6256,-0.3912,       0.064188,2.6256,-0.386161,
+       0.064188,2.6256,-0.386161,      0.086273,2.5974,-0.519028,      0,2.5974,-0.5258,
+       0.664924,2.5728,-0.110524,      0.519028,2.5974,-0.086273,      0.5258,2.5974,0,
+       0.5258,2.5974,0,        0.6736,2.5728,0,        0.664924,2.5728,-0.110524,
+       0.639758,2.5728,-0.214905,      0.499384,2.5974,-0.167751,      0.519028,2.5974,-0.086273,
+       0.519028,2.5974,-0.086273,      0.664924,2.5728,-0.110524,      0.639758,2.5728,-0.214905,
+       0.599396,2.5728,-0.31185,       0.467878,2.5974,-0.243424,      0.499384,2.5974,-0.167751,
+       0.499384,2.5974,-0.167751,      0.639758,2.5728,-0.214905,      0.599396,2.5728,-0.31185,
+       0.545131,2.5728,-0.400065,      0.425519,2.5974,-0.312283,      0.467878,2.5974,-0.243424,
+       0.467878,2.5974,-0.243424,      0.599396,2.5728,-0.31185,       0.545131,2.5728,-0.400065,
+       0.478256,2.5728,-0.478256,      0.373318,2.5974,-0.373318,      0.425519,2.5974,-0.312283,
+       0.425519,2.5974,-0.312283,      0.545131,2.5728,-0.400065,      0.478256,2.5728,-0.478256,
+       0.400065,2.5728,-0.545131,      0.312283,2.5974,-0.425519,      0.373318,2.5974,-0.373318,
+       0.373318,2.5974,-0.373318,      0.478256,2.5728,-0.478256,      0.400065,2.5728,-0.545131,
+       0.31185,2.5728,-0.599396,       0.243424,2.5974,-0.467878,      0.312283,2.5974,-0.425519,
+       0.312283,2.5974,-0.425519,      0.400065,2.5728,-0.545131,      0.31185,2.5728,-0.599396,
+       0.214905,2.5728,-0.639758,      0.167751,2.5974,-0.499384,      0.243424,2.5974,-0.467878,
+       0.243424,2.5974,-0.467878,      0.31185,2.5728,-0.599396,       0.214905,2.5728,-0.639758,
+       0.110524,2.5728,-0.664924,      0.086273,2.5974,-0.519028,      0.167751,2.5974,-0.499384,
+       0.167751,2.5974,-0.499384,      0.214905,2.5728,-0.639758,      0.110524,2.5728,-0.664924,
+       0,2.5728,-0.6736,       0,2.5974,-0.5258,       0.086273,2.5974,-0.519028,
+       0.086273,2.5974,-0.519028,      0.110524,2.5728,-0.664924,      0,2.5728,-0.6736,
+       0.814374,2.55,-0.135366,        0.664924,2.5728,-0.110524,      0.6736,2.5728,0,
+       0.6736,2.5728,0,        0.825,2.55,0,   0.814374,2.55,-0.135366,
+       0.783552,2.55,-0.263208,        0.639758,2.5728,-0.214905,      0.664924,2.5728,-0.110524,
+       0.664924,2.5728,-0.110524,      0.814374,2.55,-0.135366,        0.783552,2.55,-0.263208,
+       0.734118,2.55,-0.381942,        0.599396,2.5728,-0.31185,       0.639758,2.5728,-0.214905,
+       0.639758,2.5728,-0.214905,      0.783552,2.55,-0.263208,        0.734118,2.55,-0.381942,
+       0.667656,2.55,-0.489984,        0.545131,2.5728,-0.400065,      0.599396,2.5728,-0.31185,
+       0.599396,2.5728,-0.31185,       0.734118,2.55,-0.381942,        0.667656,2.55,-0.489984,
+       0.58575,2.55,-0.58575,  0.478256,2.5728,-0.478256,      0.545131,2.5728,-0.400065,
+       0.545131,2.5728,-0.400065,      0.667656,2.55,-0.489984,        0.58575,2.55,-0.58575,
+       0.489984,2.55,-0.667656,        0.400065,2.5728,-0.545131,      0.478256,2.5728,-0.478256,
+       0.478256,2.5728,-0.478256,      0.58575,2.55,-0.58575,  0.489984,2.55,-0.667656,
+       0.381942,2.55,-0.734118,        0.31185,2.5728,-0.599396,       0.400065,2.5728,-0.545131,
+       0.400065,2.5728,-0.545131,      0.489984,2.55,-0.667656,        0.381942,2.55,-0.734118,
+       0.263208,2.55,-0.783552,        0.214905,2.5728,-0.639758,      0.31185,2.5728,-0.599396,
+       0.31185,2.5728,-0.599396,       0.381942,2.55,-0.734118,        0.263208,2.55,-0.783552,
+       0.135366,2.55,-0.814374,        0.110524,2.5728,-0.664924,      0.214905,2.5728,-0.639758,
+       0.214905,2.5728,-0.639758,      0.263208,2.55,-0.783552,        0.135366,2.55,-0.814374,
+       0,2.55,-0.825,  0,2.5728,-0.6736,       0.110524,2.5728,-0.664924,
+       0.110524,2.5728,-0.664924,      0.135366,2.55,-0.814374,        0,2.55,-0.825,
+       0.957901,2.5272,-0.159223,      0.814374,2.55,-0.135366,        0.825,2.55,0,
+       0.825,2.55,0,   0.9704,2.5272,0,        0.957901,2.5272,-0.159223,
+       0.921647,2.5272,-0.309596,      0.783552,2.55,-0.263208,        0.814374,2.55,-0.135366,
+       0.814374,2.55,-0.135366,        0.957901,2.5272,-0.159223,      0.921647,2.5272,-0.309596,
+       0.863501,2.5272,-0.449256,      0.734118,2.55,-0.381942,        0.783552,2.55,-0.263208,
+       0.783552,2.55,-0.263208,        0.921647,2.5272,-0.309596,      0.863501,2.5272,-0.449256,
+       0.785325,2.5272,-0.57634,       0.667656,2.55,-0.489984,        0.734118,2.55,-0.381942,
+       0.734118,2.55,-0.381942,        0.863501,2.5272,-0.449256,      0.785325,2.5272,-0.57634,
+       0.688984,2.5272,-0.688984,      0.58575,2.55,-0.58575,  0.667656,2.55,-0.489984,
+       0.667656,2.55,-0.489984,        0.785325,2.5272,-0.57634,       0.688984,2.5272,-0.688984,
+       0.57634,2.5272,-0.785325,       0.489984,2.55,-0.667656,        0.58575,2.55,-0.58575,
+       0.58575,2.55,-0.58575,  0.688984,2.5272,-0.688984,      0.57634,2.5272,-0.785325,
+       0.449256,2.5272,-0.863501,      0.381942,2.55,-0.734118,        0.489984,2.55,-0.667656,
+       0.489984,2.55,-0.667656,        0.57634,2.5272,-0.785325,       0.449256,2.5272,-0.863501,
+       0.309596,2.5272,-0.921647,      0.263208,2.55,-0.783552,        0.381942,2.55,-0.734118,
+       0.381942,2.55,-0.734118,        0.449256,2.5272,-0.863501,      0.309596,2.5272,-0.921647,
+       0.159223,2.5272,-0.957901,      0.135366,2.55,-0.814374,        0.263208,2.55,-0.783552,
+       0.263208,2.55,-0.783552,        0.309596,2.5272,-0.921647,      0.159223,2.5272,-0.957901,
+       0,2.5272,-0.9704,       0,2.55,-0.825,  0.135366,2.55,-0.814374,
+       0.135366,2.55,-0.814374,        0.159223,2.5272,-0.957901,      0,2.5272,-0.9704,
+       1.086029,2.5026,-0.180521,      0.957901,2.5272,-0.159223,      0.9704,2.5272,0,
+       0.9704,2.5272,0,        1.1002,2.5026,0,        1.086029,2.5026,-0.180521,
+       1.044926,2.5026,-0.351008,      0.921647,2.5272,-0.309596,      0.957901,2.5272,-0.159223,
+       0.957901,2.5272,-0.159223,      1.086029,2.5026,-0.180521,      1.044926,2.5026,-0.351008,
+       0.979002,2.5026,-0.509349,      0.863501,2.5272,-0.449256,      0.921647,2.5272,-0.309596,
+       0.921647,2.5272,-0.309596,      1.044926,2.5026,-0.351008,      0.979002,2.5026,-0.509349,
+       0.89037,2.5026,-0.653431,       0.785325,2.5272,-0.57634,       0.863501,2.5272,-0.449256,
+       0.863501,2.5272,-0.449256,      0.979002,2.5026,-0.509349,      0.89037,2.5026,-0.653431,
+       0.781142,2.5026,-0.781142,      0.688984,2.5272,-0.688984,      0.785325,2.5272,-0.57634,
+       0.785325,2.5272,-0.57634,       0.89037,2.5026,-0.653431,       0.781142,2.5026,-0.781142,
+       0.653431,2.5026,-0.89037,       0.57634,2.5272,-0.785325,       0.688984,2.5272,-0.688984,
+       0.688984,2.5272,-0.688984,      0.781142,2.5026,-0.781142,      0.653431,2.5026,-0.89037,
+       0.509349,2.5026,-0.979002,      0.449256,2.5272,-0.863501,      0.57634,2.5272,-0.785325,
+       0.57634,2.5272,-0.785325,       0.653431,2.5026,-0.89037,       0.509349,2.5026,-0.979002,
+       0.351008,2.5026,-1.044926,      0.309596,2.5272,-0.921647,      0.449256,2.5272,-0.863501,
+       0.449256,2.5272,-0.863501,      0.509349,2.5026,-0.979002,      0.351008,2.5026,-1.044926,
+       0.180521,2.5026,-1.086029,      0.159223,2.5272,-0.957901,      0.309596,2.5272,-0.921647,
+       0.309596,2.5272,-0.921647,      0.351008,2.5026,-1.044926,      0.180521,2.5026,-1.086029,
+       0,2.5026,-1.1002,       0,2.5272,-0.9704,       0.159223,2.5272,-0.957901,
+       0.159223,2.5272,-0.957901,      0.180521,2.5026,-1.086029,      0,2.5026,-1.1002,
+       1.189282,2.4744,-0.197684,      1.086029,2.5026,-0.180521,      1.1002,2.5026,0,
+       1.1002,2.5026,0,        1.2048,2.4744,0,        1.189282,2.4744,-0.197684,
+       1.144271,2.4744,-0.384379,      1.044926,2.5026,-0.351008,      1.086029,2.5026,-0.180521,
+       1.086029,2.5026,-0.180521,      1.189282,2.4744,-0.197684,      1.144271,2.4744,-0.384379,
+       1.072079,2.4744,-0.557774,      0.979002,2.5026,-0.509349,      1.044926,2.5026,-0.351008,
+       1.044926,2.5026,-0.351008,      1.144271,2.4744,-0.384379,      1.072079,2.4744,-0.557774,
+       0.975021,2.4744,-0.715555,      0.89037,2.5026,-0.653431,       0.979002,2.5026,-0.509349,
+       0.979002,2.5026,-0.509349,      1.072079,2.4744,-0.557774,      0.975021,2.4744,-0.715555,
+       0.855408,2.4744,-0.855408,      0.781142,2.5026,-0.781142,      0.89037,2.5026,-0.653431,
+       0.89037,2.5026,-0.653431,       0.975021,2.4744,-0.715555,      0.855408,2.4744,-0.855408,
+       0.715555,2.4744,-0.975021,      0.653431,2.5026,-0.89037,       0.781142,2.5026,-0.781142,
+       0.781142,2.5026,-0.781142,      0.855408,2.4744,-0.855408,      0.715555,2.4744,-0.975021,
+       0.557774,2.4744,-1.072079,      0.509349,2.5026,-0.979002,      0.653431,2.5026,-0.89037,
+       0.653431,2.5026,-0.89037,       0.715555,2.4744,-0.975021,      0.557774,2.4744,-1.072079,
+       0.384379,2.4744,-1.144271,      0.351008,2.5026,-1.044926,      0.509349,2.5026,-0.979002,
+       0.509349,2.5026,-0.979002,      0.557774,2.4744,-1.072079,      0.384379,2.4744,-1.144271,
+       0.197684,2.4744,-1.189282,      0.180521,2.5026,-1.086029,      0.351008,2.5026,-1.044926,
+       0.351008,2.5026,-1.044926,      0.384379,2.4744,-1.144271,      0.197684,2.4744,-1.189282,
+       0,2.4744,-1.2048,       0,2.5026,-1.1002,       0.180521,2.5026,-1.086029,
+       0.180521,2.5026,-1.086029,      0.197684,2.4744,-1.189282,      0,2.4744,-1.2048,
+       1.258183,2.4408,-0.209136,      1.189282,2.4744,-0.197684,      1.2048,2.4744,0,
+       1.2048,2.4744,0,        1.2746,2.4408,0,        1.258183,2.4408,-0.209136,
+       1.210564,2.4408,-0.406648,      1.144271,2.4744,-0.384379,      1.189282,2.4744,-0.197684,
+       1.189282,2.4744,-0.197684,      1.258183,2.4408,-0.209136,      1.210564,2.4408,-0.406648,
+       1.13419,2.4408,-0.590089,       1.072079,2.4744,-0.557774,      1.144271,2.4744,-0.384379,
+       1.144271,2.4744,-0.384379,      1.210564,2.4408,-0.406648,      1.13419,2.4408,-0.590089,
+       1.031508,2.4408,-0.75701,       0.975021,2.4744,-0.715555,      1.072079,2.4744,-0.557774,
+       1.072079,2.4744,-0.557774,      1.13419,2.4408,-0.590089,       1.031508,2.4408,-0.75701,
+       0.904966,2.4408,-0.904966,      0.855408,2.4744,-0.855408,      0.975021,2.4744,-0.715555,
+       0.975021,2.4744,-0.715555,      1.031508,2.4408,-0.75701,       0.904966,2.4408,-0.904966,
+       0.75701,2.4408,-1.031508,       0.715555,2.4744,-0.975021,      0.855408,2.4744,-0.855408,
+       0.855408,2.4744,-0.855408,      0.904966,2.4408,-0.904966,      0.75701,2.4408,-1.031508,
+       0.590089,2.4408,-1.13419,       0.557774,2.4744,-1.072079,      0.715555,2.4744,-0.975021,
+       0.715555,2.4744,-0.975021,      0.75701,2.4408,-1.031508,       0.590089,2.4408,-1.13419,
+       0.406648,2.4408,-1.210564,      0.384379,2.4744,-1.144271,      0.557774,2.4744,-1.072079,
+       0.557774,2.4744,-1.072079,      0.590089,2.4408,-1.13419,       0.406648,2.4408,-1.210564,
+       0.209136,2.4408,-1.258183,      0.197684,2.4744,-1.189282,      0.384379,2.4744,-1.144271,
+       0.384379,2.4744,-1.144271,      0.406648,2.4408,-1.210564,      0.209136,2.4408,-1.258183,
+       0,2.4408,-1.2746,       0,2.4744,-1.2048,       0.197684,2.4744,-1.189282,
+       0.197684,2.4744,-1.189282,      0.209136,2.4408,-1.258183,      0,2.4408,-1.2746,
+       1.283256,2.4,-0.213304, 1.258183,2.4408,-0.209136,      1.2746,2.4408,0,
+       1.2746,2.4408,0,        1.3,2.4,0,      1.283256,2.4,-0.213304,
+       1.234688,2.4,-0.414752, 1.210564,2.4408,-0.406648,      1.258183,2.4408,-0.209136,
+       1.258183,2.4408,-0.209136,      1.283256,2.4,-0.213304, 1.234688,2.4,-0.414752,
+       1.156792,2.4,-0.601848, 1.13419,2.4408,-0.590089,       1.210564,2.4408,-0.406648,
+       1.210564,2.4408,-0.406648,      1.234688,2.4,-0.414752, 1.156792,2.4,-0.601848,
+       1.052064,2.4,-0.772096, 1.031508,2.4408,-0.75701,       1.13419,2.4408,-0.590089,
+       1.13419,2.4408,-0.590089,       1.156792,2.4,-0.601848, 1.052064,2.4,-0.772096,
+       0.923,2.4,-0.923,       0.904966,2.4408,-0.904966,      1.031508,2.4408,-0.75701,
+       1.031508,2.4408,-0.75701,       1.052064,2.4,-0.772096, 0.923,2.4,-0.923,
+       0.772096,2.4,-1.052064, 0.75701,2.4408,-1.031508,       0.904966,2.4408,-0.904966,
+       0.904966,2.4408,-0.904966,      0.923,2.4,-0.923,       0.772096,2.4,-1.052064,
+       0.601848,2.4,-1.156792, 0.590089,2.4408,-1.13419,       0.75701,2.4408,-1.031508,
+       0.75701,2.4408,-1.031508,       0.772096,2.4,-1.052064, 0.601848,2.4,-1.156792,
+       0.414752,2.4,-1.234688, 0.406648,2.4408,-1.210564,      0.590089,2.4408,-1.13419,
+       0.590089,2.4408,-1.13419,       0.601848,2.4,-1.156792, 0.414752,2.4,-1.234688,
+       0.213304,2.4,-1.283256, 0.209136,2.4408,-1.258183,      0.406648,2.4408,-1.210564,
+       0.406648,2.4408,-1.210564,      0.414752,2.4,-1.234688, 0.213304,2.4,-1.283256,
+       0,2.4,-1.3,     0,2.4408,-1.2746,       0.209136,2.4408,-1.258183,
+       0.209136,2.4408,-1.258183,      0.213304,2.4,-1.283256, 0,2.4,-1.3,
+       -0.045844,2.6592,-0.275801,     -0.032816,2.7,-0.197424,        0,2.7,-0.2,
+       0,2.7,-0.2,     0,2.6592,-0.2794,       -0.045844,2.6592,-0.275801,
+       -0.08914,2.6592,-0.265363,      -0.063808,2.7,-0.189952,        -0.032816,2.7,-0.197424,
+       -0.032816,2.7,-0.197424,        -0.045844,2.6592,-0.275801,     -0.08914,2.6592,-0.265363,
+       -0.129351,2.6592,-0.248621,     -0.092592,2.7,-0.177968,        -0.063808,2.7,-0.189952,
+       -0.063808,2.7,-0.189952,        -0.08914,2.6592,-0.265363,      -0.129351,2.6592,-0.248621,
+       -0.165941,2.6592,-0.226113,     -0.118784,2.7,-0.161856,        -0.092592,2.7,-0.177968,
+       -0.092592,2.7,-0.177968,        -0.129351,2.6592,-0.248621,     -0.165941,2.6592,-0.226113,
+       -0.198374,2.6592,-0.198374,     -0.142,2.7,-0.142,      -0.118784,2.7,-0.161856,
+       -0.118784,2.7,-0.161856,        -0.165941,2.6592,-0.226113,     -0.198374,2.6592,-0.198374,
+       -0.226113,2.6592,-0.165941,     -0.161856,2.7,-0.118784,        -0.142,2.7,-0.142,
+       -0.142,2.7,-0.142,      -0.198374,2.6592,-0.198374,     -0.226113,2.6592,-0.165941,
+       -0.248621,2.6592,-0.129351,     -0.177968,2.7,-0.092592,        -0.161856,2.7,-0.118784,
+       -0.161856,2.7,-0.118784,        -0.226113,2.6592,-0.165941,     -0.248621,2.6592,-0.129351,
+       -0.265363,2.6592,-0.08914,      -0.189952,2.7,-0.063808,        -0.177968,2.7,-0.092592,
+       -0.177968,2.7,-0.092592,        -0.248621,2.6592,-0.129351,     -0.265363,2.6592,-0.08914,
+       -0.275801,2.6592,-0.045844,     -0.197424,2.7,-0.032816,        -0.189952,2.7,-0.063808,
+       -0.189952,2.7,-0.063808,        -0.265363,2.6592,-0.08914,      -0.275801,2.6592,-0.045844,
+       -0.2794,2.6592,0,       -0.2,2.7,0,     -0.197424,2.7,-0.032816,
+       -0.197424,2.7,-0.032816,        -0.275801,2.6592,-0.045844,     -0.2794,2.6592,0,
+       -0.064188,2.6256,-0.386161,     -0.045844,2.6592,-0.275801,     0,2.6592,-0.2794,
+       0,2.6592,-0.2794,       0,2.6256,-0.3912,       -0.064188,2.6256,-0.386161,
+       -0.124808,2.6256,-0.371546,     -0.08914,2.6592,-0.265363,      -0.045844,2.6592,-0.275801,
+       -0.045844,2.6592,-0.275801,     -0.064188,2.6256,-0.386161,     -0.124808,2.6256,-0.371546,
+       -0.18111,2.6256,-0.348105,      -0.129351,2.6592,-0.248621,     -0.08914,2.6592,-0.265363,
+       -0.08914,2.6592,-0.265363,      -0.124808,2.6256,-0.371546,     -0.18111,2.6256,-0.348105,
+       -0.232342,2.6256,-0.31659,      -0.165941,2.6592,-0.226113,     -0.129351,2.6592,-0.248621,
+       -0.129351,2.6592,-0.248621,     -0.18111,2.6256,-0.348105,      -0.232342,2.6256,-0.31659,
+       -0.277752,2.6256,-0.277752,     -0.198374,2.6592,-0.198374,     -0.165941,2.6592,-0.226113,
+       -0.165941,2.6592,-0.226113,     -0.232342,2.6256,-0.31659,      -0.277752,2.6256,-0.277752,
+       -0.31659,2.6256,-0.232342,      -0.226113,2.6592,-0.165941,     -0.198374,2.6592,-0.198374,
+       -0.198374,2.6592,-0.198374,     -0.277752,2.6256,-0.277752,     -0.31659,2.6256,-0.232342,
+       -0.348105,2.6256,-0.18111,      -0.248621,2.6592,-0.129351,     -0.226113,2.6592,-0.165941,
+       -0.226113,2.6592,-0.165941,     -0.31659,2.6256,-0.232342,      -0.348105,2.6256,-0.18111,
+       -0.371546,2.6256,-0.124808,     -0.265363,2.6592,-0.08914,      -0.248621,2.6592,-0.129351,
+       -0.248621,2.6592,-0.129351,     -0.348105,2.6256,-0.18111,      -0.371546,2.6256,-0.124808,
+       -0.386161,2.6256,-0.064188,     -0.275801,2.6592,-0.045844,     -0.265363,2.6592,-0.08914,
+       -0.265363,2.6592,-0.08914,      -0.371546,2.6256,-0.124808,     -0.386161,2.6256,-0.064188,
+       -0.3912,2.6256,0,       -0.2794,2.6592,0,       -0.275801,2.6592,-0.045844,
+       -0.275801,2.6592,-0.045844,     -0.386161,2.6256,-0.064188,     -0.3912,2.6256,0,
+       -0.086273,2.5974,-0.519028,     -0.064188,2.6256,-0.386161,     0,2.6256,-0.3912,
+       0,2.6256,-0.3912,       0,2.5974,-0.5258,       -0.086273,2.5974,-0.519028,
+       -0.167751,2.5974,-0.499384,     -0.124808,2.6256,-0.371546,     -0.064188,2.6256,-0.386161,
+       -0.064188,2.6256,-0.386161,     -0.086273,2.5974,-0.519028,     -0.167751,2.5974,-0.499384,
+       -0.243424,2.5974,-0.467878,     -0.18111,2.6256,-0.348105,      -0.124808,2.6256,-0.371546,
+       -0.124808,2.6256,-0.371546,     -0.167751,2.5974,-0.499384,     -0.243424,2.5974,-0.467878,
+       -0.312283,2.5974,-0.425519,     -0.232342,2.6256,-0.31659,      -0.18111,2.6256,-0.348105,
+       -0.18111,2.6256,-0.348105,      -0.243424,2.5974,-0.467878,     -0.312283,2.5974,-0.425519,
+       -0.373318,2.5974,-0.373318,     -0.277752,2.6256,-0.277752,     -0.232342,2.6256,-0.31659,
+       -0.232342,2.6256,-0.31659,      -0.312283,2.5974,-0.425519,     -0.373318,2.5974,-0.373318,
+       -0.425519,2.5974,-0.312283,     -0.31659,2.6256,-0.232342,      -0.277752,2.6256,-0.277752,
+       -0.277752,2.6256,-0.277752,     -0.373318,2.5974,-0.373318,     -0.425519,2.5974,-0.312283,
+       -0.467878,2.5974,-0.243424,     -0.348105,2.6256,-0.18111,      -0.31659,2.6256,-0.232342,
+       -0.31659,2.6256,-0.232342,      -0.425519,2.5974,-0.312283,     -0.467878,2.5974,-0.243424,
+       -0.499384,2.5974,-0.167751,     -0.371546,2.6256,-0.124808,     -0.348105,2.6256,-0.18111,
+       -0.348105,2.6256,-0.18111,      -0.467878,2.5974,-0.243424,     -0.499384,2.5974,-0.167751,
+       -0.519028,2.5974,-0.086273,     -0.386161,2.6256,-0.064188,     -0.371546,2.6256,-0.124808,
+       -0.371546,2.6256,-0.124808,     -0.499384,2.5974,-0.167751,     -0.519028,2.5974,-0.086273,
+       -0.5258,2.5974,0,       -0.3912,2.6256,0,       -0.386161,2.6256,-0.064188,
+       -0.386161,2.6256,-0.064188,     -0.519028,2.5974,-0.086273,     -0.5258,2.5974,0,
+       -0.110524,2.5728,-0.664924,     -0.086273,2.5974,-0.519028,     0,2.5974,-0.5258,
+       0,2.5974,-0.5258,       0,2.5728,-0.6736,       -0.110524,2.5728,-0.664924,
+       -0.214905,2.5728,-0.639758,     -0.167751,2.5974,-0.499384,     -0.086273,2.5974,-0.519028,
+       -0.086273,2.5974,-0.519028,     -0.110524,2.5728,-0.664924,     -0.214905,2.5728,-0.639758,
+       -0.31185,2.5728,-0.599396,      -0.243424,2.5974,-0.467878,     -0.167751,2.5974,-0.499384,
+       -0.167751,2.5974,-0.499384,     -0.214905,2.5728,-0.639758,     -0.31185,2.5728,-0.599396,
+       -0.400065,2.5728,-0.545131,     -0.312283,2.5974,-0.425519,     -0.243424,2.5974,-0.467878,
+       -0.243424,2.5974,-0.467878,     -0.31185,2.5728,-0.599396,      -0.400065,2.5728,-0.545131,
+       -0.478256,2.5728,-0.478256,     -0.373318,2.5974,-0.373318,     -0.312283,2.5974,-0.425519,
+       -0.312283,2.5974,-0.425519,     -0.400065,2.5728,-0.545131,     -0.478256,2.5728,-0.478256,
+       -0.545131,2.5728,-0.400065,     -0.425519,2.5974,-0.312283,     -0.373318,2.5974,-0.373318,
+       -0.373318,2.5974,-0.373318,     -0.478256,2.5728,-0.478256,     -0.545131,2.5728,-0.400065,
+       -0.599396,2.5728,-0.31185,      -0.467878,2.5974,-0.243424,     -0.425519,2.5974,-0.312283,
+       -0.425519,2.5974,-0.312283,     -0.545131,2.5728,-0.400065,     -0.599396,2.5728,-0.31185,
+       -0.639758,2.5728,-0.214905,     -0.499384,2.5974,-0.167751,     -0.467878,2.5974,-0.243424,
+       -0.467878,2.5974,-0.243424,     -0.599396,2.5728,-0.31185,      -0.639758,2.5728,-0.214905,
+       -0.664924,2.5728,-0.110524,     -0.519028,2.5974,-0.086273,     -0.499384,2.5974,-0.167751,
+       -0.499384,2.5974,-0.167751,     -0.639758,2.5728,-0.214905,     -0.664924,2.5728,-0.110524,
+       -0.6736,2.5728,0,       -0.5258,2.5974,0,       -0.519028,2.5974,-0.086273,
+       -0.519028,2.5974,-0.086273,     -0.664924,2.5728,-0.110524,     -0.6736,2.5728,0,
+       -0.135366,2.55,-0.814374,       -0.110524,2.5728,-0.664924,     0,2.5728,-0.6736,
+       0,2.5728,-0.6736,       0,2.55,-0.825,  -0.135366,2.55,-0.814374,
+       -0.263208,2.55,-0.783552,       -0.214905,2.5728,-0.639758,     -0.110524,2.5728,-0.664924,
+       -0.110524,2.5728,-0.664924,     -0.135366,2.55,-0.814374,       -0.263208,2.55,-0.783552,
+       -0.381942,2.55,-0.734118,       -0.31185,2.5728,-0.599396,      -0.214905,2.5728,-0.639758,
+       -0.214905,2.5728,-0.639758,     -0.263208,2.55,-0.783552,       -0.381942,2.55,-0.734118,
+       -0.489984,2.55,-0.667656,       -0.400065,2.5728,-0.545131,     -0.31185,2.5728,-0.599396,
+       -0.31185,2.5728,-0.599396,      -0.381942,2.55,-0.734118,       -0.489984,2.55,-0.667656,
+       -0.58575,2.55,-0.58575, -0.478256,2.5728,-0.478256,     -0.400065,2.5728,-0.545131,
+       -0.400065,2.5728,-0.545131,     -0.489984,2.55,-0.667656,       -0.58575,2.55,-0.58575,
+       -0.667656,2.55,-0.489984,       -0.545131,2.5728,-0.400065,     -0.478256,2.5728,-0.478256,
+       -0.478256,2.5728,-0.478256,     -0.58575,2.55,-0.58575, -0.667656,2.55,-0.489984,
+       -0.734118,2.55,-0.381942,       -0.599396,2.5728,-0.31185,      -0.545131,2.5728,-0.400065,
+       -0.545131,2.5728,-0.400065,     -0.667656,2.55,-0.489984,       -0.734118,2.55,-0.381942,
+       -0.783552,2.55,-0.263208,       -0.639758,2.5728,-0.214905,     -0.599396,2.5728,-0.31185,
+       -0.599396,2.5728,-0.31185,      -0.734118,2.55,-0.381942,       -0.783552,2.55,-0.263208,
+       -0.814374,2.55,-0.135366,       -0.664924,2.5728,-0.110524,     -0.639758,2.5728,-0.214905,
+       -0.639758,2.5728,-0.214905,     -0.783552,2.55,-0.263208,       -0.814374,2.55,-0.135366,
+       -0.825,2.55,0,  -0.6736,2.5728,0,       -0.664924,2.5728,-0.110524,
+       -0.664924,2.5728,-0.110524,     -0.814374,2.55,-0.135366,       -0.825,2.55,0,
+       -0.159223,2.5272,-0.957901,     -0.135366,2.55,-0.814374,       0,2.55,-0.825,
+       0,2.55,-0.825,  0,2.5272,-0.9704,       -0.159223,2.5272,-0.957901,
+       -0.309596,2.5272,-0.921647,     -0.263208,2.55,-0.783552,       -0.135366,2.55,-0.814374,
+       -0.135366,2.55,-0.814374,       -0.159223,2.5272,-0.957901,     -0.309596,2.5272,-0.921647,
+       -0.449256,2.5272,-0.863501,     -0.381942,2.55,-0.734118,       -0.263208,2.55,-0.783552,
+       -0.263208,2.55,-0.783552,       -0.309596,2.5272,-0.921647,     -0.449256,2.5272,-0.863501,
+       -0.57634,2.5272,-0.785325,      -0.489984,2.55,-0.667656,       -0.381942,2.55,-0.734118,
+       -0.381942,2.55,-0.734118,       -0.449256,2.5272,-0.863501,     -0.57634,2.5272,-0.785325,
+       -0.688984,2.5272,-0.688984,     -0.58575,2.55,-0.58575, -0.489984,2.55,-0.667656,
+       -0.489984,2.55,-0.667656,       -0.57634,2.5272,-0.785325,      -0.688984,2.5272,-0.688984,
+       -0.785325,2.5272,-0.57634,      -0.667656,2.55,-0.489984,       -0.58575,2.55,-0.58575,
+       -0.58575,2.55,-0.58575, -0.688984,2.5272,-0.688984,     -0.785325,2.5272,-0.57634,
+       -0.863501,2.5272,-0.449256,     -0.734118,2.55,-0.381942,       -0.667656,2.55,-0.489984,
+       -0.667656,2.55,-0.489984,       -0.785325,2.5272,-0.57634,      -0.863501,2.5272,-0.449256,
+       -0.921647,2.5272,-0.309596,     -0.783552,2.55,-0.263208,       -0.734118,2.55,-0.381942,
+       -0.734118,2.55,-0.381942,       -0.863501,2.5272,-0.449256,     -0.921647,2.5272,-0.309596,
+       -0.957901,2.5272,-0.159223,     -0.814374,2.55,-0.135366,       -0.783552,2.55,-0.263208,
+       -0.783552,2.55,-0.263208,       -0.921647,2.5272,-0.309596,     -0.957901,2.5272,-0.159223,
+       -0.9704,2.5272,0,       -0.825,2.55,0,  -0.814374,2.55,-0.135366,
+       -0.814374,2.55,-0.135366,       -0.957901,2.5272,-0.159223,     -0.9704,2.5272,0,
+       -0.180521,2.5026,-1.086029,     -0.159223,2.5272,-0.957901,     0,2.5272,-0.9704,
+       0,2.5272,-0.9704,       0,2.5026,-1.1002,       -0.180521,2.5026,-1.086029,
+       -0.351008,2.5026,-1.044926,     -0.309596,2.5272,-0.921647,     -0.159223,2.5272,-0.957901,
+       -0.159223,2.5272,-0.957901,     -0.180521,2.5026,-1.086029,     -0.351008,2.5026,-1.044926,
+       -0.509349,2.5026,-0.979002,     -0.449256,2.5272,-0.863501,     -0.309596,2.5272,-0.921647,
+       -0.309596,2.5272,-0.921647,     -0.351008,2.5026,-1.044926,     -0.509349,2.5026,-0.979002,
+       -0.653431,2.5026,-0.89037,      -0.57634,2.5272,-0.785325,      -0.449256,2.5272,-0.863501,
+       -0.449256,2.5272,-0.863501,     -0.509349,2.5026,-0.979002,     -0.653431,2.5026,-0.89037,
+       -0.781142,2.5026,-0.781142,     -0.688984,2.5272,-0.688984,     -0.57634,2.5272,-0.785325,
+       -0.57634,2.5272,-0.785325,      -0.653431,2.5026,-0.89037,      -0.781142,2.5026,-0.781142,
+       -0.89037,2.5026,-0.653431,      -0.785325,2.5272,-0.57634,      -0.688984,2.5272,-0.688984,
+       -0.688984,2.5272,-0.688984,     -0.781142,2.5026,-0.781142,     -0.89037,2.5026,-0.653431,
+       -0.979002,2.5026,-0.509349,     -0.863501,2.5272,-0.449256,     -0.785325,2.5272,-0.57634,
+       -0.785325,2.5272,-0.57634,      -0.89037,2.5026,-0.653431,      -0.979002,2.5026,-0.509349,
+       -1.044926,2.5026,-0.351008,     -0.921647,2.5272,-0.309596,     -0.863501,2.5272,-0.449256,
+       -0.863501,2.5272,-0.449256,     -0.979002,2.5026,-0.509349,     -1.044926,2.5026,-0.351008,
+       -1.086029,2.5026,-0.180521,     -0.957901,2.5272,-0.159223,     -0.921647,2.5272,-0.309596,
+       -0.921647,2.5272,-0.309596,     -1.044926,2.5026,-0.351008,     -1.086029,2.5026,-0.180521,
+       -1.1002,2.5026,0,       -0.9704,2.5272,0,       -0.957901,2.5272,-0.159223,
+       -0.957901,2.5272,-0.159223,     -1.086029,2.5026,-0.180521,     -1.1002,2.5026,0,
+       -0.197684,2.4744,-1.189282,     -0.180521,2.5026,-1.086029,     0,2.5026,-1.1002,
+       0,2.5026,-1.1002,       0,2.4744,-1.2048,       -0.197684,2.4744,-1.189282,
+       -0.384379,2.4744,-1.144271,     -0.351008,2.5026,-1.044926,     -0.180521,2.5026,-1.086029,
+       -0.180521,2.5026,-1.086029,     -0.197684,2.4744,-1.189282,     -0.384379,2.4744,-1.144271,
+       -0.557774,2.4744,-1.072079,     -0.509349,2.5026,-0.979002,     -0.351008,2.5026,-1.044926,
+       -0.351008,2.5026,-1.044926,     -0.384379,2.4744,-1.144271,     -0.557774,2.4744,-1.072079,
+       -0.715555,2.4744,-0.975021,     -0.653431,2.5026,-0.89037,      -0.509349,2.5026,-0.979002,
+       -0.509349,2.5026,-0.979002,     -0.557774,2.4744,-1.072079,     -0.715555,2.4744,-0.975021,
+       -0.855408,2.4744,-0.855408,     -0.781142,2.5026,-0.781142,     -0.653431,2.5026,-0.89037,
+       -0.653431,2.5026,-0.89037,      -0.715555,2.4744,-0.975021,     -0.855408,2.4744,-0.855408,
+       -0.975021,2.4744,-0.715555,     -0.89037,2.5026,-0.653431,      -0.781142,2.5026,-0.781142,
+       -0.781142,2.5026,-0.781142,     -0.855408,2.4744,-0.855408,     -0.975021,2.4744,-0.715555,
+       -1.072079,2.4744,-0.557774,     -0.979002,2.5026,-0.509349,     -0.89037,2.5026,-0.653431,
+       -0.89037,2.5026,-0.653431,      -0.975021,2.4744,-0.715555,     -1.072079,2.4744,-0.557774,
+       -1.144271,2.4744,-0.384379,     -1.044926,2.5026,-0.351008,     -0.979002,2.5026,-0.509349,
+       -0.979002,2.5026,-0.509349,     -1.072079,2.4744,-0.557774,     -1.144271,2.4744,-0.384379,
+       -1.189282,2.4744,-0.197684,     -1.086029,2.5026,-0.180521,     -1.044926,2.5026,-0.351008,
+       -1.044926,2.5026,-0.351008,     -1.144271,2.4744,-0.384379,     -1.189282,2.4744,-0.197684,
+       -1.2048,2.4744,0,       -1.1002,2.5026,0,       -1.086029,2.5026,-0.180521,
+       -1.086029,2.5026,-0.180521,     -1.189282,2.4744,-0.197684,     -1.2048,2.4744,0,
+       -0.209136,2.4408,-1.258183,     -0.197684,2.4744,-1.189282,     0,2.4744,-1.2048,
+       0,2.4744,-1.2048,       0,2.4408,-1.2746,       -0.209136,2.4408,-1.258183,
+       -0.406648,2.4408,-1.210564,     -0.384379,2.4744,-1.144271,     -0.197684,2.4744,-1.189282,
+       -0.197684,2.4744,-1.189282,     -0.209136,2.4408,-1.258183,     -0.406648,2.4408,-1.210564,
+       -0.590089,2.4408,-1.13419,      -0.557774,2.4744,-1.072079,     -0.384379,2.4744,-1.144271,
+       -0.384379,2.4744,-1.144271,     -0.406648,2.4408,-1.210564,     -0.590089,2.4408,-1.13419,
+       -0.75701,2.4408,-1.031508,      -0.715555,2.4744,-0.975021,     -0.557774,2.4744,-1.072079,
+       -0.557774,2.4744,-1.072079,     -0.590089,2.4408,-1.13419,      -0.75701,2.4408,-1.031508,
+       -0.904966,2.4408,-0.904966,     -0.855408,2.4744,-0.855408,     -0.715555,2.4744,-0.975021,
+       -0.715555,2.4744,-0.975021,     -0.75701,2.4408,-1.031508,      -0.904966,2.4408,-0.904966,
+       -1.031508,2.4408,-0.75701,      -0.975021,2.4744,-0.715555,     -0.855408,2.4744,-0.855408,
+       -0.855408,2.4744,-0.855408,     -0.904966,2.4408,-0.904966,     -1.031508,2.4408,-0.75701,
+       -1.13419,2.4408,-0.590089,      -1.072079,2.4744,-0.557774,     -0.975021,2.4744,-0.715555,
+       -0.975021,2.4744,-0.715555,     -1.031508,2.4408,-0.75701,      -1.13419,2.4408,-0.590089,
+       -1.210564,2.4408,-0.406648,     -1.144271,2.4744,-0.384379,     -1.072079,2.4744,-0.557774,
+       -1.072079,2.4744,-0.557774,     -1.13419,2.4408,-0.590089,      -1.210564,2.4408,-0.406648,
+       -1.258183,2.4408,-0.209136,     -1.189282,2.4744,-0.197684,     -1.144271,2.4744,-0.384379,
+       -1.144271,2.4744,-0.384379,     -1.210564,2.4408,-0.406648,     -1.258183,2.4408,-0.209136,
+       -1.2746,2.4408,0,       -1.2048,2.4744,0,       -1.189282,2.4744,-0.197684,
+       -1.189282,2.4744,-0.197684,     -1.258183,2.4408,-0.209136,     -1.2746,2.4408,0,
+       -0.213304,2.4,-1.283256,        -0.209136,2.4408,-1.258183,     0,2.4408,-1.2746,
+       0,2.4408,-1.2746,       0,2.4,-1.3,     -0.213304,2.4,-1.283256,
+       -0.414752,2.4,-1.234688,        -0.406648,2.4408,-1.210564,     -0.209136,2.4408,-1.258183,
+       -0.209136,2.4408,-1.258183,     -0.213304,2.4,-1.283256,        -0.414752,2.4,-1.234688,
+       -0.601848,2.4,-1.156792,        -0.590089,2.4408,-1.13419,      -0.406648,2.4408,-1.210564,
+       -0.406648,2.4408,-1.210564,     -0.414752,2.4,-1.234688,        -0.601848,2.4,-1.156792,
+       -0.772096,2.4,-1.052064,        -0.75701,2.4408,-1.031508,      -0.590089,2.4408,-1.13419,
+       -0.590089,2.4408,-1.13419,      -0.601848,2.4,-1.156792,        -0.772096,2.4,-1.052064,
+       -0.923,2.4,-0.923,      -0.904966,2.4408,-0.904966,     -0.75701,2.4408,-1.031508,
+       -0.75701,2.4408,-1.031508,      -0.772096,2.4,-1.052064,        -0.923,2.4,-0.923,
+       -1.052064,2.4,-0.772096,        -1.031508,2.4408,-0.75701,      -0.904966,2.4408,-0.904966,
+       -0.904966,2.4408,-0.904966,     -0.923,2.4,-0.923,      -1.052064,2.4,-0.772096,
+       -1.156792,2.4,-0.601848,        -1.13419,2.4408,-0.590089,      -1.031508,2.4408,-0.75701,
+       -1.031508,2.4408,-0.75701,      -1.052064,2.4,-0.772096,        -1.156792,2.4,-0.601848,
+       -1.234688,2.4,-0.414752,        -1.210564,2.4408,-0.406648,     -1.13419,2.4408,-0.590089,
+       -1.13419,2.4408,-0.590089,      -1.156792,2.4,-0.601848,        -1.234688,2.4,-0.414752,
+       -1.283256,2.4,-0.213304,        -1.258183,2.4408,-0.209136,     -1.210564,2.4408,-0.406648,
+       -1.210564,2.4408,-0.406648,     -1.234688,2.4,-0.414752,        -1.283256,2.4,-0.213304,
+       -1.3,2.4,0,     -1.2746,2.4408,0,       -1.258183,2.4408,-0.209136,
+       -1.258183,2.4408,-0.209136,     -1.283256,2.4,-0.213304,        -1.3,2.4,0,
+       -0.275801,2.6592,0.045844,      -0.197424,2.7,0.032816, -0.2,2.7,0,
+       -0.2,2.7,0,     -0.2794,2.6592,0,       -0.275801,2.6592,0.045844,
+       -0.265363,2.6592,0.08914,       -0.189952,2.7,0.063808, -0.197424,2.7,0.032816,
+       -0.197424,2.7,0.032816, -0.275801,2.6592,0.045844,      -0.265363,2.6592,0.08914,
+       -0.248621,2.6592,0.129351,      -0.177968,2.7,0.092592, -0.189952,2.7,0.063808,
+       -0.189952,2.7,0.063808, -0.265363,2.6592,0.08914,       -0.248621,2.6592,0.129351,
+       -0.226113,2.6592,0.165941,      -0.161856,2.7,0.118784, -0.177968,2.7,0.092592,
+       -0.177968,2.7,0.092592, -0.248621,2.6592,0.129351,      -0.226113,2.6592,0.165941,
+       -0.198374,2.6592,0.198374,      -0.142,2.7,0.142,       -0.161856,2.7,0.118784,
+       -0.161856,2.7,0.118784, -0.226113,2.6592,0.165941,      -0.198374,2.6592,0.198374,
+       -0.165941,2.6592,0.226113,      -0.118784,2.7,0.161856, -0.142,2.7,0.142,
+       -0.142,2.7,0.142,       -0.198374,2.6592,0.198374,      -0.165941,2.6592,0.226113,
+       -0.129351,2.6592,0.248621,      -0.092592,2.7,0.177968, -0.118784,2.7,0.161856,
+       -0.118784,2.7,0.161856, -0.165941,2.6592,0.226113,      -0.129351,2.6592,0.248621,
+       -0.08914,2.6592,0.265363,       -0.063808,2.7,0.189952, -0.092592,2.7,0.177968,
+       -0.092592,2.7,0.177968, -0.129351,2.6592,0.248621,      -0.08914,2.6592,0.265363,
+       -0.045844,2.6592,0.275801,      -0.032816,2.7,0.197424, -0.063808,2.7,0.189952,
+       -0.063808,2.7,0.189952, -0.08914,2.6592,0.265363,       -0.045844,2.6592,0.275801,
+       0,2.6592,0.2794,        0,2.7,0.2,      -0.032816,2.7,0.197424,
+       -0.032816,2.7,0.197424, -0.045844,2.6592,0.275801,      0,2.6592,0.2794,
+       -0.386161,2.6256,0.064188,      -0.275801,2.6592,0.045844,      -0.2794,2.6592,0,
+       -0.2794,2.6592,0,       -0.3912,2.6256,0,       -0.386161,2.6256,0.064188,
+       -0.371546,2.6256,0.124808,      -0.265363,2.6592,0.08914,       -0.275801,2.6592,0.045844,
+       -0.275801,2.6592,0.045844,      -0.386161,2.6256,0.064188,      -0.371546,2.6256,0.124808,
+       -0.348105,2.6256,0.18111,       -0.248621,2.6592,0.129351,      -0.265363,2.6592,0.08914,
+       -0.265363,2.6592,0.08914,       -0.371546,2.6256,0.124808,      -0.348105,2.6256,0.18111,
+       -0.31659,2.6256,0.232342,       -0.226113,2.6592,0.165941,      -0.248621,2.6592,0.129351,
+       -0.248621,2.6592,0.129351,      -0.348105,2.6256,0.18111,       -0.31659,2.6256,0.232342,
+       -0.277752,2.6256,0.277752,      -0.198374,2.6592,0.198374,      -0.226113,2.6592,0.165941,
+       -0.226113,2.6592,0.165941,      -0.31659,2.6256,0.232342,       -0.277752,2.6256,0.277752,
+       -0.232342,2.6256,0.31659,       -0.165941,2.6592,0.226113,      -0.198374,2.6592,0.198374,
+       -0.198374,2.6592,0.198374,      -0.277752,2.6256,0.277752,      -0.232342,2.6256,0.31659,
+       -0.18111,2.6256,0.348105,       -0.129351,2.6592,0.248621,      -0.165941,2.6592,0.226113,
+       -0.165941,2.6592,0.226113,      -0.232342,2.6256,0.31659,       -0.18111,2.6256,0.348105,
+       -0.124808,2.6256,0.371546,      -0.08914,2.6592,0.265363,       -0.129351,2.6592,0.248621,
+       -0.129351,2.6592,0.248621,      -0.18111,2.6256,0.348105,       -0.124808,2.6256,0.371546,
+       -0.064188,2.6256,0.386161,      -0.045844,2.6592,0.275801,      -0.08914,2.6592,0.265363,
+       -0.08914,2.6592,0.265363,       -0.124808,2.6256,0.371546,      -0.064188,2.6256,0.386161,
+       0,2.6256,0.3912,        0,2.6592,0.2794,        -0.045844,2.6592,0.275801,
+       -0.045844,2.6592,0.275801,      -0.064188,2.6256,0.386161,      0,2.6256,0.3912,
+       -0.519028,2.5974,0.086273,      -0.386161,2.6256,0.064188,      -0.3912,2.6256,0,
+       -0.3912,2.6256,0,       -0.5258,2.5974,0,       -0.519028,2.5974,0.086273,
+       -0.499384,2.5974,0.167751,      -0.371546,2.6256,0.124808,      -0.386161,2.6256,0.064188,
+       -0.386161,2.6256,0.064188,      -0.519028,2.5974,0.086273,      -0.499384,2.5974,0.167751,
+       -0.467878,2.5974,0.243424,      -0.348105,2.6256,0.18111,       -0.371546,2.6256,0.124808,
+       -0.371546,2.6256,0.124808,      -0.499384,2.5974,0.167751,      -0.467878,2.5974,0.243424,
+       -0.425519,2.5974,0.312283,      -0.31659,2.6256,0.232342,       -0.348105,2.6256,0.18111,
+       -0.348105,2.6256,0.18111,       -0.467878,2.5974,0.243424,      -0.425519,2.5974,0.312283,
+       -0.373318,2.5974,0.373318,      -0.277752,2.6256,0.277752,      -0.31659,2.6256,0.232342,
+       -0.31659,2.6256,0.232342,       -0.425519,2.5974,0.312283,      -0.373318,2.5974,0.373318,
+       -0.312283,2.5974,0.425519,      -0.232342,2.6256,0.31659,       -0.277752,2.6256,0.277752,
+       -0.277752,2.6256,0.277752,      -0.373318,2.5974,0.373318,      -0.312283,2.5974,0.425519,
+       -0.243424,2.5974,0.467878,      -0.18111,2.6256,0.348105,       -0.232342,2.6256,0.31659,
+       -0.232342,2.6256,0.31659,       -0.312283,2.5974,0.425519,      -0.243424,2.5974,0.467878,
+       -0.167751,2.5974,0.499384,      -0.124808,2.6256,0.371546,      -0.18111,2.6256,0.348105,
+       -0.18111,2.6256,0.348105,       -0.243424,2.5974,0.467878,      -0.167751,2.5974,0.499384,
+       -0.086273,2.5974,0.519028,      -0.064188,2.6256,0.386161,      -0.124808,2.6256,0.371546,
+       -0.124808,2.6256,0.371546,      -0.167751,2.5974,0.499384,      -0.086273,2.5974,0.519028,
+       0,2.5974,0.5258,        0,2.6256,0.3912,        -0.064188,2.6256,0.386161,
+       -0.064188,2.6256,0.386161,      -0.086273,2.5974,0.519028,      0,2.5974,0.5258,
+       -0.664924,2.5728,0.110524,      -0.519028,2.5974,0.086273,      -0.5258,2.5974,0,
+       -0.5258,2.5974,0,       -0.6736,2.5728,0,       -0.664924,2.5728,0.110524,
+       -0.639758,2.5728,0.214905,      -0.499384,2.5974,0.167751,      -0.519028,2.5974,0.086273,
+       -0.519028,2.5974,0.086273,      -0.664924,2.5728,0.110524,      -0.639758,2.5728,0.214905,
+       -0.599396,2.5728,0.31185,       -0.467878,2.5974,0.243424,      -0.499384,2.5974,0.167751,
+       -0.499384,2.5974,0.167751,      -0.639758,2.5728,0.214905,      -0.599396,2.5728,0.31185,
+       -0.545131,2.5728,0.400065,      -0.425519,2.5974,0.312283,      -0.467878,2.5974,0.243424,
+       -0.467878,2.5974,0.243424,      -0.599396,2.5728,0.31185,       -0.545131,2.5728,0.400065,
+       -0.478256,2.5728,0.478256,      -0.373318,2.5974,0.373318,      -0.425519,2.5974,0.312283,
+       -0.425519,2.5974,0.312283,      -0.545131,2.5728,0.400065,      -0.478256,2.5728,0.478256,
+       -0.400065,2.5728,0.545131,      -0.312283,2.5974,0.425519,      -0.373318,2.5974,0.373318,
+       -0.373318,2.5974,0.373318,      -0.478256,2.5728,0.478256,      -0.400065,2.5728,0.545131,
+       -0.31185,2.5728,0.599396,       -0.243424,2.5974,0.467878,      -0.312283,2.5974,0.425519,
+       -0.312283,2.5974,0.425519,      -0.400065,2.5728,0.545131,      -0.31185,2.5728,0.599396,
+       -0.214905,2.5728,0.639758,      -0.167751,2.5974,0.499384,      -0.243424,2.5974,0.467878,
+       -0.243424,2.5974,0.467878,      -0.31185,2.5728,0.599396,       -0.214905,2.5728,0.639758,
+       -0.110524,2.5728,0.664924,      -0.086273,2.5974,0.519028,      -0.167751,2.5974,0.499384,
+       -0.167751,2.5974,0.499384,      -0.214905,2.5728,0.639758,      -0.110524,2.5728,0.664924,
+       0,2.5728,0.6736,        0,2.5974,0.5258,        -0.086273,2.5974,0.519028,
+       -0.086273,2.5974,0.519028,      -0.110524,2.5728,0.664924,      0,2.5728,0.6736,
+       -0.814374,2.55,0.135366,        -0.664924,2.5728,0.110524,      -0.6736,2.5728,0,
+       -0.6736,2.5728,0,       -0.825,2.55,0,  -0.814374,2.55,0.135366,
+       -0.783552,2.55,0.263208,        -0.639758,2.5728,0.214905,      -0.664924,2.5728,0.110524,
+       -0.664924,2.5728,0.110524,      -0.814374,2.55,0.135366,        -0.783552,2.55,0.263208,
+       -0.734118,2.55,0.381942,        -0.599396,2.5728,0.31185,       -0.639758,2.5728,0.214905,
+       -0.639758,2.5728,0.214905,      -0.783552,2.55,0.263208,        -0.734118,2.55,0.381942,
+       -0.667656,2.55,0.489984,        -0.545131,2.5728,0.400065,      -0.599396,2.5728,0.31185,
+       -0.599396,2.5728,0.31185,       -0.734118,2.55,0.381942,        -0.667656,2.55,0.489984,
+       -0.58575,2.55,0.58575,  -0.478256,2.5728,0.478256,      -0.545131,2.5728,0.400065,
+       -0.545131,2.5728,0.400065,      -0.667656,2.55,0.489984,        -0.58575,2.55,0.58575,
+       -0.489984,2.55,0.667656,        -0.400065,2.5728,0.545131,      -0.478256,2.5728,0.478256,
+       -0.478256,2.5728,0.478256,      -0.58575,2.55,0.58575,  -0.489984,2.55,0.667656,
+       -0.381942,2.55,0.734118,        -0.31185,2.5728,0.599396,       -0.400065,2.5728,0.545131,
+       -0.400065,2.5728,0.545131,      -0.489984,2.55,0.667656,        -0.381942,2.55,0.734118,
+       -0.263208,2.55,0.783552,        -0.214905,2.5728,0.639758,      -0.31185,2.5728,0.599396,
+       -0.31185,2.5728,0.599396,       -0.381942,2.55,0.734118,        -0.263208,2.55,0.783552,
+       -0.135366,2.55,0.814374,        -0.110524,2.5728,0.664924,      -0.214905,2.5728,0.639758,
+       -0.214905,2.5728,0.639758,      -0.263208,2.55,0.783552,        -0.135366,2.55,0.814374,
+       0,2.55,0.825,   0,2.5728,0.6736,        -0.110524,2.5728,0.664924,
+       -0.110524,2.5728,0.664924,      -0.135366,2.55,0.814374,        0,2.55,0.825,
+       -0.957901,2.5272,0.159223,      -0.814374,2.55,0.135366,        -0.825,2.55,0,
+       -0.825,2.55,0,  -0.9704,2.5272,0,       -0.957901,2.5272,0.159223,
+       -0.921647,2.5272,0.309596,      -0.783552,2.55,0.263208,        -0.814374,2.55,0.135366,
+       -0.814374,2.55,0.135366,        -0.957901,2.5272,0.159223,      -0.921647,2.5272,0.309596,
+       -0.863501,2.5272,0.449256,      -0.734118,2.55,0.381942,        -0.783552,2.55,0.263208,
+       -0.783552,2.55,0.263208,        -0.921647,2.5272,0.309596,      -0.863501,2.5272,0.449256,
+       -0.785325,2.5272,0.57634,       -0.667656,2.55,0.489984,        -0.734118,2.55,0.381942,
+       -0.734118,2.55,0.381942,        -0.863501,2.5272,0.449256,      -0.785325,2.5272,0.57634,
+       -0.688984,2.5272,0.688984,      -0.58575,2.55,0.58575,  -0.667656,2.55,0.489984,
+       -0.667656,2.55,0.489984,        -0.785325,2.5272,0.57634,       -0.688984,2.5272,0.688984,
+       -0.57634,2.5272,0.785325,       -0.489984,2.55,0.667656,        -0.58575,2.55,0.58575,
+       -0.58575,2.55,0.58575,  -0.688984,2.5272,0.688984,      -0.57634,2.5272,0.785325,
+       -0.449256,2.5272,0.863501,      -0.381942,2.55,0.734118,        -0.489984,2.55,0.667656,
+       -0.489984,2.55,0.667656,        -0.57634,2.5272,0.785325,       -0.449256,2.5272,0.863501,
+       -0.309596,2.5272,0.921647,      -0.263208,2.55,0.783552,        -0.381942,2.55,0.734118,
+       -0.381942,2.55,0.734118,        -0.449256,2.5272,0.863501,      -0.309596,2.5272,0.921647,
+       -0.159223,2.5272,0.957901,      -0.135366,2.55,0.814374,        -0.263208,2.55,0.783552,
+       -0.263208,2.55,0.783552,        -0.309596,2.5272,0.921647,      -0.159223,2.5272,0.957901,
+       0,2.5272,0.9704,        0,2.55,0.825,   -0.135366,2.55,0.814374,
+       -0.135366,2.55,0.814374,        -0.159223,2.5272,0.957901,      0,2.5272,0.9704,
+       -1.086029,2.5026,0.180521,      -0.957901,2.5272,0.159223,      -0.9704,2.5272,0,
+       -0.9704,2.5272,0,       -1.1002,2.5026,0,       -1.086029,2.5026,0.180521,
+       -1.044926,2.5026,0.351008,      -0.921647,2.5272,0.309596,      -0.957901,2.5272,0.159223,
+       -0.957901,2.5272,0.159223,      -1.086029,2.5026,0.180521,      -1.044926,2.5026,0.351008,
+       -0.979002,2.5026,0.509349,      -0.863501,2.5272,0.449256,      -0.921647,2.5272,0.309596,
+       -0.921647,2.5272,0.309596,      -1.044926,2.5026,0.351008,      -0.979002,2.5026,0.509349,
+       -0.89037,2.5026,0.653431,       -0.785325,2.5272,0.57634,       -0.863501,2.5272,0.449256,
+       -0.863501,2.5272,0.449256,      -0.979002,2.5026,0.509349,      -0.89037,2.5026,0.653431,
+       -0.781142,2.5026,0.781142,      -0.688984,2.5272,0.688984,      -0.785325,2.5272,0.57634,
+       -0.785325,2.5272,0.57634,       -0.89037,2.5026,0.653431,       -0.781142,2.5026,0.781142,
+       -0.653431,2.5026,0.89037,       -0.57634,2.5272,0.785325,       -0.688984,2.5272,0.688984,
+       -0.688984,2.5272,0.688984,      -0.781142,2.5026,0.781142,      -0.653431,2.5026,0.89037,
+       -0.509349,2.5026,0.979002,      -0.449256,2.5272,0.863501,      -0.57634,2.5272,0.785325,
+       -0.57634,2.5272,0.785325,       -0.653431,2.5026,0.89037,       -0.509349,2.5026,0.979002,
+       -0.351008,2.5026,1.044926,      -0.309596,2.5272,0.921647,      -0.449256,2.5272,0.863501,
+       -0.449256,2.5272,0.863501,      -0.509349,2.5026,0.979002,      -0.351008,2.5026,1.044926,
+       -0.180521,2.5026,1.086029,      -0.159223,2.5272,0.957901,      -0.309596,2.5272,0.921647,
+       -0.309596,2.5272,0.921647,      -0.351008,2.5026,1.044926,      -0.180521,2.5026,1.086029,
+       0,2.5026,1.1002,        0,2.5272,0.9704,        -0.159223,2.5272,0.957901,
+       -0.159223,2.5272,0.957901,      -0.180521,2.5026,1.086029,      0,2.5026,1.1002,
+       -1.189282,2.4744,0.197684,      -1.086029,2.5026,0.180521,      -1.1002,2.5026,0,
+       -1.1002,2.5026,0,       -1.2048,2.4744,0,       -1.189282,2.4744,0.197684,
+       -1.144271,2.4744,0.384379,      -1.044926,2.5026,0.351008,      -1.086029,2.5026,0.180521,
+       -1.086029,2.5026,0.180521,      -1.189282,2.4744,0.197684,      -1.144271,2.4744,0.384379,
+       -1.072079,2.4744,0.557774,      -0.979002,2.5026,0.509349,      -1.044926,2.5026,0.351008,
+       -1.044926,2.5026,0.351008,      -1.144271,2.4744,0.384379,      -1.072079,2.4744,0.557774,
+       -0.975021,2.4744,0.715555,      -0.89037,2.5026,0.653431,       -0.979002,2.5026,0.509349,
+       -0.979002,2.5026,0.509349,      -1.072079,2.4744,0.557774,      -0.975021,2.4744,0.715555,
+       -0.855408,2.4744,0.855408,      -0.781142,2.5026,0.781142,      -0.89037,2.5026,0.653431,
+       -0.89037,2.5026,0.653431,       -0.975021,2.4744,0.715555,      -0.855408,2.4744,0.855408,
+       -0.715555,2.4744,0.975021,      -0.653431,2.5026,0.89037,       -0.781142,2.5026,0.781142,
+       -0.781142,2.5026,0.781142,      -0.855408,2.4744,0.855408,      -0.715555,2.4744,0.975021,
+       -0.557774,2.4744,1.072079,      -0.509349,2.5026,0.979002,      -0.653431,2.5026,0.89037,
+       -0.653431,2.5026,0.89037,       -0.715555,2.4744,0.975021,      -0.557774,2.4744,1.072079,
+       -0.384379,2.4744,1.144271,      -0.351008,2.5026,1.044926,      -0.509349,2.5026,0.979002,
+       -0.509349,2.5026,0.979002,      -0.557774,2.4744,1.072079,      -0.384379,2.4744,1.144271,
+       -0.197684,2.4744,1.189282,      -0.180521,2.5026,1.086029,      -0.351008,2.5026,1.044926,
+       -0.351008,2.5026,1.044926,      -0.384379,2.4744,1.144271,      -0.197684,2.4744,1.189282,
+       0,2.4744,1.2048,        0,2.5026,1.1002,        -0.180521,2.5026,1.086029,
+       -0.180521,2.5026,1.086029,      -0.197684,2.4744,1.189282,      0,2.4744,1.2048,
+       -1.258183,2.4408,0.209136,      -1.189282,2.4744,0.197684,      -1.2048,2.4744,0,
+       -1.2048,2.4744,0,       -1.2746,2.4408,0,       -1.258183,2.4408,0.209136,
+       -1.210564,2.4408,0.406648,      -1.144271,2.4744,0.384379,      -1.189282,2.4744,0.197684,
+       -1.189282,2.4744,0.197684,      -1.258183,2.4408,0.209136,      -1.210564,2.4408,0.406648,
+       -1.13419,2.4408,0.590089,       -1.072079,2.4744,0.557774,      -1.144271,2.4744,0.384379,
+       -1.144271,2.4744,0.384379,      -1.210564,2.4408,0.406648,      -1.13419,2.4408,0.590089,
+       -1.031508,2.4408,0.75701,       -0.975021,2.4744,0.715555,      -1.072079,2.4744,0.557774,
+       -1.072079,2.4744,0.557774,      -1.13419,2.4408,0.590089,       -1.031508,2.4408,0.75701,
+       -0.904966,2.4408,0.904966,      -0.855408,2.4744,0.855408,      -0.975021,2.4744,0.715555,
+       -0.975021,2.4744,0.715555,      -1.031508,2.4408,0.75701,       -0.904966,2.4408,0.904966,
+       -0.75701,2.4408,1.031508,       -0.715555,2.4744,0.975021,      -0.855408,2.4744,0.855408,
+       -0.855408,2.4744,0.855408,      -0.904966,2.4408,0.904966,      -0.75701,2.4408,1.031508,
+       -0.590089,2.4408,1.13419,       -0.557774,2.4744,1.072079,      -0.715555,2.4744,0.975021,
+       -0.715555,2.4744,0.975021,      -0.75701,2.4408,1.031508,       -0.590089,2.4408,1.13419,
+       -0.406648,2.4408,1.210564,      -0.384379,2.4744,1.144271,      -0.557774,2.4744,1.072079,
+       -0.557774,2.4744,1.072079,      -0.590089,2.4408,1.13419,       -0.406648,2.4408,1.210564,
+       -0.209136,2.4408,1.258183,      -0.197684,2.4744,1.189282,      -0.384379,2.4744,1.144271,
+       -0.384379,2.4744,1.144271,      -0.406648,2.4408,1.210564,      -0.209136,2.4408,1.258183,
+       0,2.4408,1.2746,        0,2.4744,1.2048,        -0.197684,2.4744,1.189282,
+       -0.197684,2.4744,1.189282,      -0.209136,2.4408,1.258183,      0,2.4408,1.2746,
+       -1.283256,2.4,0.213304, -1.258183,2.4408,0.209136,      -1.2746,2.4408,0,
+       -1.2746,2.4408,0,       -1.3,2.4,0,     -1.283256,2.4,0.213304,
+       -1.234688,2.4,0.414752, -1.210564,2.4408,0.406648,      -1.258183,2.4408,0.209136,
+       -1.258183,2.4408,0.209136,      -1.283256,2.4,0.213304, -1.234688,2.4,0.414752,
+       -1.156792,2.4,0.601848, -1.13419,2.4408,0.590089,       -1.210564,2.4408,0.406648,
+       -1.210564,2.4408,0.406648,      -1.234688,2.4,0.414752, -1.156792,2.4,0.601848,
+       -1.052064,2.4,0.772096, -1.031508,2.4408,0.75701,       -1.13419,2.4408,0.590089,
+       -1.13419,2.4408,0.590089,       -1.156792,2.4,0.601848, -1.052064,2.4,0.772096,
+       -0.923,2.4,0.923,       -0.904966,2.4408,0.904966,      -1.031508,2.4408,0.75701,
+       -1.031508,2.4408,0.75701,       -1.052064,2.4,0.772096, -0.923,2.4,0.923,
+       -0.772096,2.4,1.052064, -0.75701,2.4408,1.031508,       -0.904966,2.4408,0.904966,
+       -0.904966,2.4408,0.904966,      -0.923,2.4,0.923,       -0.772096,2.4,1.052064,
+       -0.601848,2.4,1.156792, -0.590089,2.4408,1.13419,       -0.75701,2.4408,1.031508,
+       -0.75701,2.4408,1.031508,       -0.772096,2.4,1.052064, -0.601848,2.4,1.156792,
+       -0.414752,2.4,1.234688, -0.406648,2.4408,1.210564,      -0.590089,2.4408,1.13419,
+       -0.590089,2.4408,1.13419,       -0.601848,2.4,1.156792, -0.414752,2.4,1.234688,
+       -0.213304,2.4,1.283256, -0.209136,2.4408,1.258183,      -0.406648,2.4408,1.210564,
+       -0.406648,2.4408,1.210564,      -0.414752,2.4,1.234688, -0.213304,2.4,1.283256,
+       0,2.4,1.3,      0,2.4408,1.2746,        -0.209136,2.4408,1.258183,
+       -0.209136,2.4408,1.258183,      -0.213304,2.4,1.283256, 0,2.4,1.3,
+       0.045844,2.6592,0.275801,       0.032816,2.7,0.197424,  0,2.7,0.2,
+       0,2.7,0.2,      0,2.6592,0.2794,        0.045844,2.6592,0.275801,
+       0.08914,2.6592,0.265363,        0.063808,2.7,0.189952,  0.032816,2.7,0.197424,
+       0.032816,2.7,0.197424,  0.045844,2.6592,0.275801,       0.08914,2.6592,0.265363,
+       0.129351,2.6592,0.248621,       0.092592,2.7,0.177968,  0.063808,2.7,0.189952,
+       0.063808,2.7,0.189952,  0.08914,2.6592,0.265363,        0.129351,2.6592,0.248621,
+       0.165941,2.6592,0.226113,       0.118784,2.7,0.161856,  0.092592,2.7,0.177968,
+       0.092592,2.7,0.177968,  0.129351,2.6592,0.248621,       0.165941,2.6592,0.226113,
+       0.198374,2.6592,0.198374,       0.142,2.7,0.142,        0.118784,2.7,0.161856,
+       0.118784,2.7,0.161856,  0.165941,2.6592,0.226113,       0.198374,2.6592,0.198374,
+       0.226113,2.6592,0.165941,       0.161856,2.7,0.118784,  0.142,2.7,0.142,
+       0.142,2.7,0.142,        0.198374,2.6592,0.198374,       0.226113,2.6592,0.165941,
+       0.248621,2.6592,0.129351,       0.177968,2.7,0.092592,  0.161856,2.7,0.118784,
+       0.161856,2.7,0.118784,  0.226113,2.6592,0.165941,       0.248621,2.6592,0.129351,
+       0.265363,2.6592,0.08914,        0.189952,2.7,0.063808,  0.177968,2.7,0.092592,
+       0.177968,2.7,0.092592,  0.248621,2.6592,0.129351,       0.265363,2.6592,0.08914,
+       0.275801,2.6592,0.045844,       0.197424,2.7,0.032816,  0.189952,2.7,0.063808,
+       0.189952,2.7,0.063808,  0.265363,2.6592,0.08914,        0.275801,2.6592,0.045844,
+       0.2794,2.6592,0,        0.2,2.7,0,      0.197424,2.7,0.032816,
+       0.197424,2.7,0.032816,  0.275801,2.6592,0.045844,       0.2794,2.6592,0,
+       0.064188,2.6256,0.386161,       0.045844,2.6592,0.275801,       0,2.6592,0.2794,
+       0,2.6592,0.2794,        0,2.6256,0.3912,        0.064188,2.6256,0.386161,
+       0.124808,2.6256,0.371546,       0.08914,2.6592,0.265363,        0.045844,2.6592,0.275801,
+       0.045844,2.6592,0.275801,       0.064188,2.6256,0.386161,       0.124808,2.6256,0.371546,
+       0.18111,2.6256,0.348105,        0.129351,2.6592,0.248621,       0.08914,2.6592,0.265363,
+       0.08914,2.6592,0.265363,        0.124808,2.6256,0.371546,       0.18111,2.6256,0.348105,
+       0.232342,2.6256,0.31659,        0.165941,2.6592,0.226113,       0.129351,2.6592,0.248621,
+       0.129351,2.6592,0.248621,       0.18111,2.6256,0.348105,        0.232342,2.6256,0.31659,
+       0.277752,2.6256,0.277752,       0.198374,2.6592,0.198374,       0.165941,2.6592,0.226113,
+       0.165941,2.6592,0.226113,       0.232342,2.6256,0.31659,        0.277752,2.6256,0.277752,
+       0.31659,2.6256,0.232342,        0.226113,2.6592,0.165941,       0.198374,2.6592,0.198374,
+       0.198374,2.6592,0.198374,       0.277752,2.6256,0.277752,       0.31659,2.6256,0.232342,
+       0.348105,2.6256,0.18111,        0.248621,2.6592,0.129351,       0.226113,2.6592,0.165941,
+       0.226113,2.6592,0.165941,       0.31659,2.6256,0.232342,        0.348105,2.6256,0.18111,
+       0.371546,2.6256,0.124808,       0.265363,2.6592,0.08914,        0.248621,2.6592,0.129351,
+       0.248621,2.6592,0.129351,       0.348105,2.6256,0.18111,        0.371546,2.6256,0.124808,
+       0.386161,2.6256,0.064188,       0.275801,2.6592,0.045844,       0.265363,2.6592,0.08914,
+       0.265363,2.6592,0.08914,        0.371546,2.6256,0.124808,       0.386161,2.6256,0.064188,
+       0.3912,2.6256,0,        0.2794,2.6592,0,        0.275801,2.6592,0.045844,
+       0.275801,2.6592,0.045844,       0.386161,2.6256,0.064188,       0.3912,2.6256,0,
+       0.086273,2.5974,0.519028,       0.064188,2.6256,0.386161,       0,2.6256,0.3912,
+       0,2.6256,0.3912,        0,2.5974,0.5258,        0.086273,2.5974,0.519028,
+       0.167751,2.5974,0.499384,       0.124808,2.6256,0.371546,       0.064188,2.6256,0.386161,
+       0.064188,2.6256,0.386161,       0.086273,2.5974,0.519028,       0.167751,2.5974,0.499384,
+       0.243424,2.5974,0.467878,       0.18111,2.6256,0.348105,        0.124808,2.6256,0.371546,
+       0.124808,2.6256,0.371546,       0.167751,2.5974,0.499384,       0.243424,2.5974,0.467878,
+       0.312283,2.5974,0.425519,       0.232342,2.6256,0.31659,        0.18111,2.6256,0.348105,
+       0.18111,2.6256,0.348105,        0.243424,2.5974,0.467878,       0.312283,2.5974,0.425519,
+       0.373318,2.5974,0.373318,       0.277752,2.6256,0.277752,       0.232342,2.6256,0.31659,
+       0.232342,2.6256,0.31659,        0.312283,2.5974,0.425519,       0.373318,2.5974,0.373318,
+       0.425519,2.5974,0.312283,       0.31659,2.6256,0.232342,        0.277752,2.6256,0.277752,
+       0.277752,2.6256,0.277752,       0.373318,2.5974,0.373318,       0.425519,2.5974,0.312283,
+       0.467878,2.5974,0.243424,       0.348105,2.6256,0.18111,        0.31659,2.6256,0.232342,
+       0.31659,2.6256,0.232342,        0.425519,2.5974,0.312283,       0.467878,2.5974,0.243424,
+       0.499384,2.5974,0.167751,       0.371546,2.6256,0.124808,       0.348105,2.6256,0.18111,
+       0.348105,2.6256,0.18111,        0.467878,2.5974,0.243424,       0.499384,2.5974,0.167751,
+       0.519028,2.5974,0.086273,       0.386161,2.6256,0.064188,       0.371546,2.6256,0.124808,
+       0.371546,2.6256,0.124808,       0.499384,2.5974,0.167751,       0.519028,2.5974,0.086273,
+       0.5258,2.5974,0,        0.3912,2.6256,0,        0.386161,2.6256,0.064188,
+       0.386161,2.6256,0.064188,       0.519028,2.5974,0.086273,       0.5258,2.5974,0,
+       0.110524,2.5728,0.664924,       0.086273,2.5974,0.519028,       0,2.5974,0.5258,
+       0,2.5974,0.5258,        0,2.5728,0.6736,        0.110524,2.5728,0.664924,
+       0.214905,2.5728,0.639758,       0.167751,2.5974,0.499384,       0.086273,2.5974,0.519028,
+       0.086273,2.5974,0.519028,       0.110524,2.5728,0.664924,       0.214905,2.5728,0.639758,
+       0.31185,2.5728,0.599396,        0.243424,2.5974,0.467878,       0.167751,2.5974,0.499384,
+       0.167751,2.5974,0.499384,       0.214905,2.5728,0.639758,       0.31185,2.5728,0.599396,
+       0.400065,2.5728,0.545131,       0.312283,2.5974,0.425519,       0.243424,2.5974,0.467878,
+       0.243424,2.5974,0.467878,       0.31185,2.5728,0.599396,        0.400065,2.5728,0.545131,
+       0.478256,2.5728,0.478256,       0.373318,2.5974,0.373318,       0.312283,2.5974,0.425519,
+       0.312283,2.5974,0.425519,       0.400065,2.5728,0.545131,       0.478256,2.5728,0.478256,
+       0.545131,2.5728,0.400065,       0.425519,2.5974,0.312283,       0.373318,2.5974,0.373318,
+       0.373318,2.5974,0.373318,       0.478256,2.5728,0.478256,       0.545131,2.5728,0.400065,
+       0.599396,2.5728,0.31185,        0.467878,2.5974,0.243424,       0.425519,2.5974,0.312283,
+       0.425519,2.5974,0.312283,       0.545131,2.5728,0.400065,       0.599396,2.5728,0.31185,
+       0.639758,2.5728,0.214905,       0.499384,2.5974,0.167751,       0.467878,2.5974,0.243424,
+       0.467878,2.5974,0.243424,       0.599396,2.5728,0.31185,        0.639758,2.5728,0.214905,
+       0.664924,2.5728,0.110524,       0.519028,2.5974,0.086273,       0.499384,2.5974,0.167751,
+       0.499384,2.5974,0.167751,       0.639758,2.5728,0.214905,       0.664924,2.5728,0.110524,
+       0.6736,2.5728,0,        0.5258,2.5974,0,        0.519028,2.5974,0.086273,
+       0.519028,2.5974,0.086273,       0.664924,2.5728,0.110524,       0.6736,2.5728,0,
+       0.135366,2.55,0.814374, 0.110524,2.5728,0.664924,       0,2.5728,0.6736,
+       0,2.5728,0.6736,        0,2.55,0.825,   0.135366,2.55,0.814374,
+       0.263208,2.55,0.783552, 0.214905,2.5728,0.639758,       0.110524,2.5728,0.664924,
+       0.110524,2.5728,0.664924,       0.135366,2.55,0.814374, 0.263208,2.55,0.783552,
+       0.381942,2.55,0.734118, 0.31185,2.5728,0.599396,        0.214905,2.5728,0.639758,
+       0.214905,2.5728,0.639758,       0.263208,2.55,0.783552, 0.381942,2.55,0.734118,
+       0.489984,2.55,0.667656, 0.400065,2.5728,0.545131,       0.31185,2.5728,0.599396,
+       0.31185,2.5728,0.599396,        0.381942,2.55,0.734118, 0.489984,2.55,0.667656,
+       0.58575,2.55,0.58575,   0.478256,2.5728,0.478256,       0.400065,2.5728,0.545131,
+       0.400065,2.5728,0.545131,       0.489984,2.55,0.667656, 0.58575,2.55,0.58575,
+       0.667656,2.55,0.489984, 0.545131,2.5728,0.400065,       0.478256,2.5728,0.478256,
+       0.478256,2.5728,0.478256,       0.58575,2.55,0.58575,   0.667656,2.55,0.489984,
+       0.734118,2.55,0.381942, 0.599396,2.5728,0.31185,        0.545131,2.5728,0.400065,
+       0.545131,2.5728,0.400065,       0.667656,2.55,0.489984, 0.734118,2.55,0.381942,
+       0.783552,2.55,0.263208, 0.639758,2.5728,0.214905,       0.599396,2.5728,0.31185,
+       0.599396,2.5728,0.31185,        0.734118,2.55,0.381942, 0.783552,2.55,0.263208,
+       0.814374,2.55,0.135366, 0.664924,2.5728,0.110524,       0.639758,2.5728,0.214905,
+       0.639758,2.5728,0.214905,       0.783552,2.55,0.263208, 0.814374,2.55,0.135366,
+       0.825,2.55,0,   0.6736,2.5728,0,        0.664924,2.5728,0.110524,
+       0.664924,2.5728,0.110524,       0.814374,2.55,0.135366, 0.825,2.55,0,
+       0.159223,2.5272,0.957901,       0.135366,2.55,0.814374, 0,2.55,0.825,
+       0,2.55,0.825,   0,2.5272,0.9704,        0.159223,2.5272,0.957901,
+       0.309596,2.5272,0.921647,       0.263208,2.55,0.783552, 0.135366,2.55,0.814374,
+       0.135366,2.55,0.814374, 0.159223,2.5272,0.957901,       0.309596,2.5272,0.921647,
+       0.449256,2.5272,0.863501,       0.381942,2.55,0.734118, 0.263208,2.55,0.783552,
+       0.263208,2.55,0.783552, 0.309596,2.5272,0.921647,       0.449256,2.5272,0.863501,
+       0.57634,2.5272,0.785325,        0.489984,2.55,0.667656, 0.381942,2.55,0.734118,
+       0.381942,2.55,0.734118, 0.449256,2.5272,0.863501,       0.57634,2.5272,0.785325,
+       0.688984,2.5272,0.688984,       0.58575,2.55,0.58575,   0.489984,2.55,0.667656,
+       0.489984,2.55,0.667656, 0.57634,2.5272,0.785325,        0.688984,2.5272,0.688984,
+       0.785325,2.5272,0.57634,        0.667656,2.55,0.489984, 0.58575,2.55,0.58575,
+       0.58575,2.55,0.58575,   0.688984,2.5272,0.688984,       0.785325,2.5272,0.57634,
+       0.863501,2.5272,0.449256,       0.734118,2.55,0.381942, 0.667656,2.55,0.489984,
+       0.667656,2.55,0.489984, 0.785325,2.5272,0.57634,        0.863501,2.5272,0.449256,
+       0.921647,2.5272,0.309596,       0.783552,2.55,0.263208, 0.734118,2.55,0.381942,
+       0.734118,2.55,0.381942, 0.863501,2.5272,0.449256,       0.921647,2.5272,0.309596,
+       0.957901,2.5272,0.159223,       0.814374,2.55,0.135366, 0.783552,2.55,0.263208,
+       0.783552,2.55,0.263208, 0.921647,2.5272,0.309596,       0.957901,2.5272,0.159223,
+       0.9704,2.5272,0,        0.825,2.55,0,   0.814374,2.55,0.135366,
+       0.814374,2.55,0.135366, 0.957901,2.5272,0.159223,       0.9704,2.5272,0,
+       0.180521,2.5026,1.086029,       0.159223,2.5272,0.957901,       0,2.5272,0.9704,
+       0,2.5272,0.9704,        0,2.5026,1.1002,        0.180521,2.5026,1.086029,
+       0.351008,2.5026,1.044926,       0.309596,2.5272,0.921647,       0.159223,2.5272,0.957901,
+       0.159223,2.5272,0.957901,       0.180521,2.5026,1.086029,       0.351008,2.5026,1.044926,
+       0.509349,2.5026,0.979002,       0.449256,2.5272,0.863501,       0.309596,2.5272,0.921647,
+       0.309596,2.5272,0.921647,       0.351008,2.5026,1.044926,       0.509349,2.5026,0.979002,
+       0.653431,2.5026,0.89037,        0.57634,2.5272,0.785325,        0.449256,2.5272,0.863501,
+       0.449256,2.5272,0.863501,       0.509349,2.5026,0.979002,       0.653431,2.5026,0.89037,
+       0.781142,2.5026,0.781142,       0.688984,2.5272,0.688984,       0.57634,2.5272,0.785325,
+       0.57634,2.5272,0.785325,        0.653431,2.5026,0.89037,        0.781142,2.5026,0.781142,
+       0.89037,2.5026,0.653431,        0.785325,2.5272,0.57634,        0.688984,2.5272,0.688984,
+       0.688984,2.5272,0.688984,       0.781142,2.5026,0.781142,       0.89037,2.5026,0.653431,
+       0.979002,2.5026,0.509349,       0.863501,2.5272,0.449256,       0.785325,2.5272,0.57634,
+       0.785325,2.5272,0.57634,        0.89037,2.5026,0.653431,        0.979002,2.5026,0.509349,
+       1.044926,2.5026,0.351008,       0.921647,2.5272,0.309596,       0.863501,2.5272,0.449256,
+       0.863501,2.5272,0.449256,       0.979002,2.5026,0.509349,       1.044926,2.5026,0.351008,
+       1.086029,2.5026,0.180521,       0.957901,2.5272,0.159223,       0.921647,2.5272,0.309596,
+       0.921647,2.5272,0.309596,       1.044926,2.5026,0.351008,       1.086029,2.5026,0.180521,
+       1.1002,2.5026,0,        0.9704,2.5272,0,        0.957901,2.5272,0.159223,
+       0.957901,2.5272,0.159223,       1.086029,2.5026,0.180521,       1.1002,2.5026,0,
+       0.197684,2.4744,1.189282,       0.180521,2.5026,1.086029,       0,2.5026,1.1002,
+       0,2.5026,1.1002,        0,2.4744,1.2048,        0.197684,2.4744,1.189282,
+       0.384379,2.4744,1.144271,       0.351008,2.5026,1.044926,       0.180521,2.5026,1.086029,
+       0.180521,2.5026,1.086029,       0.197684,2.4744,1.189282,       0.384379,2.4744,1.144271,
+       0.557774,2.4744,1.072079,       0.509349,2.5026,0.979002,       0.351008,2.5026,1.044926,
+       0.351008,2.5026,1.044926,       0.384379,2.4744,1.144271,       0.557774,2.4744,1.072079,
+       0.715555,2.4744,0.975021,       0.653431,2.5026,0.89037,        0.509349,2.5026,0.979002,
+       0.509349,2.5026,0.979002,       0.557774,2.4744,1.072079,       0.715555,2.4744,0.975021,
+       0.855408,2.4744,0.855408,       0.781142,2.5026,0.781142,       0.653431,2.5026,0.89037,
+       0.653431,2.5026,0.89037,        0.715555,2.4744,0.975021,       0.855408,2.4744,0.855408,
+       0.975021,2.4744,0.715555,       0.89037,2.5026,0.653431,        0.781142,2.5026,0.781142,
+       0.781142,2.5026,0.781142,       0.855408,2.4744,0.855408,       0.975021,2.4744,0.715555,
+       1.072079,2.4744,0.557774,       0.979002,2.5026,0.509349,       0.89037,2.5026,0.653431,
+       0.89037,2.5026,0.653431,        0.975021,2.4744,0.715555,       1.072079,2.4744,0.557774,
+       1.144271,2.4744,0.384379,       1.044926,2.5026,0.351008,       0.979002,2.5026,0.509349,
+       0.979002,2.5026,0.509349,       1.072079,2.4744,0.557774,       1.144271,2.4744,0.384379,
+       1.189282,2.4744,0.197684,       1.086029,2.5026,0.180521,       1.044926,2.5026,0.351008,
+       1.044926,2.5026,0.351008,       1.144271,2.4744,0.384379,       1.189282,2.4744,0.197684,
+       1.2048,2.4744,0,        1.1002,2.5026,0,        1.086029,2.5026,0.180521,
+       1.086029,2.5026,0.180521,       1.189282,2.4744,0.197684,       1.2048,2.4744,0,
+       0.209136,2.4408,1.258183,       0.197684,2.4744,1.189282,       0,2.4744,1.2048,
+       0,2.4744,1.2048,        0,2.4408,1.2746,        0.209136,2.4408,1.258183,
+       0.406648,2.4408,1.210564,       0.384379,2.4744,1.144271,       0.197684,2.4744,1.189282,
+       0.197684,2.4744,1.189282,       0.209136,2.4408,1.258183,       0.406648,2.4408,1.210564,
+       0.590089,2.4408,1.13419,        0.557774,2.4744,1.072079,       0.384379,2.4744,1.144271,
+       0.384379,2.4744,1.144271,       0.406648,2.4408,1.210564,       0.590089,2.4408,1.13419,
+       0.75701,2.4408,1.031508,        0.715555,2.4744,0.975021,       0.557774,2.4744,1.072079,
+       0.557774,2.4744,1.072079,       0.590089,2.4408,1.13419,        0.75701,2.4408,1.031508,
+       0.904966,2.4408,0.904966,       0.855408,2.4744,0.855408,       0.715555,2.4744,0.975021,
+       0.715555,2.4744,0.975021,       0.75701,2.4408,1.031508,        0.904966,2.4408,0.904966,
+       1.031508,2.4408,0.75701,        0.975021,2.4744,0.715555,       0.855408,2.4744,0.855408,
+       0.855408,2.4744,0.855408,       0.904966,2.4408,0.904966,       1.031508,2.4408,0.75701,
+       1.13419,2.4408,0.590089,        1.072079,2.4744,0.557774,       0.975021,2.4744,0.715555,
+       0.975021,2.4744,0.715555,       1.031508,2.4408,0.75701,        1.13419,2.4408,0.590089,
+       1.210564,2.4408,0.406648,       1.144271,2.4744,0.384379,       1.072079,2.4744,0.557774,
+       1.072079,2.4744,0.557774,       1.13419,2.4408,0.590089,        1.210564,2.4408,0.406648,
+       1.258183,2.4408,0.209136,       1.189282,2.4744,0.197684,       1.144271,2.4744,0.384379,
+       1.144271,2.4744,0.384379,       1.210564,2.4408,0.406648,       1.258183,2.4408,0.209136,
+       1.2746,2.4408,0,        1.2048,2.4744,0,        1.189282,2.4744,0.197684,
+       1.189282,2.4744,0.197684,       1.258183,2.4408,0.209136,       1.2746,2.4408,0,
+       0.213304,2.4,1.283256,  0.209136,2.4408,1.258183,       0,2.4408,1.2746,
+       0,2.4408,1.2746,        0,2.4,1.3,      0.213304,2.4,1.283256,
+       0.414752,2.4,1.234688,  0.406648,2.4408,1.210564,       0.209136,2.4408,1.258183,
+       0.209136,2.4408,1.258183,       0.213304,2.4,1.283256,  0.414752,2.4,1.234688,
+       0.601848,2.4,1.156792,  0.590089,2.4408,1.13419,        0.406648,2.4408,1.210564,
+       0.406648,2.4408,1.210564,       0.414752,2.4,1.234688,  0.601848,2.4,1.156792,
+       0.772096,2.4,1.052064,  0.75701,2.4408,1.031508,        0.590089,2.4408,1.13419,
+       0.590089,2.4408,1.13419,        0.601848,2.4,1.156792,  0.772096,2.4,1.052064,
+       0.923,2.4,0.923,        0.904966,2.4408,0.904966,       0.75701,2.4408,1.031508,
+       0.75701,2.4408,1.031508,        0.772096,2.4,1.052064,  0.923,2.4,0.923,
+       1.052064,2.4,0.772096,  1.031508,2.4408,0.75701,        0.904966,2.4408,0.904966,
+       0.904966,2.4408,0.904966,       0.923,2.4,0.923,        1.052064,2.4,0.772096,
+       1.156792,2.4,0.601848,  1.13419,2.4408,0.590089,        1.031508,2.4408,0.75701,
+       1.031508,2.4408,0.75701,        1.052064,2.4,0.772096,  1.156792,2.4,0.601848,
+       1.234688,2.4,0.414752,  1.210564,2.4408,0.406648,       1.13419,2.4408,0.590089,
+       1.13419,2.4408,0.590089,        1.156792,2.4,0.601848,  1.234688,2.4,0.414752,
+       1.283256,2.4,0.213304,  1.258183,2.4408,0.209136,       1.210564,2.4408,0.406648,
+       1.210564,2.4408,0.406648,       1.234688,2.4,0.414752,  1.283256,2.4,0.213304,
+       1.3,2.4,0,      1.2746,2.4408,0,        1.258183,2.4408,0.209136,
+       1.258183,2.4408,0.209136,       1.283256,2.4,0.213304,  1.3,2.4,0,
+       0,0,0,  0.388275,0.002175,0,    0.383274,0.002175,0.063708,
+       0,0,0,  0.383274,0.002175,0.063708,     0.368768,0.002175,0.123875,
+       0,0,0,  0.368768,0.002175,0.123875,     0.345503,0.002175,0.179756,
+       0,0,0,  0.345503,0.002175,0.179756,     0.314223,0.002175,0.230604,
+       0,0,0,  0.314223,0.002175,0.230604,     0.275675,0.002175,0.275675,
+       0,0,0,  0.275675,0.002175,0.275675,     0.230604,0.002175,0.314223,
+       0,0,0,  0.230604,0.002175,0.314223,     0.179756,0.002175,0.345503,
+       0,0,0,  0.179756,0.002175,0.345503,     0.123875,0.002175,0.368768,
+       0,0,0,  0.123875,0.002175,0.368768,     0.063708,0.002175,0.383274,
+       0,0,0,  0.063708,0.002175,0.383274,     0,0.002175,0.388275,
+       0.694143,0.0084,0.115381,       0.383274,0.002175,0.063708,     0.388275,0.002175,0,
+       0.388275,0.002175,0,    0.7032,0.0084,0,        0.694143,0.0084,0.115381,
+       0.667871,0.0084,0.224349,       0.368768,0.002175,0.123875,     0.383274,0.002175,0.063708,
+       0.383274,0.002175,0.063708,     0.694143,0.0084,0.115381,       0.667871,0.0084,0.224349,
+       0.625735,0.0084,0.325553,       0.345503,0.002175,0.179756,     0.368768,0.002175,0.123875,
+       0.368768,0.002175,0.123875,     0.667871,0.0084,0.224349,       0.625735,0.0084,0.325553,
+       0.569086,0.0084,0.417645,       0.314223,0.002175,0.230604,     0.345503,0.002175,0.179756,
+       0.345503,0.002175,0.179756,     0.625735,0.0084,0.325553,       0.569086,0.0084,0.417645,
+       0.499272,0.0084,0.499272,       0.275675,0.002175,0.275675,     0.314223,0.002175,0.230604,
+       0.314223,0.002175,0.230604,     0.569086,0.0084,0.417645,       0.499272,0.0084,0.499272,
+       0.417645,0.0084,0.569086,       0.230604,0.002175,0.314223,     0.275675,0.002175,0.275675,
+       0.275675,0.002175,0.275675,     0.499272,0.0084,0.499272,       0.417645,0.0084,0.569086,
+       0.325553,0.0084,0.625735,       0.179756,0.002175,0.345503,     0.230604,0.002175,0.314223,
+       0.230604,0.002175,0.314223,     0.417645,0.0084,0.569086,       0.325553,0.0084,0.625735,
+       0.224349,0.0084,0.667871,       0.123875,0.002175,0.368768,     0.179756,0.002175,0.345503,
+       0.179756,0.002175,0.345503,     0.325553,0.0084,0.625735,       0.224349,0.0084,0.667871,
+       0.115381,0.0084,0.694143,       0.063708,0.002175,0.383274,     0.123875,0.002175,0.368768,
+       0.123875,0.002175,0.368768,     0.224349,0.0084,0.667871,       0.115381,0.0084,0.694143,
+       0,0.0084,0.7032,        0,0.002175,0.388275,    0.063708,0.002175,0.383274,
+       0.063708,0.002175,0.383274,     0.115381,0.0084,0.694143,       0,0.0084,0.7032,
+       0.940158,0.018225,0.156274,     0.694143,0.0084,0.115381,       0.7032,0.0084,0,
+       0.7032,0.0084,0,        0.952425,0.018225,0,    0.940158,0.018225,0.156274,
+       0.904575,0.018225,0.303862,     0.667871,0.0084,0.224349,       0.694143,0.0084,0.115381,
+       0.694143,0.0084,0.115381,       0.940158,0.018225,0.156274,     0.904575,0.018225,0.303862,
+       0.847506,0.018225,0.440935,     0.625735,0.0084,0.325553,       0.667871,0.0084,0.224349,
+       0.667871,0.0084,0.224349,       0.904575,0.018225,0.303862,     0.847506,0.018225,0.440935,
+       0.770779,0.018225,0.565664,     0.569086,0.0084,0.417645,       0.625735,0.0084,0.325553,
+       0.625735,0.0084,0.325553,       0.847506,0.018225,0.440935,     0.770779,0.018225,0.565664,
+       0.676222,0.018225,0.676222,     0.499272,0.0084,0.499272,       0.569086,0.0084,0.417645,
+       0.569086,0.0084,0.417645,       0.770779,0.018225,0.565664,     0.676222,0.018225,0.676222,
+       0.565664,0.018225,0.770779,     0.417645,0.0084,0.569086,       0.499272,0.0084,0.499272,
+       0.499272,0.0084,0.499272,       0.676222,0.018225,0.676222,     0.565664,0.018225,0.770779,
+       0.440935,0.018225,0.847506,     0.325553,0.0084,0.625735,       0.417645,0.0084,0.569086,
+       0.417645,0.0084,0.569086,       0.565664,0.018225,0.770779,     0.440935,0.018225,0.847506,
+       0.303862,0.018225,0.904575,     0.224349,0.0084,0.667871,       0.325553,0.0084,0.625735,
+       0.325553,0.0084,0.625735,       0.440935,0.018225,0.847506,     0.303862,0.018225,0.904575,
+       0.156274,0.018225,0.940158,     0.115381,0.0084,0.694143,       0.224349,0.0084,0.667871,
+       0.224349,0.0084,0.667871,       0.303862,0.018225,0.904575,     0.156274,0.018225,0.940158,
+       0,0.018225,0.952425,    0,0.0084,0.7032,        0.115381,0.0084,0.694143,
+       0.115381,0.0084,0.694143,       0.156274,0.018225,0.940158,     0,0.018225,0.952425,
+       1.12887,0.0312,0.187642,        0.940158,0.018225,0.156274,     0.952425,0.018225,0,
+       0.952425,0.018225,0,    1.1436,0.0312,0,        1.12887,0.0312,0.187642,
+       1.086146,0.0312,0.364854,       0.904575,0.018225,0.303862,     0.940158,0.018225,0.156274,
+       0.940158,0.018225,0.156274,     1.12887,0.0312,0.187642,        1.086146,0.0312,0.364854,
+       1.017621,0.0312,0.529441,       0.847506,0.018225,0.440935,     0.904575,0.018225,0.303862,
+       0.904575,0.018225,0.303862,     1.086146,0.0312,0.364854,       1.017621,0.0312,0.529441,
+       0.925493,0.0312,0.679207,       0.770779,0.018225,0.565664,     0.847506,0.018225,0.440935,
+       0.847506,0.018225,0.440935,     1.017621,0.0312,0.529441,       0.925493,0.0312,0.679207,
+       0.811956,0.0312,0.811956,       0.676222,0.018225,0.676222,     0.770779,0.018225,0.565664,
+       0.770779,0.018225,0.565664,     0.925493,0.0312,0.679207,       0.811956,0.0312,0.811956,
+       0.679207,0.0312,0.925493,       0.565664,0.018225,0.770779,     0.676222,0.018225,0.676222,
+       0.676222,0.018225,0.676222,     0.811956,0.0312,0.811956,       0.679207,0.0312,0.925493,
+       0.529441,0.0312,1.017621,       0.440935,0.018225,0.847506,     0.565664,0.018225,0.770779,
+       0.565664,0.018225,0.770779,     0.679207,0.0312,0.925493,       0.529441,0.0312,1.017621,
+       0.364854,0.0312,1.086146,       0.303862,0.018225,0.904575,     0.440935,0.018225,0.847506,
+       0.440935,0.018225,0.847506,     0.529441,0.0312,1.017621,       0.364854,0.0312,1.086146,
+       0.187642,0.0312,1.12887,        0.156274,0.018225,0.940158,     0.303862,0.018225,0.904575,
+       0.303862,0.018225,0.904575,     0.364854,0.0312,1.086146,       0.187642,0.0312,1.12887,
+       0,0.0312,1.1436,        0,0.018225,0.952425,    0.156274,0.018225,0.940158,
+       0.156274,0.018225,0.940158,     0.187642,0.0312,1.12887,        0,0.0312,1.1436,
+       1.267832,0.046875,0.21074,      1.12887,0.0312,0.187642,        1.1436,0.0312,0,
+       1.1436,0.0312,0,        1.284375,0.046875,0,    1.267832,0.046875,0.21074,
+       1.219848,0.046875,0.409767,     1.086146,0.0312,0.364854,       1.12887,0.0312,0.187642,
+       1.12887,0.0312,0.187642,        1.267832,0.046875,0.21074,      1.219848,0.046875,0.409767,
+       1.142888,0.046875,0.594614,     1.017621,0.0312,0.529441,       1.086146,0.0312,0.364854,
+       1.086146,0.0312,0.364854,       1.219848,0.046875,0.409767,     1.142888,0.046875,0.594614,
+       1.039419,0.046875,0.762816,     0.925493,0.0312,0.679207,       1.017621,0.0312,0.529441,
+       1.017621,0.0312,0.529441,       1.142888,0.046875,0.594614,     1.039419,0.046875,0.762816,
+       0.911906,0.046875,0.911906,     0.811956,0.0312,0.811956,       0.925493,0.0312,0.679207,
+       0.925493,0.0312,0.679207,       1.039419,0.046875,0.762816,     0.911906,0.046875,0.911906,
+       0.762816,0.046875,1.039419,     0.679207,0.0312,0.925493,       0.811956,0.0312,0.811956,
+       0.811956,0.0312,0.811956,       0.911906,0.046875,0.911906,     0.762816,0.046875,1.039419,
+       0.594614,0.046875,1.142888,     0.529441,0.0312,1.017621,       0.679207,0.0312,0.925493,
+       0.679207,0.0312,0.925493,       0.762816,0.046875,1.039419,     0.594614,0.046875,1.142888,
+       0.409767,0.046875,1.219848,     0.364854,0.0312,1.086146,       0.529441,0.0312,1.017621,
+       0.529441,0.0312,1.017621,       0.594614,0.046875,1.142888,     0.409767,0.046875,1.219848,
+       0.21074,0.046875,1.267832,      0.187642,0.0312,1.12887,        0.364854,0.0312,1.086146,
+       0.364854,0.0312,1.086146,       0.409767,0.046875,1.219848,     0.21074,0.046875,1.267832,
+       0,0.046875,1.284375,    0,0.0312,1.1436,        0.187642,0.0312,1.12887,
+       0.187642,0.0312,1.12887,        0.21074,0.046875,1.267832,      0,0.046875,1.284375,
+       1.364595,0.0648,0.226824,       1.267832,0.046875,0.21074,      1.284375,0.046875,0,
+       1.284375,0.046875,0,    1.3824,0.0648,0,        1.364595,0.0648,0.226824,
+       1.312948,0.0648,0.441041,       1.219848,0.046875,0.409767,     1.267832,0.046875,0.21074,
+       1.267832,0.046875,0.21074,      1.364595,0.0648,0.226824,       1.312948,0.0648,0.441041,
+       1.230115,0.0648,0.639996,       1.142888,0.046875,0.594614,     1.219848,0.046875,0.409767,
+       1.219848,0.046875,0.409767,     1.312948,0.0648,0.441041,       1.230115,0.0648,0.639996,
+       1.118749,0.0648,0.821035,       1.039419,0.046875,0.762816,     1.142888,0.046875,0.594614,
+       1.142888,0.046875,0.594614,     1.230115,0.0648,0.639996,       1.118749,0.0648,0.821035,
+       0.981504,0.0648,0.981504,       0.911906,0.046875,0.911906,     1.039419,0.046875,0.762816,
+       1.039419,0.046875,0.762816,     1.118749,0.0648,0.821035,       0.981504,0.0648,0.981504,
+       0.821035,0.0648,1.118749,       0.762816,0.046875,1.039419,     0.911906,0.046875,0.911906,
+       0.911906,0.046875,0.911906,     0.981504,0.0648,0.981504,       0.821035,0.0648,1.118749,
+       0.639996,0.0648,1.230115,       0.594614,0.046875,1.142888,     0.762816,0.046875,1.039419,
+       0.762816,0.046875,1.039419,     0.821035,0.0648,1.118749,       0.639996,0.0648,1.230115,
+       0.441041,0.0648,1.312948,       0.409767,0.046875,1.219848,     0.594614,0.046875,1.142888,
+       0.594614,0.046875,1.142888,     0.639996,0.0648,1.230115,       0.441041,0.0648,1.312948,
+       0.226824,0.0648,1.364595,       0.21074,0.046875,1.267832,      0.409767,0.046875,1.219848,
+       0.409767,0.046875,1.219848,     0.441041,0.0648,1.312948,       0.226824,0.0648,1.364595,
+       0,0.0648,1.3824,        0,0.046875,1.284375,    0.21074,0.046875,1.267832,
+       0.21074,0.046875,1.267832,      0.226824,0.0648,1.364595,       0,0.0648,1.3824,
+       1.426709,0.084525,0.237149,     1.364595,0.0648,0.226824,       1.3824,0.0648,0,
+       1.3824,0.0648,0,        1.445325,0.084525,0,    1.426709,0.084525,0.237149,
+       1.372712,0.084525,0.461116,     1.312948,0.0648,0.441041,       1.364595,0.0648,0.226824,
+       1.364595,0.0648,0.226824,       1.426709,0.084525,0.237149,     1.372712,0.084525,0.461116,
+       1.286108,0.084525,0.669128,     1.230115,0.0648,0.639996,       1.312948,0.0648,0.441041,
+       1.312948,0.0648,0.441041,       1.372712,0.084525,0.461116,     1.286108,0.084525,0.669128,
+       1.169673,0.084525,0.858407,     1.118749,0.0648,0.821035,       1.230115,0.0648,0.639996,
+       1.230115,0.0648,0.639996,       1.286108,0.084525,0.669128,     1.169673,0.084525,0.858407,
+       1.026181,0.084525,1.026181,     0.981504,0.0648,0.981504,       1.118749,0.0648,0.821035,
+       1.118749,0.0648,0.821035,       1.169673,0.084525,0.858407,     1.026181,0.084525,1.026181,
+       0.858407,0.084525,1.169673,     0.821035,0.0648,1.118749,       0.981504,0.0648,0.981504,
+       0.981504,0.0648,0.981504,       1.026181,0.084525,1.026181,     0.858407,0.084525,1.169673,
+       0.669128,0.084525,1.286108,     0.639996,0.0648,1.230115,       0.821035,0.0648,1.118749,
+       0.821035,0.0648,1.118749,       0.858407,0.084525,1.169673,     0.669128,0.084525,1.286108,
+       0.461116,0.084525,1.372712,     0.441041,0.0648,1.312948,       0.639996,0.0648,1.230115,
+       0.639996,0.0648,1.230115,       0.669128,0.084525,1.286108,     0.461116,0.084525,1.372712,
+       0.237149,0.084525,1.426709,     0.226824,0.0648,1.364595,       0.441041,0.0648,1.312948,
+       0.441041,0.0648,1.312948,       0.461116,0.084525,1.372712,     0.237149,0.084525,1.426709,
+       0,0.084525,1.445325,    0,0.0648,1.3824,        0.226824,0.0648,1.364595,
+       0.226824,0.0648,1.364595,       0.237149,0.084525,1.426709,     0,0.084525,1.445325,
+       1.461727,0.1056,0.24297,        1.426709,0.084525,0.237149,     1.445325,0.084525,0,
+       1.445325,0.084525,0,    1.4808,0.1056,0,        1.461727,0.1056,0.24297,
+       1.406405,0.1056,0.472434,       1.372712,0.084525,0.461116,     1.426709,0.084525,0.237149,
+       1.426709,0.084525,0.237149,     1.461727,0.1056,0.24297,        1.406405,0.1056,0.472434,
+       1.317675,0.1056,0.685551,       1.286108,0.084525,0.669128,     1.372712,0.084525,0.461116,
+       1.372712,0.084525,0.461116,     1.406405,0.1056,0.472434,       1.317675,0.1056,0.685551,
+       1.198382,0.1056,0.879477,       1.169673,0.084525,0.858407,     1.286108,0.084525,0.669128,
+       1.286108,0.084525,0.669128,     1.317675,0.1056,0.685551,       1.198382,0.1056,0.879477,
+       1.051368,0.1056,1.051368,       1.026181,0.084525,1.026181,     1.169673,0.084525,0.858407,
+       1.169673,0.084525,0.858407,     1.198382,0.1056,0.879477,       1.051368,0.1056,1.051368,
+       0.879477,0.1056,1.198382,       0.858407,0.084525,1.169673,     1.026181,0.084525,1.026181,
+       1.026181,0.084525,1.026181,     1.051368,0.1056,1.051368,       0.879477,0.1056,1.198382,
+       0.685551,0.1056,1.317675,       0.669128,0.084525,1.286108,     0.858407,0.084525,1.169673,
+       0.858407,0.084525,1.169673,     0.879477,0.1056,1.198382,       0.685551,0.1056,1.317675,
+       0.472434,0.1056,1.406405,       0.461116,0.084525,1.372712,     0.669128,0.084525,1.286108,
+       0.669128,0.084525,1.286108,     0.685551,0.1056,1.317675,       0.472434,0.1056,1.406405,
+       0.24297,0.1056,1.461727,        0.237149,0.084525,1.426709,     0.461116,0.084525,1.372712,
+       0.461116,0.084525,1.372712,     0.472434,0.1056,1.406405,       0.24297,0.1056,1.461727,
+       0,0.1056,1.4808,        0,0.084525,1.445325,    0.237149,0.084525,1.426709,
+       0.237149,0.084525,1.426709,     0.24297,0.1056,1.461727,        0,0.1056,1.4808,
+       1.4772,0.127575,0.245542,       1.461727,0.1056,0.24297,        1.4808,0.1056,0,
+       1.4808,0.1056,0,        1.496475,0.127575,0,    1.4772,0.127575,0.245542,
+       1.421292,0.127575,0.477435,     1.406405,0.1056,0.472434,       1.461727,0.1056,0.24297,
+       1.461727,0.1056,0.24297,        1.4772,0.127575,0.245542,       1.421292,0.127575,0.477435,
+       1.331623,0.127575,0.692808,     1.317675,0.1056,0.685551,       1.406405,0.1056,0.472434,
+       1.406405,0.1056,0.472434,       1.421292,0.127575,0.477435,     1.331623,0.127575,0.692808,
+       1.211067,0.127575,0.888786,     1.198382,0.1056,0.879477,       1.317675,0.1056,0.685551,
+       1.317675,0.1056,0.685551,       1.331623,0.127575,0.692808,     1.211067,0.127575,0.888786,
+       1.062497,0.127575,1.062497,     1.051368,0.1056,1.051368,       1.198382,0.1056,0.879477,
+       1.198382,0.1056,0.879477,       1.211067,0.127575,0.888786,     1.062497,0.127575,1.062497,
+       0.888786,0.127575,1.211067,     0.879477,0.1056,1.198382,       1.051368,0.1056,1.051368,
+       1.051368,0.1056,1.051368,       1.062497,0.127575,1.062497,     0.888786,0.127575,1.211067,
+       0.692808,0.127575,1.331623,     0.685551,0.1056,1.317675,       0.879477,0.1056,1.198382,
+       0.879477,0.1056,1.198382,       0.888786,0.127575,1.211067,     0.692808,0.127575,1.331623,
+       0.477435,0.127575,1.421292,     0.472434,0.1056,1.406405,       0.685551,0.1056,1.317675,
+       0.685551,0.1056,1.317675,       0.692808,0.127575,1.331623,     0.477435,0.127575,1.421292,
+       0.245542,0.127575,1.4772,       0.24297,0.1056,1.461727,        0.472434,0.1056,1.406405,
+       0.472434,0.1056,1.406405,       0.477435,0.127575,1.421292,     0.245542,0.127575,1.4772,
+       0,0.127575,1.496475,    0,0.1056,1.4808,        0.24297,0.1056,1.461727,
+       0.24297,0.1056,1.461727,        0.245542,0.127575,1.4772,       0,0.127575,1.496475,
+       1.48068,0.15,0.24612,   1.4772,0.127575,0.245542,       1.496475,0.127575,0,
+       1.496475,0.127575,0,    1.5,0.15,0,     1.48068,0.15,0.24612,
+       1.42464,0.15,0.47856,   1.421292,0.127575,0.477435,     1.4772,0.127575,0.245542,
+       1.4772,0.127575,0.245542,       1.48068,0.15,0.24612,   1.42464,0.15,0.47856,
+       1.33476,0.15,0.69444,   1.331623,0.127575,0.692808,     1.421292,0.127575,0.477435,
+       1.421292,0.127575,0.477435,     1.42464,0.15,0.47856,   1.33476,0.15,0.69444,
+       1.21392,0.15,0.89088,   1.211067,0.127575,0.888786,     1.331623,0.127575,0.692808,
+       1.331623,0.127575,0.692808,     1.33476,0.15,0.69444,   1.21392,0.15,0.89088,
+       1.065,0.15,1.065,       1.062497,0.127575,1.062497,     1.211067,0.127575,0.888786,
+       1.211067,0.127575,0.888786,     1.21392,0.15,0.89088,   1.065,0.15,1.065,
+       0.89088,0.15,1.21392,   0.888786,0.127575,1.211067,     1.062497,0.127575,1.062497,
+       1.062497,0.127575,1.062497,     1.065,0.15,1.065,       0.89088,0.15,1.21392,
+       0.69444,0.15,1.33476,   0.692808,0.127575,1.331623,     0.888786,0.127575,1.211067,
+       0.888786,0.127575,1.211067,     0.89088,0.15,1.21392,   0.69444,0.15,1.33476,
+       0.47856,0.15,1.42464,   0.477435,0.127575,1.421292,     0.692808,0.127575,1.331623,
+       0.692808,0.127575,1.331623,     0.69444,0.15,1.33476,   0.47856,0.15,1.42464,
+       0.24612,0.15,1.48068,   0.245542,0.127575,1.4772,       0.477435,0.127575,1.421292,
+       0.477435,0.127575,1.421292,     0.47856,0.15,1.42464,   0.24612,0.15,1.48068,
+       0,0.15,1.5,     0,0.127575,1.496475,    0.245542,0.127575,1.4772,
+       0.245542,0.127575,1.4772,       0.24612,0.15,1.48068,   0,0.15,1.5,
+       0,0,0,  0,0.002175,0.388275,    -0.063708,0.002175,0.383274,
+       0,0,0,  -0.063708,0.002175,0.383274,    -0.123875,0.002175,0.368768,
+       0,0,0,  -0.123875,0.002175,0.368768,    -0.179756,0.002175,0.345503,
+       0,0,0,  -0.179756,0.002175,0.345503,    -0.230604,0.002175,0.314223,
+       0,0,0,  -0.230604,0.002175,0.314223,    -0.275675,0.002175,0.275675,
+       0,0,0,  -0.275675,0.002175,0.275675,    -0.314223,0.002175,0.230604,
+       0,0,0,  -0.314223,0.002175,0.230604,    -0.345503,0.002175,0.179756,
+       0,0,0,  -0.345503,0.002175,0.179756,    -0.368768,0.002175,0.123875,
+       0,0,0,  -0.368768,0.002175,0.123875,    -0.383274,0.002175,0.063708,
+       0,0,0,  -0.383274,0.002175,0.063708,    -0.388275,0.002175,0,
+       -0.115381,0.0084,0.694143,      -0.063708,0.002175,0.383274,    0,0.002175,0.388275,
+       0,0.002175,0.388275,    0,0.0084,0.7032,        -0.115381,0.0084,0.694143,
+       -0.224349,0.0084,0.667871,      -0.123875,0.002175,0.368768,    -0.063708,0.002175,0.383274,
+       -0.063708,0.002175,0.383274,    -0.115381,0.0084,0.694143,      -0.224349,0.0084,0.667871,
+       -0.325553,0.0084,0.625735,      -0.179756,0.002175,0.345503,    -0.123875,0.002175,0.368768,
+       -0.123875,0.002175,0.368768,    -0.224349,0.0084,0.667871,      -0.325553,0.0084,0.625735,
+       -0.417645,0.0084,0.569086,      -0.230604,0.002175,0.314223,    -0.179756,0.002175,0.345503,
+       -0.179756,0.002175,0.345503,    -0.325553,0.0084,0.625735,      -0.417645,0.0084,0.569086,
+       -0.499272,0.0084,0.499272,      -0.275675,0.002175,0.275675,    -0.230604,0.002175,0.314223,
+       -0.230604,0.002175,0.314223,    -0.417645,0.0084,0.569086,      -0.499272,0.0084,0.499272,
+       -0.569086,0.0084,0.417645,      -0.314223,0.002175,0.230604,    -0.275675,0.002175,0.275675,
+       -0.275675,0.002175,0.275675,    -0.499272,0.0084,0.499272,      -0.569086,0.0084,0.417645,
+       -0.625735,0.0084,0.325553,      -0.345503,0.002175,0.179756,    -0.314223,0.002175,0.230604,
+       -0.314223,0.002175,0.230604,    -0.569086,0.0084,0.417645,      -0.625735,0.0084,0.325553,
+       -0.667871,0.0084,0.224349,      -0.368768,0.002175,0.123875,    -0.345503,0.002175,0.179756,
+       -0.345503,0.002175,0.179756,    -0.625735,0.0084,0.325553,      -0.667871,0.0084,0.224349,
+       -0.694143,0.0084,0.115381,      -0.383274,0.002175,0.063708,    -0.368768,0.002175,0.123875,
+       -0.368768,0.002175,0.123875,    -0.667871,0.0084,0.224349,      -0.694143,0.0084,0.115381,
+       -0.7032,0.0084,0,       -0.388275,0.002175,0,   -0.383274,0.002175,0.063708,
+       -0.383274,0.002175,0.063708,    -0.694143,0.0084,0.115381,      -0.7032,0.0084,0,
+       -0.156274,0.018225,0.940158,    -0.115381,0.0084,0.694143,      0,0.0084,0.7032,
+       0,0.0084,0.7032,        0,0.018225,0.952425,    -0.156274,0.018225,0.940158,
+       -0.303862,0.018225,0.904575,    -0.224349,0.0084,0.667871,      -0.115381,0.0084,0.694143,
+       -0.115381,0.0084,0.694143,      -0.156274,0.018225,0.940158,    -0.303862,0.018225,0.904575,
+       -0.440935,0.018225,0.847506,    -0.325553,0.0084,0.625735,      -0.224349,0.0084,0.667871,
+       -0.224349,0.0084,0.667871,      -0.303862,0.018225,0.904575,    -0.440935,0.018225,0.847506,
+       -0.565664,0.018225,0.770779,    -0.417645,0.0084,0.569086,      -0.325553,0.0084,0.625735,
+       -0.325553,0.0084,0.625735,      -0.440935,0.018225,0.847506,    -0.565664,0.018225,0.770779,
+       -0.676222,0.018225,0.676222,    -0.499272,0.0084,0.499272,      -0.417645,0.0084,0.569086,
+       -0.417645,0.0084,0.569086,      -0.565664,0.018225,0.770779,    -0.676222,0.018225,0.676222,
+       -0.770779,0.018225,0.565664,    -0.569086,0.0084,0.417645,      -0.499272,0.0084,0.499272,
+       -0.499272,0.0084,0.499272,      -0.676222,0.018225,0.676222,    -0.770779,0.018225,0.565664,
+       -0.847506,0.018225,0.440935,    -0.625735,0.0084,0.325553,      -0.569086,0.0084,0.417645,
+       -0.569086,0.0084,0.417645,      -0.770779,0.018225,0.565664,    -0.847506,0.018225,0.440935,
+       -0.904575,0.018225,0.303862,    -0.667871,0.0084,0.224349,      -0.625735,0.0084,0.325553,
+       -0.625735,0.0084,0.325553,      -0.847506,0.018225,0.440935,    -0.904575,0.018225,0.303862,
+       -0.940158,0.018225,0.156274,    -0.694143,0.0084,0.115381,      -0.667871,0.0084,0.224349,
+       -0.667871,0.0084,0.224349,      -0.904575,0.018225,0.303862,    -0.940158,0.018225,0.156274,
+       -0.952425,0.018225,0,   -0.7032,0.0084,0,       -0.694143,0.0084,0.115381,
+       -0.694143,0.0084,0.115381,      -0.940158,0.018225,0.156274,    -0.952425,0.018225,0,
+       -0.187642,0.0312,1.12887,       -0.156274,0.018225,0.940158,    0,0.018225,0.952425,
+       0,0.018225,0.952425,    0,0.0312,1.1436,        -0.187642,0.0312,1.12887,
+       -0.364854,0.0312,1.086146,      -0.303862,0.018225,0.904575,    -0.156274,0.018225,0.940158,
+       -0.156274,0.018225,0.940158,    -0.187642,0.0312,1.12887,       -0.364854,0.0312,1.086146,
+       -0.529441,0.0312,1.017621,      -0.440935,0.018225,0.847506,    -0.303862,0.018225,0.904575,
+       -0.303862,0.018225,0.904575,    -0.364854,0.0312,1.086146,      -0.529441,0.0312,1.017621,
+       -0.679207,0.0312,0.925493,      -0.565664,0.018225,0.770779,    -0.440935,0.018225,0.847506,
+       -0.440935,0.018225,0.847506,    -0.529441,0.0312,1.017621,      -0.679207,0.0312,0.925493,
+       -0.811956,0.0312,0.811956,      -0.676222,0.018225,0.676222,    -0.565664,0.018225,0.770779,
+       -0.565664,0.018225,0.770779,    -0.679207,0.0312,0.925493,      -0.811956,0.0312,0.811956,
+       -0.925493,0.0312,0.679207,      -0.770779,0.018225,0.565664,    -0.676222,0.018225,0.676222,
+       -0.676222,0.018225,0.676222,    -0.811956,0.0312,0.811956,      -0.925493,0.0312,0.679207,
+       -1.017621,0.0312,0.529441,      -0.847506,0.018225,0.440935,    -0.770779,0.018225,0.565664,
+       -0.770779,0.018225,0.565664,    -0.925493,0.0312,0.679207,      -1.017621,0.0312,0.529441,
+       -1.086146,0.0312,0.364854,      -0.904575,0.018225,0.303862,    -0.847506,0.018225,0.440935,
+       -0.847506,0.018225,0.440935,    -1.017621,0.0312,0.529441,      -1.086146,0.0312,0.364854,
+       -1.12887,0.0312,0.187642,       -0.940158,0.018225,0.156274,    -0.904575,0.018225,0.303862,
+       -0.904575,0.018225,0.303862,    -1.086146,0.0312,0.364854,      -1.12887,0.0312,0.187642,
+       -1.1436,0.0312,0,       -0.952425,0.018225,0,   -0.940158,0.018225,0.156274,
+       -0.940158,0.018225,0.156274,    -1.12887,0.0312,0.187642,       -1.1436,0.0312,0,
+       -0.21074,0.046875,1.267832,     -0.187642,0.0312,1.12887,       0,0.0312,1.1436,
+       0,0.0312,1.1436,        0,0.046875,1.284375,    -0.21074,0.046875,1.267832,
+       -0.409767,0.046875,1.219848,    -0.364854,0.0312,1.086146,      -0.187642,0.0312,1.12887,
+       -0.187642,0.0312,1.12887,       -0.21074,0.046875,1.267832,     -0.409767,0.046875,1.219848,
+       -0.594614,0.046875,1.142888,    -0.529441,0.0312,1.017621,      -0.364854,0.0312,1.086146,
+       -0.364854,0.0312,1.086146,      -0.409767,0.046875,1.219848,    -0.594614,0.046875,1.142888,
+       -0.762816,0.046875,1.039419,    -0.679207,0.0312,0.925493,      -0.529441,0.0312,1.017621,
+       -0.529441,0.0312,1.017621,      -0.594614,0.046875,1.142888,    -0.762816,0.046875,1.039419,
+       -0.911906,0.046875,0.911906,    -0.811956,0.0312,0.811956,      -0.679207,0.0312,0.925493,
+       -0.679207,0.0312,0.925493,      -0.762816,0.046875,1.039419,    -0.911906,0.046875,0.911906,
+       -1.039419,0.046875,0.762816,    -0.925493,0.0312,0.679207,      -0.811956,0.0312,0.811956,
+       -0.811956,0.0312,0.811956,      -0.911906,0.046875,0.911906,    -1.039419,0.046875,0.762816,
+       -1.142888,0.046875,0.594614,    -1.017621,0.0312,0.529441,      -0.925493,0.0312,0.679207,
+       -0.925493,0.0312,0.679207,      -1.039419,0.046875,0.762816,    -1.142888,0.046875,0.594614,
+       -1.219848,0.046875,0.409767,    -1.086146,0.0312,0.364854,      -1.017621,0.0312,0.529441,
+       -1.017621,0.0312,0.529441,      -1.142888,0.046875,0.594614,    -1.219848,0.046875,0.409767,
+       -1.267832,0.046875,0.21074,     -1.12887,0.0312,0.187642,       -1.086146,0.0312,0.364854,
+       -1.086146,0.0312,0.364854,      -1.219848,0.046875,0.409767,    -1.267832,0.046875,0.21074,
+       -1.284375,0.046875,0,   -1.1436,0.0312,0,       -1.12887,0.0312,0.187642,
+       -1.12887,0.0312,0.187642,       -1.267832,0.046875,0.21074,     -1.284375,0.046875,0,
+       -0.226824,0.0648,1.364595,      -0.21074,0.046875,1.267832,     0,0.046875,1.284375,
+       0,0.046875,1.284375,    0,0.0648,1.3824,        -0.226824,0.0648,1.364595,
+       -0.441041,0.0648,1.312948,      -0.409767,0.046875,1.219848,    -0.21074,0.046875,1.267832,
+       -0.21074,0.046875,1.267832,     -0.226824,0.0648,1.364595,      -0.441041,0.0648,1.312948,
+       -0.639996,0.0648,1.230115,      -0.594614,0.046875,1.142888,    -0.409767,0.046875,1.219848,
+       -0.409767,0.046875,1.219848,    -0.441041,0.0648,1.312948,      -0.639996,0.0648,1.230115,
+       -0.821035,0.0648,1.118749,      -0.762816,0.046875,1.039419,    -0.594614,0.046875,1.142888,
+       -0.594614,0.046875,1.142888,    -0.639996,0.0648,1.230115,      -0.821035,0.0648,1.118749,
+       -0.981504,0.0648,0.981504,      -0.911906,0.046875,0.911906,    -0.762816,0.046875,1.039419,
+       -0.762816,0.046875,1.039419,    -0.821035,0.0648,1.118749,      -0.981504,0.0648,0.981504,
+       -1.118749,0.0648,0.821035,      -1.039419,0.046875,0.762816,    -0.911906,0.046875,0.911906,
+       -0.911906,0.046875,0.911906,    -0.981504,0.0648,0.981504,      -1.118749,0.0648,0.821035,
+       -1.230115,0.0648,0.639996,      -1.142888,0.046875,0.594614,    -1.039419,0.046875,0.762816,
+       -1.039419,0.046875,0.762816,    -1.118749,0.0648,0.821035,      -1.230115,0.0648,0.639996,
+       -1.312948,0.0648,0.441041,      -1.219848,0.046875,0.409767,    -1.142888,0.046875,0.594614,
+       -1.142888,0.046875,0.594614,    -1.230115,0.0648,0.639996,      -1.312948,0.0648,0.441041,
+       -1.364595,0.0648,0.226824,      -1.267832,0.046875,0.21074,     -1.219848,0.046875,0.409767,
+       -1.219848,0.046875,0.409767,    -1.312948,0.0648,0.441041,      -1.364595,0.0648,0.226824,
+       -1.3824,0.0648,0,       -1.284375,0.046875,0,   -1.267832,0.046875,0.21074,
+       -1.267832,0.046875,0.21074,     -1.364595,0.0648,0.226824,      -1.3824,0.0648,0,
+       -0.237149,0.084525,1.426709,    -0.226824,0.0648,1.364595,      0,0.0648,1.3824,
+       0,0.0648,1.3824,        0,0.084525,1.445325,    -0.237149,0.084525,1.426709,
+       -0.461116,0.084525,1.372712,    -0.441041,0.0648,1.312948,      -0.226824,0.0648,1.364595,
+       -0.226824,0.0648,1.364595,      -0.237149,0.084525,1.426709,    -0.461116,0.084525,1.372712,
+       -0.669128,0.084525,1.286108,    -0.639996,0.0648,1.230115,      -0.441041,0.0648,1.312948,
+       -0.441041,0.0648,1.312948,      -0.461116,0.084525,1.372712,    -0.669128,0.084525,1.286108,
+       -0.858407,0.084525,1.169673,    -0.821035,0.0648,1.118749,      -0.639996,0.0648,1.230115,
+       -0.639996,0.0648,1.230115,      -0.669128,0.084525,1.286108,    -0.858407,0.084525,1.169673,
+       -1.026181,0.084525,1.026181,    -0.981504,0.0648,0.981504,      -0.821035,0.0648,1.118749,
+       -0.821035,0.0648,1.118749,      -0.858407,0.084525,1.169673,    -1.026181,0.084525,1.026181,
+       -1.169673,0.084525,0.858407,    -1.118749,0.0648,0.821035,      -0.981504,0.0648,0.981504,
+       -0.981504,0.0648,0.981504,      -1.026181,0.084525,1.026181,    -1.169673,0.084525,0.858407,
+       -1.286108,0.084525,0.669128,    -1.230115,0.0648,0.639996,      -1.118749,0.0648,0.821035,
+       -1.118749,0.0648,0.821035,      -1.169673,0.084525,0.858407,    -1.286108,0.084525,0.669128,
+       -1.372712,0.084525,0.461116,    -1.312948,0.0648,0.441041,      -1.230115,0.0648,0.639996,
+       -1.230115,0.0648,0.639996,      -1.286108,0.084525,0.669128,    -1.372712,0.084525,0.461116,
+       -1.426709,0.084525,0.237149,    -1.364595,0.0648,0.226824,      -1.312948,0.0648,0.441041,
+       -1.312948,0.0648,0.441041,      -1.372712,0.084525,0.461116,    -1.426709,0.084525,0.237149,
+       -1.445325,0.084525,0,   -1.3824,0.0648,0,       -1.364595,0.0648,0.226824,
+       -1.364595,0.0648,0.226824,      -1.426709,0.084525,0.237149,    -1.445325,0.084525,0,
+       -0.24297,0.1056,1.461727,       -0.237149,0.084525,1.426709,    0,0.084525,1.445325,
+       0,0.084525,1.445325,    0,0.1056,1.4808,        -0.24297,0.1056,1.461727,
+       -0.472434,0.1056,1.406405,      -0.461116,0.084525,1.372712,    -0.237149,0.084525,1.426709,
+       -0.237149,0.084525,1.426709,    -0.24297,0.1056,1.461727,       -0.472434,0.1056,1.406405,
+       -0.685551,0.1056,1.317675,      -0.669128,0.084525,1.286108,    -0.461116,0.084525,1.372712,
+       -0.461116,0.084525,1.372712,    -0.472434,0.1056,1.406405,      -0.685551,0.1056,1.317675,
+       -0.879477,0.1056,1.198382,      -0.858407,0.084525,1.169673,    -0.669128,0.084525,1.286108,
+       -0.669128,0.084525,1.286108,    -0.685551,0.1056,1.317675,      -0.879477,0.1056,1.198382,
+       -1.051368,0.1056,1.051368,      -1.026181,0.084525,1.026181,    -0.858407,0.084525,1.169673,
+       -0.858407,0.084525,1.169673,    -0.879477,0.1056,1.198382,      -1.051368,0.1056,1.051368,
+       -1.198382,0.1056,0.879477,      -1.169673,0.084525,0.858407,    -1.026181,0.084525,1.026181,
+       -1.026181,0.084525,1.026181,    -1.051368,0.1056,1.051368,      -1.198382,0.1056,0.879477,
+       -1.317675,0.1056,0.685551,      -1.286108,0.084525,0.669128,    -1.169673,0.084525,0.858407,
+       -1.169673,0.084525,0.858407,    -1.198382,0.1056,0.879477,      -1.317675,0.1056,0.685551,
+       -1.406405,0.1056,0.472434,      -1.372712,0.084525,0.461116,    -1.286108,0.084525,0.669128,
+       -1.286108,0.084525,0.669128,    -1.317675,0.1056,0.685551,      -1.406405,0.1056,0.472434,
+       -1.461727,0.1056,0.24297,       -1.426709,0.084525,0.237149,    -1.372712,0.084525,0.461116,
+       -1.372712,0.084525,0.461116,    -1.406405,0.1056,0.472434,      -1.461727,0.1056,0.24297,
+       -1.4808,0.1056,0,       -1.445325,0.084525,0,   -1.426709,0.084525,0.237149,
+       -1.426709,0.084525,0.237149,    -1.461727,0.1056,0.24297,       -1.4808,0.1056,0,
+       -0.245542,0.127575,1.4772,      -0.24297,0.1056,1.461727,       0,0.1056,1.4808,
+       0,0.1056,1.4808,        0,0.127575,1.496475,    -0.245542,0.127575,1.4772,
+       -0.477435,0.127575,1.421292,    -0.472434,0.1056,1.406405,      -0.24297,0.1056,1.461727,
+       -0.24297,0.1056,1.461727,       -0.245542,0.127575,1.4772,      -0.477435,0.127575,1.421292,
+       -0.692808,0.127575,1.331623,    -0.685551,0.1056,1.317675,      -0.472434,0.1056,1.406405,
+       -0.472434,0.1056,1.406405,      -0.477435,0.127575,1.421292,    -0.692808,0.127575,1.331623,
+       -0.888786,0.127575,1.211067,    -0.879477,0.1056,1.198382,      -0.685551,0.1056,1.317675,
+       -0.685551,0.1056,1.317675,      -0.692808,0.127575,1.331623,    -0.888786,0.127575,1.211067,
+       -1.062497,0.127575,1.062497,    -1.051368,0.1056,1.051368,      -0.879477,0.1056,1.198382,
+       -0.879477,0.1056,1.198382,      -0.888786,0.127575,1.211067,    -1.062497,0.127575,1.062497,
+       -1.211067,0.127575,0.888786,    -1.198382,0.1056,0.879477,      -1.051368,0.1056,1.051368,
+       -1.051368,0.1056,1.051368,      -1.062497,0.127575,1.062497,    -1.211067,0.127575,0.888786,
+       -1.331623,0.127575,0.692808,    -1.317675,0.1056,0.685551,      -1.198382,0.1056,0.879477,
+       -1.198382,0.1056,0.879477,      -1.211067,0.127575,0.888786,    -1.331623,0.127575,0.692808,
+       -1.421292,0.127575,0.477435,    -1.406405,0.1056,0.472434,      -1.317675,0.1056,0.685551,
+       -1.317675,0.1056,0.685551,      -1.331623,0.127575,0.692808,    -1.421292,0.127575,0.477435,
+       -1.4772,0.127575,0.245542,      -1.461727,0.1056,0.24297,       -1.406405,0.1056,0.472434,
+       -1.406405,0.1056,0.472434,      -1.421292,0.127575,0.477435,    -1.4772,0.127575,0.245542,
+       -1.496475,0.127575,0,   -1.4808,0.1056,0,       -1.461727,0.1056,0.24297,
+       -1.461727,0.1056,0.24297,       -1.4772,0.127575,0.245542,      -1.496475,0.127575,0,
+       -0.24612,0.15,1.48068,  -0.245542,0.127575,1.4772,      0,0.127575,1.496475,
+       0,0.127575,1.496475,    0,0.15,1.5,     -0.24612,0.15,1.48068,
+       -0.47856,0.15,1.42464,  -0.477435,0.127575,1.421292,    -0.245542,0.127575,1.4772,
+       -0.245542,0.127575,1.4772,      -0.24612,0.15,1.48068,  -0.47856,0.15,1.42464,
+       -0.69444,0.15,1.33476,  -0.692808,0.127575,1.331623,    -0.477435,0.127575,1.421292,
+       -0.477435,0.127575,1.421292,    -0.47856,0.15,1.42464,  -0.69444,0.15,1.33476,
+       -0.89088,0.15,1.21392,  -0.888786,0.127575,1.211067,    -0.692808,0.127575,1.331623,
+       -0.692808,0.127575,1.331623,    -0.69444,0.15,1.33476,  -0.89088,0.15,1.21392,
+       -1.065,0.15,1.065,      -1.062497,0.127575,1.062497,    -0.888786,0.127575,1.211067,
+       -0.888786,0.127575,1.211067,    -0.89088,0.15,1.21392,  -1.065,0.15,1.065,
+       -1.21392,0.15,0.89088,  -1.211067,0.127575,0.888786,    -1.062497,0.127575,1.062497,
+       -1.062497,0.127575,1.062497,    -1.065,0.15,1.065,      -1.21392,0.15,0.89088,
+       -1.33476,0.15,0.69444,  -1.331623,0.127575,0.692808,    -1.211067,0.127575,0.888786,
+       -1.211067,0.127575,0.888786,    -1.21392,0.15,0.89088,  -1.33476,0.15,0.69444,
+       -1.42464,0.15,0.47856,  -1.421292,0.127575,0.477435,    -1.331623,0.127575,0.692808,
+       -1.331623,0.127575,0.692808,    -1.33476,0.15,0.69444,  -1.42464,0.15,0.47856,
+       -1.48068,0.15,0.24612,  -1.4772,0.127575,0.245542,      -1.421292,0.127575,0.477435,
+       -1.421292,0.127575,0.477435,    -1.42464,0.15,0.47856,  -1.48068,0.15,0.24612,
+       -1.5,0.15,0,    -1.496475,0.127575,0,   -1.4772,0.127575,0.245542,
+       -1.4772,0.127575,0.245542,      -1.48068,0.15,0.24612,  -1.5,0.15,0,
+       0,0,0,  -0.388275,0.002175,0,   -0.383274,0.002175,-0.063708,
+       0,0,0,  -0.383274,0.002175,-0.063708,   -0.368768,0.002175,-0.123875,
+       0,0,0,  -0.368768,0.002175,-0.123875,   -0.345503,0.002175,-0.179756,
+       0,0,0,  -0.345503,0.002175,-0.179756,   -0.314223,0.002175,-0.230604,
+       0,0,0,  -0.314223,0.002175,-0.230604,   -0.275675,0.002175,-0.275675,
+       0,0,0,  -0.275675,0.002175,-0.275675,   -0.230604,0.002175,-0.314223,
+       0,0,0,  -0.230604,0.002175,-0.314223,   -0.179756,0.002175,-0.345503,
+       0,0,0,  -0.179756,0.002175,-0.345503,   -0.123875,0.002175,-0.368768,
+       0,0,0,  -0.123875,0.002175,-0.368768,   -0.063708,0.002175,-0.383274,
+       0,0,0,  -0.063708,0.002175,-0.383274,   0,0.002175,-0.388275,
+       -0.694143,0.0084,-0.115381,     -0.383274,0.002175,-0.063708,   -0.388275,0.002175,0,
+       -0.388275,0.002175,0,   -0.7032,0.0084,0,       -0.694143,0.0084,-0.115381,
+       -0.667871,0.0084,-0.224349,     -0.368768,0.002175,-0.123875,   -0.383274,0.002175,-0.063708,
+       -0.383274,0.002175,-0.063708,   -0.694143,0.0084,-0.115381,     -0.667871,0.0084,-0.224349,
+       -0.625735,0.0084,-0.325553,     -0.345503,0.002175,-0.179756,   -0.368768,0.002175,-0.123875,
+       -0.368768,0.002175,-0.123875,   -0.667871,0.0084,-0.224349,     -0.625735,0.0084,-0.325553,
+       -0.569086,0.0084,-0.417645,     -0.314223,0.002175,-0.230604,   -0.345503,0.002175,-0.179756,
+       -0.345503,0.002175,-0.179756,   -0.625735,0.0084,-0.325553,     -0.569086,0.0084,-0.417645,
+       -0.499272,0.0084,-0.499272,     -0.275675,0.002175,-0.275675,   -0.314223,0.002175,-0.230604,
+       -0.314223,0.002175,-0.230604,   -0.569086,0.0084,-0.417645,     -0.499272,0.0084,-0.499272,
+       -0.417645,0.0084,-0.569086,     -0.230604,0.002175,-0.314223,   -0.275675,0.002175,-0.275675,
+       -0.275675,0.002175,-0.275675,   -0.499272,0.0084,-0.499272,     -0.417645,0.0084,-0.569086,
+       -0.325553,0.0084,-0.625735,     -0.179756,0.002175,-0.345503,   -0.230604,0.002175,-0.314223,
+       -0.230604,0.002175,-0.314223,   -0.417645,0.0084,-0.569086,     -0.325553,0.0084,-0.625735,
+       -0.224349,0.0084,-0.667871,     -0.123875,0.002175,-0.368768,   -0.179756,0.002175,-0.345503,
+       -0.179756,0.002175,-0.345503,   -0.325553,0.0084,-0.625735,     -0.224349,0.0084,-0.667871,
+       -0.115381,0.0084,-0.694143,     -0.063708,0.002175,-0.383274,   -0.123875,0.002175,-0.368768,
+       -0.123875,0.002175,-0.368768,   -0.224349,0.0084,-0.667871,     -0.115381,0.0084,-0.694143,
+       0,0.0084,-0.7032,       0,0.002175,-0.388275,   -0.063708,0.002175,-0.383274,
+       -0.063708,0.002175,-0.383274,   -0.115381,0.0084,-0.694143,     0,0.0084,-0.7032,
+       -0.940158,0.018225,-0.156274,   -0.694143,0.0084,-0.115381,     -0.7032,0.0084,0,
+       -0.7032,0.0084,0,       -0.952425,0.018225,0,   -0.940158,0.018225,-0.156274,
+       -0.904575,0.018225,-0.303862,   -0.667871,0.0084,-0.224349,     -0.694143,0.0084,-0.115381,
+       -0.694143,0.0084,-0.115381,     -0.940158,0.018225,-0.156274,   -0.904575,0.018225,-0.303862,
+       -0.847506,0.018225,-0.440935,   -0.625735,0.0084,-0.325553,     -0.667871,0.0084,-0.224349,
+       -0.667871,0.0084,-0.224349,     -0.904575,0.018225,-0.303862,   -0.847506,0.018225,-0.440935,
+       -0.770779,0.018225,-0.565664,   -0.569086,0.0084,-0.417645,     -0.625735,0.0084,-0.325553,
+       -0.625735,0.0084,-0.325553,     -0.847506,0.018225,-0.440935,   -0.770779,0.018225,-0.565664,
+       -0.676222,0.018225,-0.676222,   -0.499272,0.0084,-0.499272,     -0.569086,0.0084,-0.417645,
+       -0.569086,0.0084,-0.417645,     -0.770779,0.018225,-0.565664,   -0.676222,0.018225,-0.676222,
+       -0.565664,0.018225,-0.770779,   -0.417645,0.0084,-0.569086,     -0.499272,0.0084,-0.499272,
+       -0.499272,0.0084,-0.499272,     -0.676222,0.018225,-0.676222,   -0.565664,0.018225,-0.770779,
+       -0.440935,0.018225,-0.847506,   -0.325553,0.0084,-0.625735,     -0.417645,0.0084,-0.569086,
+       -0.417645,0.0084,-0.569086,     -0.565664,0.018225,-0.770779,   -0.440935,0.018225,-0.847506,
+       -0.303862,0.018225,-0.904575,   -0.224349,0.0084,-0.667871,     -0.325553,0.0084,-0.625735,
+       -0.325553,0.0084,-0.625735,     -0.440935,0.018225,-0.847506,   -0.303862,0.018225,-0.904575,
+       -0.156274,0.018225,-0.940158,   -0.115381,0.0084,-0.694143,     -0.224349,0.0084,-0.667871,
+       -0.224349,0.0084,-0.667871,     -0.303862,0.018225,-0.904575,   -0.156274,0.018225,-0.940158,
+       0,0.018225,-0.952425,   0,0.0084,-0.7032,       -0.115381,0.0084,-0.694143,
+       -0.115381,0.0084,-0.694143,     -0.156274,0.018225,-0.940158,   0,0.018225,-0.952425,
+       -1.12887,0.0312,-0.187642,      -0.940158,0.018225,-0.156274,   -0.952425,0.018225,0,
+       -0.952425,0.018225,0,   -1.1436,0.0312,0,       -1.12887,0.0312,-0.187642,
+       -1.086146,0.0312,-0.364854,     -0.904575,0.018225,-0.303862,   -0.940158,0.018225,-0.156274,
+       -0.940158,0.018225,-0.156274,   -1.12887,0.0312,-0.187642,      -1.086146,0.0312,-0.364854,
+       -1.017621,0.0312,-0.529441,     -0.847506,0.018225,-0.440935,   -0.904575,0.018225,-0.303862,
+       -0.904575,0.018225,-0.303862,   -1.086146,0.0312,-0.364854,     -1.017621,0.0312,-0.529441,
+       -0.925493,0.0312,-0.679207,     -0.770779,0.018225,-0.565664,   -0.847506,0.018225,-0.440935,
+       -0.847506,0.018225,-0.440935,   -1.017621,0.0312,-0.529441,     -0.925493,0.0312,-0.679207,
+       -0.811956,0.0312,-0.811956,     -0.676222,0.018225,-0.676222,   -0.770779,0.018225,-0.565664,
+       -0.770779,0.018225,-0.565664,   -0.925493,0.0312,-0.679207,     -0.811956,0.0312,-0.811956,
+       -0.679207,0.0312,-0.925493,     -0.565664,0.018225,-0.770779,   -0.676222,0.018225,-0.676222,
+       -0.676222,0.018225,-0.676222,   -0.811956,0.0312,-0.811956,     -0.679207,0.0312,-0.925493,
+       -0.529441,0.0312,-1.017621,     -0.440935,0.018225,-0.847506,   -0.565664,0.018225,-0.770779,
+       -0.565664,0.018225,-0.770779,   -0.679207,0.0312,-0.925493,     -0.529441,0.0312,-1.017621,
+       -0.364854,0.0312,-1.086146,     -0.303862,0.018225,-0.904575,   -0.440935,0.018225,-0.847506,
+       -0.440935,0.018225,-0.847506,   -0.529441,0.0312,-1.017621,     -0.364854,0.0312,-1.086146,
+       -0.187642,0.0312,-1.12887,      -0.156274,0.018225,-0.940158,   -0.303862,0.018225,-0.904575,
+       -0.303862,0.018225,-0.904575,   -0.364854,0.0312,-1.086146,     -0.187642,0.0312,-1.12887,
+       0,0.0312,-1.1436,       0,0.018225,-0.952425,   -0.156274,0.018225,-0.940158,
+       -0.156274,0.018225,-0.940158,   -0.187642,0.0312,-1.12887,      0,0.0312,-1.1436,
+       -1.267832,0.046875,-0.21074,    -1.12887,0.0312,-0.187642,      -1.1436,0.0312,0,
+       -1.1436,0.0312,0,       -1.284375,0.046875,0,   -1.267832,0.046875,-0.21074,
+       -1.219848,0.046875,-0.409767,   -1.086146,0.0312,-0.364854,     -1.12887,0.0312,-0.187642,
+       -1.12887,0.0312,-0.187642,      -1.267832,0.046875,-0.21074,    -1.219848,0.046875,-0.409767,
+       -1.142888,0.046875,-0.594614,   -1.017621,0.0312,-0.529441,     -1.086146,0.0312,-0.364854,
+       -1.086146,0.0312,-0.364854,     -1.219848,0.046875,-0.409767,   -1.142888,0.046875,-0.594614,
+       -1.039419,0.046875,-0.762816,   -0.925493,0.0312,-0.679207,     -1.017621,0.0312,-0.529441,
+       -1.017621,0.0312,-0.529441,     -1.142888,0.046875,-0.594614,   -1.039419,0.046875,-0.762816,
+       -0.911906,0.046875,-0.911906,   -0.811956,0.0312,-0.811956,     -0.925493,0.0312,-0.679207,
+       -0.925493,0.0312,-0.679207,     -1.039419,0.046875,-0.762816,   -0.911906,0.046875,-0.911906,
+       -0.762816,0.046875,-1.039419,   -0.679207,0.0312,-0.925493,     -0.811956,0.0312,-0.811956,
+       -0.811956,0.0312,-0.811956,     -0.911906,0.046875,-0.911906,   -0.762816,0.046875,-1.039419,
+       -0.594614,0.046875,-1.142888,   -0.529441,0.0312,-1.017621,     -0.679207,0.0312,-0.925493,
+       -0.679207,0.0312,-0.925493,     -0.762816,0.046875,-1.039419,   -0.594614,0.046875,-1.142888,
+       -0.409767,0.046875,-1.219848,   -0.364854,0.0312,-1.086146,     -0.529441,0.0312,-1.017621,
+       -0.529441,0.0312,-1.017621,     -0.594614,0.046875,-1.142888,   -0.409767,0.046875,-1.219848,
+       -0.21074,0.046875,-1.267832,    -0.187642,0.0312,-1.12887,      -0.364854,0.0312,-1.086146,
+       -0.364854,0.0312,-1.086146,     -0.409767,0.046875,-1.219848,   -0.21074,0.046875,-1.267832,
+       0,0.046875,-1.284375,   0,0.0312,-1.1436,       -0.187642,0.0312,-1.12887,
+       -0.187642,0.0312,-1.12887,      -0.21074,0.046875,-1.267832,    0,0.046875,-1.284375,
+       -1.364595,0.0648,-0.226824,     -1.267832,0.046875,-0.21074,    -1.284375,0.046875,0,
+       -1.284375,0.046875,0,   -1.3824,0.0648,0,       -1.364595,0.0648,-0.226824,
+       -1.312948,0.0648,-0.441041,     -1.219848,0.046875,-0.409767,   -1.267832,0.046875,-0.21074,
+       -1.267832,0.046875,-0.21074,    -1.364595,0.0648,-0.226824,     -1.312948,0.0648,-0.441041,
+       -1.230115,0.0648,-0.639996,     -1.142888,0.046875,-0.594614,   -1.219848,0.046875,-0.409767,
+       -1.219848,0.046875,-0.409767,   -1.312948,0.0648,-0.441041,     -1.230115,0.0648,-0.639996,
+       -1.118749,0.0648,-0.821035,     -1.039419,0.046875,-0.762816,   -1.142888,0.046875,-0.594614,
+       -1.142888,0.046875,-0.594614,   -1.230115,0.0648,-0.639996,     -1.118749,0.0648,-0.821035,
+       -0.981504,0.0648,-0.981504,     -0.911906,0.046875,-0.911906,   -1.039419,0.046875,-0.762816,
+       -1.039419,0.046875,-0.762816,   -1.118749,0.0648,-0.821035,     -0.981504,0.0648,-0.981504,
+       -0.821035,0.0648,-1.118749,     -0.762816,0.046875,-1.039419,   -0.911906,0.046875,-0.911906,
+       -0.911906,0.046875,-0.911906,   -0.981504,0.0648,-0.981504,     -0.821035,0.0648,-1.118749,
+       -0.639996,0.0648,-1.230115,     -0.594614,0.046875,-1.142888,   -0.762816,0.046875,-1.039419,
+       -0.762816,0.046875,-1.039419,   -0.821035,0.0648,-1.118749,     -0.639996,0.0648,-1.230115,
+       -0.441041,0.0648,-1.312948,     -0.409767,0.046875,-1.219848,   -0.594614,0.046875,-1.142888,
+       -0.594614,0.046875,-1.142888,   -0.639996,0.0648,-1.230115,     -0.441041,0.0648,-1.312948,
+       -0.226824,0.0648,-1.364595,     -0.21074,0.046875,-1.267832,    -0.409767,0.046875,-1.219848,
+       -0.409767,0.046875,-1.219848,   -0.441041,0.0648,-1.312948,     -0.226824,0.0648,-1.364595,
+       0,0.0648,-1.3824,       0,0.046875,-1.284375,   -0.21074,0.046875,-1.267832,
+       -0.21074,0.046875,-1.267832,    -0.226824,0.0648,-1.364595,     0,0.0648,-1.3824,
+       -1.426709,0.084525,-0.237149,   -1.364595,0.0648,-0.226824,     -1.3824,0.0648,0,
+       -1.3824,0.0648,0,       -1.445325,0.084525,0,   -1.426709,0.084525,-0.237149,
+       -1.372712,0.084525,-0.461116,   -1.312948,0.0648,-0.441041,     -1.364595,0.0648,-0.226824,
+       -1.364595,0.0648,-0.226824,     -1.426709,0.084525,-0.237149,   -1.372712,0.084525,-0.461116,
+       -1.286108,0.084525,-0.669128,   -1.230115,0.0648,-0.639996,     -1.312948,0.0648,-0.441041,
+       -1.312948,0.0648,-0.441041,     -1.372712,0.084525,-0.461116,   -1.286108,0.084525,-0.669128,
+       -1.169673,0.084525,-0.858407,   -1.118749,0.0648,-0.821035,     -1.230115,0.0648,-0.639996,
+       -1.230115,0.0648,-0.639996,     -1.286108,0.084525,-0.669128,   -1.169673,0.084525,-0.858407,
+       -1.026181,0.084525,-1.026181,   -0.981504,0.0648,-0.981504,     -1.118749,0.0648,-0.821035,
+       -1.118749,0.0648,-0.821035,     -1.169673,0.084525,-0.858407,   -1.026181,0.084525,-1.026181,
+       -0.858407,0.084525,-1.169673,   -0.821035,0.0648,-1.118749,     -0.981504,0.0648,-0.981504,
+       -0.981504,0.0648,-0.981504,     -1.026181,0.084525,-1.026181,   -0.858407,0.084525,-1.169673,
+       -0.669128,0.084525,-1.286108,   -0.639996,0.0648,-1.230115,     -0.821035,0.0648,-1.118749,
+       -0.821035,0.0648,-1.118749,     -0.858407,0.084525,-1.169673,   -0.669128,0.084525,-1.286108,
+       -0.461116,0.084525,-1.372712,   -0.441041,0.0648,-1.312948,     -0.639996,0.0648,-1.230115,
+       -0.639996,0.0648,-1.230115,     -0.669128,0.084525,-1.286108,   -0.461116,0.084525,-1.372712,
+       -0.237149,0.084525,-1.426709,   -0.226824,0.0648,-1.364595,     -0.441041,0.0648,-1.312948,
+       -0.441041,0.0648,-1.312948,     -0.461116,0.084525,-1.372712,   -0.237149,0.084525,-1.426709,
+       0,0.084525,-1.445325,   0,0.0648,-1.3824,       -0.226824,0.0648,-1.364595,
+       -0.226824,0.0648,-1.364595,     -0.237149,0.084525,-1.426709,   0,0.084525,-1.445325,
+       -1.461727,0.1056,-0.24297,      -1.426709,0.084525,-0.237149,   -1.445325,0.084525,0,
+       -1.445325,0.084525,0,   -1.4808,0.1056,0,       -1.461727,0.1056,-0.24297,
+       -1.406405,0.1056,-0.472434,     -1.372712,0.084525,-0.461116,   -1.426709,0.084525,-0.237149,
+       -1.426709,0.084525,-0.237149,   -1.461727,0.1056,-0.24297,      -1.406405,0.1056,-0.472434,
+       -1.317675,0.1056,-0.685551,     -1.286108,0.084525,-0.669128,   -1.372712,0.084525,-0.461116,
+       -1.372712,0.084525,-0.461116,   -1.406405,0.1056,-0.472434,     -1.317675,0.1056,-0.685551,
+       -1.198382,0.1056,-0.879477,     -1.169673,0.084525,-0.858407,   -1.286108,0.084525,-0.669128,
+       -1.286108,0.084525,-0.669128,   -1.317675,0.1056,-0.685551,     -1.198382,0.1056,-0.879477,
+       -1.051368,0.1056,-1.051368,     -1.026181,0.084525,-1.026181,   -1.169673,0.084525,-0.858407,
+       -1.169673,0.084525,-0.858407,   -1.198382,0.1056,-0.879477,     -1.051368,0.1056,-1.051368,
+       -0.879477,0.1056,-1.198382,     -0.858407,0.084525,-1.169673,   -1.026181,0.084525,-1.026181,
+       -1.026181,0.084525,-1.026181,   -1.051368,0.1056,-1.051368,     -0.879477,0.1056,-1.198382,
+       -0.685551,0.1056,-1.317675,     -0.669128,0.084525,-1.286108,   -0.858407,0.084525,-1.169673,
+       -0.858407,0.084525,-1.169673,   -0.879477,0.1056,-1.198382,     -0.685551,0.1056,-1.317675,
+       -0.472434,0.1056,-1.406405,     -0.461116,0.084525,-1.372712,   -0.669128,0.084525,-1.286108,
+       -0.669128,0.084525,-1.286108,   -0.685551,0.1056,-1.317675,     -0.472434,0.1056,-1.406405,
+       -0.24297,0.1056,-1.461727,      -0.237149,0.084525,-1.426709,   -0.461116,0.084525,-1.372712,
+       -0.461116,0.084525,-1.372712,   -0.472434,0.1056,-1.406405,     -0.24297,0.1056,-1.461727,
+       0,0.1056,-1.4808,       0,0.084525,-1.445325,   -0.237149,0.084525,-1.426709,
+       -0.237149,0.084525,-1.426709,   -0.24297,0.1056,-1.461727,      0,0.1056,-1.4808,
+       -1.4772,0.127575,-0.245542,     -1.461727,0.1056,-0.24297,      -1.4808,0.1056,0,
+       -1.4808,0.1056,0,       -1.496475,0.127575,0,   -1.4772,0.127575,-0.245542,
+       -1.421292,0.127575,-0.477435,   -1.406405,0.1056,-0.472434,     -1.461727,0.1056,-0.24297,
+       -1.461727,0.1056,-0.24297,      -1.4772,0.127575,-0.245542,     -1.421292,0.127575,-0.477435,
+       -1.331623,0.127575,-0.692808,   -1.317675,0.1056,-0.685551,     -1.406405,0.1056,-0.472434,
+       -1.406405,0.1056,-0.472434,     -1.421292,0.127575,-0.477435,   -1.331623,0.127575,-0.692808,
+       -1.211067,0.127575,-0.888786,   -1.198382,0.1056,-0.879477,     -1.317675,0.1056,-0.685551,
+       -1.317675,0.1056,-0.685551,     -1.331623,0.127575,-0.692808,   -1.211067,0.127575,-0.888786,
+       -1.062497,0.127575,-1.062497,   -1.051368,0.1056,-1.051368,     -1.198382,0.1056,-0.879477,
+       -1.198382,0.1056,-0.879477,     -1.211067,0.127575,-0.888786,   -1.062497,0.127575,-1.062497,
+       -0.888786,0.127575,-1.211067,   -0.879477,0.1056,-1.198382,     -1.051368,0.1056,-1.051368,
+       -1.051368,0.1056,-1.051368,     -1.062497,0.127575,-1.062497,   -0.888786,0.127575,-1.211067,
+       -0.692808,0.127575,-1.331623,   -0.685551,0.1056,-1.317675,     -0.879477,0.1056,-1.198382,
+       -0.879477,0.1056,-1.198382,     -0.888786,0.127575,-1.211067,   -0.692808,0.127575,-1.331623,
+       -0.477435,0.127575,-1.421292,   -0.472434,0.1056,-1.406405,     -0.685551,0.1056,-1.317675,
+       -0.685551,0.1056,-1.317675,     -0.692808,0.127575,-1.331623,   -0.477435,0.127575,-1.421292,
+       -0.245542,0.127575,-1.4772,     -0.24297,0.1056,-1.461727,      -0.472434,0.1056,-1.406405,
+       -0.472434,0.1056,-1.406405,     -0.477435,0.127575,-1.421292,   -0.245542,0.127575,-1.4772,
+       0,0.127575,-1.496475,   0,0.1056,-1.4808,       -0.24297,0.1056,-1.461727,
+       -0.24297,0.1056,-1.461727,      -0.245542,0.127575,-1.4772,     0,0.127575,-1.496475,
+       -1.48068,0.15,-0.24612, -1.4772,0.127575,-0.245542,     -1.496475,0.127575,0,
+       -1.496475,0.127575,0,   -1.5,0.15,0,    -1.48068,0.15,-0.24612,
+       -1.42464,0.15,-0.47856, -1.421292,0.127575,-0.477435,   -1.4772,0.127575,-0.245542,
+       -1.4772,0.127575,-0.245542,     -1.48068,0.15,-0.24612, -1.42464,0.15,-0.47856,
+       -1.33476,0.15,-0.69444, -1.331623,0.127575,-0.692808,   -1.421292,0.127575,-0.477435,
+       -1.421292,0.127575,-0.477435,   -1.42464,0.15,-0.47856, -1.33476,0.15,-0.69444,
+       -1.21392,0.15,-0.89088, -1.211067,0.127575,-0.888786,   -1.331623,0.127575,-0.692808,
+       -1.331623,0.127575,-0.692808,   -1.33476,0.15,-0.69444, -1.21392,0.15,-0.89088,
+       -1.065,0.15,-1.065,     -1.062497,0.127575,-1.062497,   -1.211067,0.127575,-0.888786,
+       -1.211067,0.127575,-0.888786,   -1.21392,0.15,-0.89088, -1.065,0.15,-1.065,
+       -0.89088,0.15,-1.21392, -0.888786,0.127575,-1.211067,   -1.062497,0.127575,-1.062497,
+       -1.062497,0.127575,-1.062497,   -1.065,0.15,-1.065,     -0.89088,0.15,-1.21392,
+       -0.69444,0.15,-1.33476, -0.692808,0.127575,-1.331623,   -0.888786,0.127575,-1.211067,
+       -0.888786,0.127575,-1.211067,   -0.89088,0.15,-1.21392, -0.69444,0.15,-1.33476,
+       -0.47856,0.15,-1.42464, -0.477435,0.127575,-1.421292,   -0.692808,0.127575,-1.331623,
+       -0.692808,0.127575,-1.331623,   -0.69444,0.15,-1.33476, -0.47856,0.15,-1.42464,
+       -0.24612,0.15,-1.48068, -0.245542,0.127575,-1.4772,     -0.477435,0.127575,-1.421292,
+       -0.477435,0.127575,-1.421292,   -0.47856,0.15,-1.42464, -0.24612,0.15,-1.48068,
+       0,0.15,-1.5,    0,0.127575,-1.496475,   -0.245542,0.127575,-1.4772,
+       -0.245542,0.127575,-1.4772,     -0.24612,0.15,-1.48068, 0,0.15,-1.5,
+       0,0,0,  0,0.002175,-0.388275,   0.063708,0.002175,-0.383274,
+       0,0,0,  0.063708,0.002175,-0.383274,    0.123875,0.002175,-0.368768,
+       0,0,0,  0.123875,0.002175,-0.368768,    0.179756,0.002175,-0.345503,
+       0,0,0,  0.179756,0.002175,-0.345503,    0.230604,0.002175,-0.314223,
+       0,0,0,  0.230604,0.002175,-0.314223,    0.275675,0.002175,-0.275675,
+       0,0,0,  0.275675,0.002175,-0.275675,    0.314223,0.002175,-0.230604,
+       0,0,0,  0.314223,0.002175,-0.230604,    0.345503,0.002175,-0.179756,
+       0,0,0,  0.345503,0.002175,-0.179756,    0.368768,0.002175,-0.123875,
+       0,0,0,  0.368768,0.002175,-0.123875,    0.383274,0.002175,-0.063708,
+       0,0,0,  0.383274,0.002175,-0.063708,    0.388275,0.002175,0,
+       0.115381,0.0084,-0.694143,      0.063708,0.002175,-0.383274,    0,0.002175,-0.388275,
+       0,0.002175,-0.388275,   0,0.0084,-0.7032,       0.115381,0.0084,-0.694143,
+       0.224349,0.0084,-0.667871,      0.123875,0.002175,-0.368768,    0.063708,0.002175,-0.383274,
+       0.063708,0.002175,-0.383274,    0.115381,0.0084,-0.694143,      0.224349,0.0084,-0.667871,
+       0.325553,0.0084,-0.625735,      0.179756,0.002175,-0.345503,    0.123875,0.002175,-0.368768,
+       0.123875,0.002175,-0.368768,    0.224349,0.0084,-0.667871,      0.325553,0.0084,-0.625735,
+       0.417645,0.0084,-0.569086,      0.230604,0.002175,-0.314223,    0.179756,0.002175,-0.345503,
+       0.179756,0.002175,-0.345503,    0.325553,0.0084,-0.625735,      0.417645,0.0084,-0.569086,
+       0.499272,0.0084,-0.499272,      0.275675,0.002175,-0.275675,    0.230604,0.002175,-0.314223,
+       0.230604,0.002175,-0.314223,    0.417645,0.0084,-0.569086,      0.499272,0.0084,-0.499272,
+       0.569086,0.0084,-0.417645,      0.314223,0.002175,-0.230604,    0.275675,0.002175,-0.275675,
+       0.275675,0.002175,-0.275675,    0.499272,0.0084,-0.499272,      0.569086,0.0084,-0.417645,
+       0.625735,0.0084,-0.325553,      0.345503,0.002175,-0.179756,    0.314223,0.002175,-0.230604,
+       0.314223,0.002175,-0.230604,    0.569086,0.0084,-0.417645,      0.625735,0.0084,-0.325553,
+       0.667871,0.0084,-0.224349,      0.368768,0.002175,-0.123875,    0.345503,0.002175,-0.179756,
+       0.345503,0.002175,-0.179756,    0.625735,0.0084,-0.325553,      0.667871,0.0084,-0.224349,
+       0.694143,0.0084,-0.115381,      0.383274,0.002175,-0.063708,    0.368768,0.002175,-0.123875,
+       0.368768,0.002175,-0.123875,    0.667871,0.0084,-0.224349,      0.694143,0.0084,-0.115381,
+       0.7032,0.0084,0,        0.388275,0.002175,0,    0.383274,0.002175,-0.063708,
+       0.383274,0.002175,-0.063708,    0.694143,0.0084,-0.115381,      0.7032,0.0084,0,
+       0.156274,0.018225,-0.940158,    0.115381,0.0084,-0.694143,      0,0.0084,-0.7032,
+       0,0.0084,-0.7032,       0,0.018225,-0.952425,   0.156274,0.018225,-0.940158,
+       0.303862,0.018225,-0.904575,    0.224349,0.0084,-0.667871,      0.115381,0.0084,-0.694143,
+       0.115381,0.0084,-0.694143,      0.156274,0.018225,-0.940158,    0.303862,0.018225,-0.904575,
+       0.440935,0.018225,-0.847506,    0.325553,0.0084,-0.625735,      0.224349,0.0084,-0.667871,
+       0.224349,0.0084,-0.667871,      0.303862,0.018225,-0.904575,    0.440935,0.018225,-0.847506,
+       0.565664,0.018225,-0.770779,    0.417645,0.0084,-0.569086,      0.325553,0.0084,-0.625735,
+       0.325553,0.0084,-0.625735,      0.440935,0.018225,-0.847506,    0.565664,0.018225,-0.770779,
+       0.676222,0.018225,-0.676222,    0.499272,0.0084,-0.499272,      0.417645,0.0084,-0.569086,
+       0.417645,0.0084,-0.569086,      0.565664,0.018225,-0.770779,    0.676222,0.018225,-0.676222,
+       0.770779,0.018225,-0.565664,    0.569086,0.0084,-0.417645,      0.499272,0.0084,-0.499272,
+       0.499272,0.0084,-0.499272,      0.676222,0.018225,-0.676222,    0.770779,0.018225,-0.565664,
+       0.847506,0.018225,-0.440935,    0.625735,0.0084,-0.325553,      0.569086,0.0084,-0.417645,
+       0.569086,0.0084,-0.417645,      0.770779,0.018225,-0.565664,    0.847506,0.018225,-0.440935,
+       0.904575,0.018225,-0.303862,    0.667871,0.0084,-0.224349,      0.625735,0.0084,-0.325553,
+       0.625735,0.0084,-0.325553,      0.847506,0.018225,-0.440935,    0.904575,0.018225,-0.303862,
+       0.940158,0.018225,-0.156274,    0.694143,0.0084,-0.115381,      0.667871,0.0084,-0.224349,
+       0.667871,0.0084,-0.224349,      0.904575,0.018225,-0.303862,    0.940158,0.018225,-0.156274,
+       0.952425,0.018225,0,    0.7032,0.0084,0,        0.694143,0.0084,-0.115381,
+       0.694143,0.0084,-0.115381,      0.940158,0.018225,-0.156274,    0.952425,0.018225,0,
+       0.187642,0.0312,-1.12887,       0.156274,0.018225,-0.940158,    0,0.018225,-0.952425,
+       0,0.018225,-0.952425,   0,0.0312,-1.1436,       0.187642,0.0312,-1.12887,
+       0.364854,0.0312,-1.086146,      0.303862,0.018225,-0.904575,    0.156274,0.018225,-0.940158,
+       0.156274,0.018225,-0.940158,    0.187642,0.0312,-1.12887,       0.364854,0.0312,-1.086146,
+       0.529441,0.0312,-1.017621,      0.440935,0.018225,-0.847506,    0.303862,0.018225,-0.904575,
+       0.303862,0.018225,-0.904575,    0.364854,0.0312,-1.086146,      0.529441,0.0312,-1.017621,
+       0.679207,0.0312,-0.925493,      0.565664,0.018225,-0.770779,    0.440935,0.018225,-0.847506,
+       0.440935,0.018225,-0.847506,    0.529441,0.0312,-1.017621,      0.679207,0.0312,-0.925493,
+       0.811956,0.0312,-0.811956,      0.676222,0.018225,-0.676222,    0.565664,0.018225,-0.770779,
+       0.565664,0.018225,-0.770779,    0.679207,0.0312,-0.925493,      0.811956,0.0312,-0.811956,
+       0.925493,0.0312,-0.679207,      0.770779,0.018225,-0.565664,    0.676222,0.018225,-0.676222,
+       0.676222,0.018225,-0.676222,    0.811956,0.0312,-0.811956,      0.925493,0.0312,-0.679207,
+       1.017621,0.0312,-0.529441,      0.847506,0.018225,-0.440935,    0.770779,0.018225,-0.565664,
+       0.770779,0.018225,-0.565664,    0.925493,0.0312,-0.679207,      1.017621,0.0312,-0.529441,
+       1.086146,0.0312,-0.364854,      0.904575,0.018225,-0.303862,    0.847506,0.018225,-0.440935,
+       0.847506,0.018225,-0.440935,    1.017621,0.0312,-0.529441,      1.086146,0.0312,-0.364854,
+       1.12887,0.0312,-0.187642,       0.940158,0.018225,-0.156274,    0.904575,0.018225,-0.303862,
+       0.904575,0.018225,-0.303862,    1.086146,0.0312,-0.364854,      1.12887,0.0312,-0.187642,
+       1.1436,0.0312,0,        0.952425,0.018225,0,    0.940158,0.018225,-0.156274,
+       0.940158,0.018225,-0.156274,    1.12887,0.0312,-0.187642,       1.1436,0.0312,0,
+       0.21074,0.046875,-1.267832,     0.187642,0.0312,-1.12887,       0,0.0312,-1.1436,
+       0,0.0312,-1.1436,       0,0.046875,-1.284375,   0.21074,0.046875,-1.267832,
+       0.409767,0.046875,-1.219848,    0.364854,0.0312,-1.086146,      0.187642,0.0312,-1.12887,
+       0.187642,0.0312,-1.12887,       0.21074,0.046875,-1.267832,     0.409767,0.046875,-1.219848,
+       0.594614,0.046875,-1.142888,    0.529441,0.0312,-1.017621,      0.364854,0.0312,-1.086146,
+       0.364854,0.0312,-1.086146,      0.409767,0.046875,-1.219848,    0.594614,0.046875,-1.142888,
+       0.762816,0.046875,-1.039419,    0.679207,0.0312,-0.925493,      0.529441,0.0312,-1.017621,
+       0.529441,0.0312,-1.017621,      0.594614,0.046875,-1.142888,    0.762816,0.046875,-1.039419,
+       0.911906,0.046875,-0.911906,    0.811956,0.0312,-0.811956,      0.679207,0.0312,-0.925493,
+       0.679207,0.0312,-0.925493,      0.762816,0.046875,-1.039419,    0.911906,0.046875,-0.911906,
+       1.039419,0.046875,-0.762816,    0.925493,0.0312,-0.679207,      0.811956,0.0312,-0.811956,
+       0.811956,0.0312,-0.811956,      0.911906,0.046875,-0.911906,    1.039419,0.046875,-0.762816,
+       1.142888,0.046875,-0.594614,    1.017621,0.0312,-0.529441,      0.925493,0.0312,-0.679207,
+       0.925493,0.0312,-0.679207,      1.039419,0.046875,-0.762816,    1.142888,0.046875,-0.594614,
+       1.219848,0.046875,-0.409767,    1.086146,0.0312,-0.364854,      1.017621,0.0312,-0.529441,
+       1.017621,0.0312,-0.529441,      1.142888,0.046875,-0.594614,    1.219848,0.046875,-0.409767,
+       1.267832,0.046875,-0.21074,     1.12887,0.0312,-0.187642,       1.086146,0.0312,-0.364854,
+       1.086146,0.0312,-0.364854,      1.219848,0.046875,-0.409767,    1.267832,0.046875,-0.21074,
+       1.284375,0.046875,0,    1.1436,0.0312,0,        1.12887,0.0312,-0.187642,
+       1.12887,0.0312,-0.187642,       1.267832,0.046875,-0.21074,     1.284375,0.046875,0,
+       0.226824,0.0648,-1.364595,      0.21074,0.046875,-1.267832,     0,0.046875,-1.284375,
+       0,0.046875,-1.284375,   0,0.0648,-1.3824,       0.226824,0.0648,-1.364595,
+       0.441041,0.0648,-1.312948,      0.409767,0.046875,-1.219848,    0.21074,0.046875,-1.267832,
+       0.21074,0.046875,-1.267832,     0.226824,0.0648,-1.364595,      0.441041,0.0648,-1.312948,
+       0.639996,0.0648,-1.230115,      0.594614,0.046875,-1.142888,    0.409767,0.046875,-1.219848,
+       0.409767,0.046875,-1.219848,    0.441041,0.0648,-1.312948,      0.639996,0.0648,-1.230115,
+       0.821035,0.0648,-1.118749,      0.762816,0.046875,-1.039419,    0.594614,0.046875,-1.142888,
+       0.594614,0.046875,-1.142888,    0.639996,0.0648,-1.230115,      0.821035,0.0648,-1.118749,
+       0.981504,0.0648,-0.981504,      0.911906,0.046875,-0.911906,    0.762816,0.046875,-1.039419,
+       0.762816,0.046875,-1.039419,    0.821035,0.0648,-1.118749,      0.981504,0.0648,-0.981504,
+       1.118749,0.0648,-0.821035,      1.039419,0.046875,-0.762816,    0.911906,0.046875,-0.911906,
+       0.911906,0.046875,-0.911906,    0.981504,0.0648,-0.981504,      1.118749,0.0648,-0.821035,
+       1.230115,0.0648,-0.639996,      1.142888,0.046875,-0.594614,    1.039419,0.046875,-0.762816,
+       1.039419,0.046875,-0.762816,    1.118749,0.0648,-0.821035,      1.230115,0.0648,-0.639996,
+       1.312948,0.0648,-0.441041,      1.219848,0.046875,-0.409767,    1.142888,0.046875,-0.594614,
+       1.142888,0.046875,-0.594614,    1.230115,0.0648,-0.639996,      1.312948,0.0648,-0.441041,
+       1.364595,0.0648,-0.226824,      1.267832,0.046875,-0.21074,     1.219848,0.046875,-0.409767,
+       1.219848,0.046875,-0.409767,    1.312948,0.0648,-0.441041,      1.364595,0.0648,-0.226824,
+       1.3824,0.0648,0,        1.284375,0.046875,0,    1.267832,0.046875,-0.21074,
+       1.267832,0.046875,-0.21074,     1.364595,0.0648,-0.226824,      1.3824,0.0648,0,
+       0.237149,0.084525,-1.426709,    0.226824,0.0648,-1.364595,      0,0.0648,-1.3824,
+       0,0.0648,-1.3824,       0,0.084525,-1.445325,   0.237149,0.084525,-1.426709,
+       0.461116,0.084525,-1.372712,    0.441041,0.0648,-1.312948,      0.226824,0.0648,-1.364595,
+       0.226824,0.0648,-1.364595,      0.237149,0.084525,-1.426709,    0.461116,0.084525,-1.372712,
+       0.669128,0.084525,-1.286108,    0.639996,0.0648,-1.230115,      0.441041,0.0648,-1.312948,
+       0.441041,0.0648,-1.312948,      0.461116,0.084525,-1.372712,    0.669128,0.084525,-1.286108,
+       0.858407,0.084525,-1.169673,    0.821035,0.0648,-1.118749,      0.639996,0.0648,-1.230115,
+       0.639996,0.0648,-1.230115,      0.669128,0.084525,-1.286108,    0.858407,0.084525,-1.169673,
+       1.026181,0.084525,-1.026181,    0.981504,0.0648,-0.981504,      0.821035,0.0648,-1.118749,
+       0.821035,0.0648,-1.118749,      0.858407,0.084525,-1.169673,    1.026181,0.084525,-1.026181,
+       1.169673,0.084525,-0.858407,    1.118749,0.0648,-0.821035,      0.981504,0.0648,-0.981504,
+       0.981504,0.0648,-0.981504,      1.026181,0.084525,-1.026181,    1.169673,0.084525,-0.858407,
+       1.286108,0.084525,-0.669128,    1.230115,0.0648,-0.639996,      1.118749,0.0648,-0.821035,
+       1.118749,0.0648,-0.821035,      1.169673,0.084525,-0.858407,    1.286108,0.084525,-0.669128,
+       1.372712,0.084525,-0.461116,    1.312948,0.0648,-0.441041,      1.230115,0.0648,-0.639996,
+       1.230115,0.0648,-0.639996,      1.286108,0.084525,-0.669128,    1.372712,0.084525,-0.461116,
+       1.426709,0.084525,-0.237149,    1.364595,0.0648,-0.226824,      1.312948,0.0648,-0.441041,
+       1.312948,0.0648,-0.441041,      1.372712,0.084525,-0.461116,    1.426709,0.084525,-0.237149,
+       1.445325,0.084525,0,    1.3824,0.0648,0,        1.364595,0.0648,-0.226824,
+       1.364595,0.0648,-0.226824,      1.426709,0.084525,-0.237149,    1.445325,0.084525,0,
+       0.24297,0.1056,-1.461727,       0.237149,0.084525,-1.426709,    0,0.084525,-1.445325,
+       0,0.084525,-1.445325,   0,0.1056,-1.4808,       0.24297,0.1056,-1.461727,
+       0.472434,0.1056,-1.406405,      0.461116,0.084525,-1.372712,    0.237149,0.084525,-1.426709,
+       0.237149,0.084525,-1.426709,    0.24297,0.1056,-1.461727,       0.472434,0.1056,-1.406405,
+       0.685551,0.1056,-1.317675,      0.669128,0.084525,-1.286108,    0.461116,0.084525,-1.372712,
+       0.461116,0.084525,-1.372712,    0.472434,0.1056,-1.406405,      0.685551,0.1056,-1.317675,
+       0.879477,0.1056,-1.198382,      0.858407,0.084525,-1.169673,    0.669128,0.084525,-1.286108,
+       0.669128,0.084525,-1.286108,    0.685551,0.1056,-1.317675,      0.879477,0.1056,-1.198382,
+       1.051368,0.1056,-1.051368,      1.026181,0.084525,-1.026181,    0.858407,0.084525,-1.169673,
+       0.858407,0.084525,-1.169673,    0.879477,0.1056,-1.198382,      1.051368,0.1056,-1.051368,
+       1.198382,0.1056,-0.879477,      1.169673,0.084525,-0.858407,    1.026181,0.084525,-1.026181,
+       1.026181,0.084525,-1.026181,    1.051368,0.1056,-1.051368,      1.198382,0.1056,-0.879477,
+       1.317675,0.1056,-0.685551,      1.286108,0.084525,-0.669128,    1.169673,0.084525,-0.858407,
+       1.169673,0.084525,-0.858407,    1.198382,0.1056,-0.879477,      1.317675,0.1056,-0.685551,
+       1.406405,0.1056,-0.472434,      1.372712,0.084525,-0.461116,    1.286108,0.084525,-0.669128,
+       1.286108,0.084525,-0.669128,    1.317675,0.1056,-0.685551,      1.406405,0.1056,-0.472434,
+       1.461727,0.1056,-0.24297,       1.426709,0.084525,-0.237149,    1.372712,0.084525,-0.461116,
+       1.372712,0.084525,-0.461116,    1.406405,0.1056,-0.472434,      1.461727,0.1056,-0.24297,
+       1.4808,0.1056,0,        1.445325,0.084525,0,    1.426709,0.084525,-0.237149,
+       1.426709,0.084525,-0.237149,    1.461727,0.1056,-0.24297,       1.4808,0.1056,0,
+       0.245542,0.127575,-1.4772,      0.24297,0.1056,-1.461727,       0,0.1056,-1.4808,
+       0,0.1056,-1.4808,       0,0.127575,-1.496475,   0.245542,0.127575,-1.4772,
+       0.477435,0.127575,-1.421292,    0.472434,0.1056,-1.406405,      0.24297,0.1056,-1.461727,
+       0.24297,0.1056,-1.461727,       0.245542,0.127575,-1.4772,      0.477435,0.127575,-1.421292,
+       0.692808,0.127575,-1.331623,    0.685551,0.1056,-1.317675,      0.472434,0.1056,-1.406405,
+       0.472434,0.1056,-1.406405,      0.477435,0.127575,-1.421292,    0.692808,0.127575,-1.331623,
+       0.888786,0.127575,-1.211067,    0.879477,0.1056,-1.198382,      0.685551,0.1056,-1.317675,
+       0.685551,0.1056,-1.317675,      0.692808,0.127575,-1.331623,    0.888786,0.127575,-1.211067,
+       1.062497,0.127575,-1.062497,    1.051368,0.1056,-1.051368,      0.879477,0.1056,-1.198382,
+       0.879477,0.1056,-1.198382,      0.888786,0.127575,-1.211067,    1.062497,0.127575,-1.062497,
+       1.211067,0.127575,-0.888786,    1.198382,0.1056,-0.879477,      1.051368,0.1056,-1.051368,
+       1.051368,0.1056,-1.051368,      1.062497,0.127575,-1.062497,    1.211067,0.127575,-0.888786,
+       1.331623,0.127575,-0.692808,    1.317675,0.1056,-0.685551,      1.198382,0.1056,-0.879477,
+       1.198382,0.1056,-0.879477,      1.211067,0.127575,-0.888786,    1.331623,0.127575,-0.692808,
+       1.421292,0.127575,-0.477435,    1.406405,0.1056,-0.472434,      1.317675,0.1056,-0.685551,
+       1.317675,0.1056,-0.685551,      1.331623,0.127575,-0.692808,    1.421292,0.127575,-0.477435,
+       1.4772,0.127575,-0.245542,      1.461727,0.1056,-0.24297,       1.406405,0.1056,-0.472434,
+       1.406405,0.1056,-0.472434,      1.421292,0.127575,-0.477435,    1.4772,0.127575,-0.245542,
+       1.496475,0.127575,0,    1.4808,0.1056,0,        1.461727,0.1056,-0.24297,
+       1.461727,0.1056,-0.24297,       1.4772,0.127575,-0.245542,      1.496475,0.127575,0,
+       0.24612,0.15,-1.48068,  0.245542,0.127575,-1.4772,      0,0.127575,-1.496475,
+       0,0.127575,-1.496475,   0,0.15,-1.5,    0.24612,0.15,-1.48068,
+       0.47856,0.15,-1.42464,  0.477435,0.127575,-1.421292,    0.245542,0.127575,-1.4772,
+       0.245542,0.127575,-1.4772,      0.24612,0.15,-1.48068,  0.47856,0.15,-1.42464,
+       0.69444,0.15,-1.33476,  0.692808,0.127575,-1.331623,    0.477435,0.127575,-1.421292,
+       0.477435,0.127575,-1.421292,    0.47856,0.15,-1.42464,  0.69444,0.15,-1.33476,
+       0.89088,0.15,-1.21392,  0.888786,0.127575,-1.211067,    0.692808,0.127575,-1.331623,
+       0.692808,0.127575,-1.331623,    0.69444,0.15,-1.33476,  0.89088,0.15,-1.21392,
+       1.065,0.15,-1.065,      1.062497,0.127575,-1.062497,    0.888786,0.127575,-1.211067,
+       0.888786,0.127575,-1.211067,    0.89088,0.15,-1.21392,  1.065,0.15,-1.065,
+       1.21392,0.15,-0.89088,  1.211067,0.127575,-0.888786,    1.062497,0.127575,-1.062497,
+       1.062497,0.127575,-1.062497,    1.065,0.15,-1.065,      1.21392,0.15,-0.89088,
+       1.33476,0.15,-0.69444,  1.331623,0.127575,-0.692808,    1.211067,0.127575,-0.888786,
+       1.211067,0.127575,-0.888786,    1.21392,0.15,-0.89088,  1.33476,0.15,-0.69444,
+       1.42464,0.15,-0.47856,  1.421292,0.127575,-0.477435,    1.331623,0.127575,-0.692808,
+       1.331623,0.127575,-0.692808,    1.33476,0.15,-0.69444,  1.42464,0.15,-0.47856,
+       1.48068,0.15,-0.24612,  1.4772,0.127575,-0.245542,      1.421292,0.127575,-0.477435,
+       1.421292,0.127575,-0.477435,    1.42464,0.15,-0.47856,  1.48068,0.15,-0.24612,
+       1.5,0.15,0,     1.496475,0.127575,0,    1.4772,0.127575,-0.245542,
+       1.4772,0.127575,-0.245542,      1.48068,0.15,-0.24612,  1.5,0.15,0
+};
index 008882d3642c0b822cfbbcf9a7850163425f393d..6523102a65243d270c62f9f828f8a83b84f7fe1f 100644 (file)
@@ -72,22 +72,22 @@ typedef struct
 } topBlockSTATE;
 
 /* parameter vars */
 } topBlockSTATE;
 
 /* parameter vars */
-Bool override;
-Bool rotate;
-Bool follow;
-Bool drawCarpet;
-Bool drawBlob;
-Bool drawNipples;
-GLfloat rotateSpeed;
-GLfloat camX;
-GLfloat camY;
-GLfloat camZ;
-GLfloat dropSpeed;
-int maxFalling;
-int maxColors;
-int size;
-int spawn;
-int resolution;
+static Bool override;
+static Bool rotate;
+static Bool follow;
+static Bool drawCarpet;
+static Bool drawBlob;
+static Bool drawNipples;
+static GLfloat rotateSpeed;
+static GLfloat camX;
+static GLfloat camY;
+static GLfloat camZ;
+static GLfloat dropSpeed;
+static int maxFalling;
+static int maxColors;
+static int size;
+static int spawn;
+static int resolution;
 
 static XrmOptionDescRec opts[] = {
   { "-size",        ".size",        XrmoptionSepArg, 0 },
 
 static XrmOptionDescRec opts[] = {
   { "-size",        ".size",        XrmoptionSepArg, 0 },
@@ -147,7 +147,7 @@ static argtype vars[] = {
 
 static topBlockSTATE *tbs = NULL;
 
 
 static topBlockSTATE *tbs = NULL;
 
-ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL};
+static ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 /* Window management, etc */
 ENTRYPOINT void
 
 /* Window management, etc */
 ENTRYPOINT void
@@ -319,13 +319,10 @@ draw_topBlock (ModeInfo *mi)
                followBlock(mi);
        }
 
                followBlock(mi);
        }
 
-        glScalef (-1, 1, 1);
-        glTranslatef (0, 0, -10);
-        glRotatef(-current_device_rotation(), 0, 0, 1);
+        /* Rotate the scene around a point that's a little higher up. */
+        glTranslatef (0, 0, -5);
         gltrackball_rotate (tb->trackball);
         gltrackball_rotate (tb->trackball);
-        glRotatef(current_device_rotation(), 0, 0, 1);
-        glTranslatef (0, 0, 10);
-        glScalef (-1, 1, 1);
+        glTranslatef (0, 0, 5);
 
        /* rotate the world */
        glRotatef(tb->rotation, 0.0, 0.0, 1.0);         
 
        /* rotate the world */
        glRotatef(tb->rotation, 0.0, 0.0, 1.0);         
index 617a0bb17c487bc77130b68f29d34cdebe493be1..429ade91ebd80ad6ccb70ebc9f0540fd8ba74bb6 100644 (file)
@@ -72,6 +72,7 @@
  */
 static float tb_project_to_sphere(float, float, float);
 static void normalize_quat(float [4]);
  */
 static float tb_project_to_sphere(float, float, float);
 static void normalize_quat(float [4]);
+static void axis_to_quat(float a[3], float phi, float q[4]);
 
 static void
 vzero(float *v)
 
 static void
 vzero(float *v)
index f7da9509ea5e6dbd1fcc8bee510f92b7648f3c93..4b84ab7157ceeba24cf759f727d6acfd24c750d5 100644 (file)
@@ -76,7 +76,7 @@ build_rotmatrix(float m[4][4], float q[4]);
  * the given vector) and an angle about which to rotate.  The angle is
  * expressed in radians.  The result is put into the third argument.
  */
  * the given vector) and an angle about which to rotate.  The angle is
  * expressed in radians.  The result is put into the third argument.
  */
-void
-axis_to_quat(float a[3], float phi, float q[4]);
+/* void
+axis_to_quat(float a[3], float phi, float q[4]); */
 
 #endif /* __TRACKBALL_H__ */
 
 #endif /* __TRACKBALL_H__ */
index 261aca3c2f214263ea111e8c05ebc4af9bea97ec..3ab69f1ddb9d67f43154e9459b709cb240fe97ee 100644 (file)
@@ -505,7 +505,6 @@ draw_bit (ModeInfo *mi)
 
   glPushMatrix ();
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   glPushMatrix ();
   glRotatef(current_device_rotation(), 0, 0, 1);
-
   glScalef(1.1, 1.1, 1.1);
 
   {
   glScalef(1.1, 1.1, 1.1);
 
   {
@@ -514,10 +513,7 @@ draw_bit (ModeInfo *mi)
     glTranslatef((x - 0.5) * 11,
                  (y - 0.5) * 5,
                  (z - 0.5) * 3);
     glTranslatef((x - 0.5) * 11,
                  (y - 0.5) * 5,
                  (z - 0.5) * 3);
-
-    glRotatef(-current_device_rotation(), 0, 0, 1);
     gltrackball_rotate (bp->trackball);
     gltrackball_rotate (bp->trackball);
-    glRotatef(current_device_rotation(), 0, 0, 1);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
 
     get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
     glRotatef (x * 360, 1.0, 0.0, 0.0);
index 54132fbee12616defe3ff295b12845c7617f8121..333161bb5d50ef3e71187288f6783efebfb78627 100644 (file)
@@ -111,7 +111,8 @@ struct tunnel_state {
 };
 
 /*=================== Vector normalization ==================================*/
 };
 
 /*=================== Vector normalization ==================================*/
-static void normalize(cvPoint *V)
+static void
+normalize(cvPoint *V)
 {
   float d;
 
 {
   float d;
 
@@ -125,7 +126,8 @@ static void normalize(cvPoint *V)
 }
 /*=================== C = A x B  (Vector multiply) ==========================*/
 #if 0
 }
 /*=================== C = A x B  (Vector multiply) ==========================*/
 #if 0
-static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
+static void
+vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
 {
        /* Vector multiply */
        C->x = A->y*B->z - A->z*B->y;
 {
        /* Vector multiply */
        C->x = A->y*B->z - A->z*B->y;
@@ -135,7 +137,8 @@ static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C)
 #endif
 
 /* Catmull-Rom Curve calculations */
 #endif
 
 /* Catmull-Rom Curve calculations */
-static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
+static void
+cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
 {
        float t2, t3, t1;
 
 {
        float t2, t3, t1;
 
@@ -156,7 +159,8 @@ static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp)
 // outp - output point
 //==========================================================================
 */
 // outp - output point
 //==========================================================================
 */
-static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
+static void
+RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp)
 {
        cvPoint p1, p2;
        float l, m, n, ca, sa;
 {
        cvPoint p1, p2;
        float l, m, n, ca, sa;
@@ -183,7 +187,8 @@ static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPo
 
 
 /*=================== Load camera and tunnel path ==========================*/
 
 
 /*=================== Load camera and tunnel path ==========================*/
-static void LoadPath(struct tunnel_state *st)
+static void
+LoadPath(struct tunnel_state *st)
 {
        float x, y, z;
        tnPath *path1=NULL, *path2=NULL;
 {
        float x, y, z;
        tnPath *path1=NULL, *path2=NULL;
@@ -222,7 +227,7 @@ static void LoadPath(struct tunnel_state *st)
 
 /*=================== Tunnel Initialization ================================*/
 struct tunnel_state *
 
 /*=================== Tunnel Initialization ================================*/
 struct tunnel_state *
-InitTunnel(void)
+atunnel_InitTunnel(void)
 {
     struct tunnel_state *st = (struct tunnel_state *) calloc (1, sizeof(*st));
        LoadPath(st);
 {
     struct tunnel_state *st = (struct tunnel_state *) calloc (1, sizeof(*st));
        LoadPath(st);
@@ -230,7 +235,8 @@ InitTunnel(void)
     return st;
 }
 
     return st;
 }
 
-void DrawTunnel(struct tunnel_state *st, 
+void
+atunnel_DrawTunnel(struct tunnel_state *st, 
                 int do_texture, int do_light, GLuint *textures)
 {
        tnPath *p, *p1, *cmpos;
                 int do_texture, int do_light, GLuint *textures)
 {
        tnPath *p, *p1, *cmpos;
@@ -438,7 +444,8 @@ void DrawTunnel(struct tunnel_state *st,
 }
 
 /* =================== Show splash screen =================================== */
 }
 
 /* =================== Show splash screen =================================== */
-void SplashScreen(struct tunnel_state *st, 
+void
+atunnel_SplashScreen(struct tunnel_state *st, 
                   int do_wire, int do_texture, int do_light)
 {
        if (st->ModeX > 0)
                   int do_wire, int do_texture, int do_light)
 {
        if (st->ModeX > 0)
@@ -496,7 +503,8 @@ void SplashScreen(struct tunnel_state *st,
        }
 }
 
        }
 }
 
-void FreeTunnel(struct tunnel_state *st)
+void
+atunnel_FreeTunnel(struct tunnel_state *st)
 {
   free (st);
 }
 {
   free (st);
 }
index 3ada23a6569e9eb8164787a678b0e3dff2428770..643b9584bc6c2f7f32a0ad5b6d5eaffc2313e45a 100644 (file)
@@ -2,10 +2,10 @@
 
 struct tunnel_state;
 
 
 struct tunnel_state;
 
-extern struct tunnel_state * InitTunnel(void);
-extern void DrawTunnel(struct tunnel_state *,
+extern struct tunnel_state * atunnel_InitTunnel(void);
+extern void atunnel_DrawTunnel(struct tunnel_state *,
                        int do_texture, int do_light, GLuint *textures);
                        int do_texture, int do_light, GLuint *textures);
-extern void SplashScreen(struct tunnel_state *,
+extern void atunnel_SplashScreen(struct tunnel_state *,
                          int do_wire, int do_texture, int do_light);
                          int do_wire, int do_texture, int do_light);
-extern void FreeTunnel(struct tunnel_state *);
+extern void atunnel_FreeTunnel(struct tunnel_state *);
 
 
index d2308386d6551101aecb180cbca173740c16c0dc..02a5b11352ff3f439c59d2f98f1df59066e1bfba 100644 (file)
@@ -339,7 +339,9 @@ make_goop (Screen *screen, Visual *visual, Window window, Colormap cmap,
   goop->nlayers = get_integer_resource (dpy, "planes", "Planes");
   if (goop->nlayers <= 0)
     goop->nlayers = (random() % (depth-2)) + 2;
   goop->nlayers = get_integer_resource (dpy, "planes", "Planes");
   if (goop->nlayers <= 0)
     goop->nlayers = (random() % (depth-2)) + 2;
-  goop->layers = (struct layer **) malloc(sizeof(*goop->layers)*goop->nlayers);
+  if (! goop->layers)
+    goop->layers = (struct layer **) 
+      malloc(sizeof(*goop->layers)*goop->nlayers);
 
   goop->additive_p = get_boolean_resource (dpy, "additive", "Additive");
   goop->cmap_p = has_writable_cells (screen, visual);
 
   goop->additive_p = get_boolean_resource (dpy, "additive", "Additive");
   goop->cmap_p = has_writable_cells (screen, visual);
@@ -542,7 +544,11 @@ static void
 goop_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 goop_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
-  /* #### write me */
+  struct goop *goop = (struct goop *) closure;
+
+  /* #### leaks like crazy */
+  struct goop *goop2 = goop_init (dpy, window);
+  memcpy (goop, goop2, sizeof(*goop));
 }
 
 static Bool
 }
 
 static Bool
index ef8a92d7e23557d7c01d983b79379bcb15bdc234..a6ea63126f995f20970e79978ba9c29caa90d5e5 100644 (file)
@@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)grav.c      5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 #define BRIGHT_COLORS
                                        "*fpsSolid: true \n" \
 
 #define BRIGHT_COLORS
-# define reshape_grav 0
 # define grav_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define grav_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -327,6 +326,15 @@ draw_grav(ModeInfo * mi)
                draw_planet(mi, &gp->planets[ball]);
 }
 
                draw_planet(mi, &gp->planets[ball]);
 }
 
+ENTRYPOINT void
+reshape_grav(ModeInfo * mi, int width, int height)
+{
+       gravstruct *gp = &gravs[MI_SCREEN(mi)];
+       gp->width  = width;
+       gp->height = height;
+    XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+}
+
 ENTRYPOINT void
 release_grav(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_grav(ModeInfo * mi)
 {
index e1eebb6755071c52dbbda4c4332e5b821cba4507..6060798181928ddc2482e2a95a5e8a8fa95ea2a2 100644 (file)
@@ -457,6 +457,9 @@ static void
 interference_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 interference_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct inter_context *c = (struct inter_context *) closure;
+  c->w = w;
+  c->h = h;
 }
 
 static Bool
 }
 
 static Bool
index f0236617e5929014c01806fb54d48c807053a921..fe7ad4366d3064868edf3950ffb82ec808f4ca72 100644 (file)
@@ -45,33 +45,15 @@ static const char sccsid[] = "@(#)julia.c   4.03 97/04/10 xlockmore";
                                        "*fpsSolid:             true   \n" \
 
 # define UNIFORM_COLORS
                                        "*fpsSolid:             true   \n" \
 
 # define UNIFORM_COLORS
-# define reshape_julia 0
-# define julia_handle_event 0
 # include "xlockmore.h"                                /* in xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* in xlockmore distribution */
 #endif /* !STANDALONE */
 
 
 # include "xlockmore.h"                                /* in xscreensaver distribution */
 #else  /* !STANDALONE */
 # include "xlock.h"                                    /* in xlockmore distribution */
 #endif /* !STANDALONE */
 
 
-static Bool track_p;
-
 #define DEF_MOUSE "False"
 
 #define DEF_MOUSE "False"
 
-static XrmOptionDescRec opts[] =
-{
-       {"-mouse", ".julia.mouse", XrmoptionNoArg, "on"},
-       {"+mouse", ".julia.mouse", XrmoptionNoArg, "off"},
-};
-static argtype vars[] =
-{
-       {&track_p, "mouse", "Mouse", DEF_MOUSE, t_Bool},
-};
-static OptionStruct desc[] =
-{
-       {"-/+mouse", "turn on/off mouse tracking"},
-};
-
-ENTRYPOINT ModeSpecOpt julia_opts = { 2, opts, 1, vars, desc };
+ENTRYPOINT ModeSpecOpt julia_opts = { 0, };
 
 
 #define numpoints ((0x2<<jp->depth)-1)
 
 
 #define numpoints ((0x2<<jp->depth)-1)
@@ -96,6 +78,8 @@ typedef struct {
 #endif
        GC          stippledGC;
        XPoint    **pointBuffer;        /* pointer for XDrawPoints */
 #endif
        GC          stippledGC;
        XPoint    **pointBuffer;        /* pointer for XDrawPoints */
+    Bool        button_down_p;
+    int         mouse_x, mouse_y;
 
 } juliastruct;
 
 
 } juliastruct;
 
@@ -140,28 +124,13 @@ apply(juliastruct * jp, register double xr, register double xi, int d)
 static void
 incr(ModeInfo * mi, juliastruct * jp)
 {
 static void
 incr(ModeInfo * mi, juliastruct * jp)
 {
-       int cx, cy;
-
-       if (track_p)
+       if (jp->button_down_p)
          {
          {
-               Window r, c;
-               int rx, ry;
-               unsigned int m;
-               XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi),
-                                         &r, &c, &rx, &ry, &cx, &cy, &m);
-               if (cx <= 0 || cy <= 0 ||
-                       cx >= MI_WIN_WIDTH(mi) || cy >= MI_WIN_HEIGHT(mi))
-                 goto NOTRACK;
-         }
-
-       if (track_p)
-         {
-               jp->cr = ((double) (cx + 2 - jp->centerx)) * 2 / jp->centerx;
-               jp->ci = ((double) (cy + 2 - jp->centery)) * 2 / jp->centery;
+               jp->cr = ((double) (jp->mouse_x + 2 - jp->centerx)) * 2 / jp->centerx;
+               jp->ci = ((double) (jp->mouse_y + 2 - jp->centery)) * 2 / jp->centery;
          }
        else
          {
          }
        else
          {
-         NOTRACK:
 #if 0
                jp->cr = 1.5 * (sin(M_PI * (jp->inc / 300.0)) *
                                                sin(jp->inc * M_PI / 200.0));
 #if 0
                jp->cr = 1.5 * (sin(M_PI * (jp->inc / 300.0)) *
                                                sin(jp->inc * M_PI / 200.0));
@@ -207,7 +176,7 @@ init_julia(ModeInfo * mi)
 
 
 #ifndef HAVE_COCOA
 
 
 #ifndef HAVE_COCOA
-       if (track_p && !jp->cursor)
+       if (jp->button_down_p && !jp->cursor && !jp->cursor)
          {
                Pixmap bit;
                XColor black;
          {
                Pixmap bit;
                XColor black;
@@ -230,7 +199,7 @@ init_julia(ModeInfo * mi)
        if (jp->pixmap == None) {
                GC          fg_gc = None, bg_gc = None;
 
        if (jp->pixmap == None) {
                GC          fg_gc = None, bg_gc = None;
 
-               jp->circsize = (MIN(jp->centerx, jp->centery) / 96) * 2 + 1;
+               jp->circsize = MAX(8, (MIN(jp->centerx, jp->centery) / 96) * 2 + 1);
                jp->pixmap = XCreatePixmap(display, window, jp->circsize, jp->circsize, 1);
                gcv.foreground = 1;
                fg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv);
                jp->pixmap = XCreatePixmap(display, window, jp->circsize, jp->circsize, 1);
                gcv.foreground = 1;
                fg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv);
@@ -284,6 +253,44 @@ init_julia(ModeInfo * mi)
 }
 
 
 }
 
 
+static void
+reshape_julia (ModeInfo *mi, int w, int h)
+{
+  init_julia (mi);
+}
+
+
+ENTRYPOINT Bool
+julia_handle_event (ModeInfo *mi, XEvent *event)
+{
+  juliastruct *jp = &julias[MI_SCREEN(mi)];
+
+  if (event->xany.type == ButtonPress &&
+      event->xbutton.button == Button1)
+    {
+      jp->button_down_p = True;
+      jp->mouse_x = event->xbutton.x;
+      jp->mouse_y = event->xbutton.y;
+      return True;
+    }
+  else if (event->xany.type == ButtonRelease &&
+           event->xbutton.button == Button1)
+    {
+      jp->button_down_p = False;
+      return True;
+    }
+  else if (event->xany.type == MotionNotify && jp->button_down_p)
+    {
+      jp->mouse_x = event->xmotion.x;
+      jp->mouse_y = event->xmotion.y;
+      return True;
+    }
+
+  return False;
+}
+
+
+
 /* hack: moved here by jwz. */
 #define ERASE_IMAGE(d,w,g,x,y,xl,yl,xs,ys) \
 if (yl<y) \
 /* hack: moved here by jwz. */
 #define ERASE_IMAGE(d,w,g,x,y,xl,yl,xs,ys) \
 if (yl<y) \
@@ -318,8 +325,11 @@ draw_julia (ModeInfo * mi)
        new_circle.x = (int) (jp->centerx * jp->cr / 2) + jp->centerx - 2;
        new_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2;
        XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
        new_circle.x = (int) (jp->centerx * jp->cr / 2) + jp->centerx - 2;
        new_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2;
        XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi));
-       ERASE_IMAGE(display, window, gc, new_circle.x, new_circle.y,
-                   old_circle.x, old_circle.y, jp->circsize, jp->circsize);
+       XFillArc(display, window, gc, 
+             old_circle.x-jp->circsize/2-2,
+             old_circle.y-jp->circsize/2-2,
+             jp->circsize+4, jp->circsize+4,
+             0, 360*64);
        /* draw a circle at the c-parameter so you can see it's effect on the
           structure of the julia set */
        XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi));
        /* draw a circle at the c-parameter so you can see it's effect on the
           structure of the julia set */
        XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi));
@@ -328,8 +338,12 @@ draw_julia (ModeInfo * mi)
        XSetStipple(display, jp->stippledGC, jp->pixmap);
        XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled);
 #endif /* HAVE_COCOA */
        XSetStipple(display, jp->stippledGC, jp->pixmap);
        XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled);
 #endif /* HAVE_COCOA */
-       XFillRectangle(display, window, jp->stippledGC, new_circle.x, new_circle.y,
-                      jp->circsize, jp->circsize);
+       XDrawArc(display, window, jp->stippledGC, 
+             new_circle.x-jp->circsize/2,
+             new_circle.y-jp->circsize/2,
+             jp->circsize, jp->circsize,
+             0, 360*64);
+
        if (jp->erase == 1) {
                XDrawPoints(display, window, gc,
                    jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin);
        if (jp->erase == 1) {
                XDrawPoints(display, window, gc,
                    jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin);
index a27e2e38444b9e517a6bc64fe7c826f967bee30f..4e0f2e82b4e8d432d043a508d464eff2e889179e 100644 (file)
@@ -3,7 +3,7 @@
 julia - draws spinning, animating julia-set fractals
 .SH SYNOPSIS
 .B julia
 julia - draws spinning, animating julia-set fractals
 .SH SYNOPSIS
 .B julia
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-mouse] [\-nomouse]
+[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
 
 [\-fps]
 .SH DESCRIPTION
 
 [\-fps]
 .SH DESCRIPTION
@@ -19,6 +19,8 @@ dx266 and it looks okay.  The sinusoidal variation of the parameter
 might not be as interesting as it could, but it still gives an idea 
 of the effect of the parameter.
 
 might not be as interesting as it could, but it still gives an idea 
 of the effect of the parameter.
 
+Dragging the mouse in the window uses the mouse's position as the
+control point for the generation of ths set.
 .SH OPTIONS
 .I julia
 accepts the following options:
 .SH OPTIONS
 .I julia
 accepts the following options:
@@ -48,14 +50,6 @@ the color wheel.
 
 .TP 8
 .B \-count \fIinteger\fP
 
 .TP 8
 .B \-count \fIinteger\fP
-
-.TP 8
-.B \-mouse
-.TP 8
-.B \-nomouse
-If \fI\-mouse\fP is specified, the control point of the Julia set will
-be derived from the position of the mouse in the window.  When the mouse
-is not in the window, the control point is chosen the normal way.
 .TP 8
 .B \-fps
 Display the current frame rate and CPU load.
 .TP 8
 .B \-fps
 Display the current frame rate and CPU load.
index 7b50a56a0b52dc20e2e75a60eaa11adb75d8b4a9..7a998738f73b2de0471bd6b9dfad443c3c0463fe 100644 (file)
@@ -93,7 +93,6 @@ static const char sccsid[] = "@(#)loop.c      5.01 2000/03/15 xlockmore";
                                        "*fpsSolid: true     \n" \
 
 # define UNIFORM_COLORS
                                        "*fpsSolid: true     \n" \
 
 # define UNIFORM_COLORS
-# define reshape_loop 0
 # define loop_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define loop_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -1678,6 +1677,13 @@ draw_loop (ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_loop(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_loop (mi);
+}
+
 ENTRYPOINT void
 refresh_loop (ModeInfo * mi)
 {
 ENTRYPOINT void
 refresh_loop (ModeInfo * mi)
 {
index 8361fbd0dca03d0093379ab6369a791126875112..11a787432921a25a4d139ad96334a1a61867f12f 100644 (file)
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
                     ISO C89 compilers are required to support" when includng
                     the following data file... */
 # endif
-const char * const demo_files[] = {
+static const char * const demo_files[] = {
 # include "m6502.h"
 };
 
 
 # include "m6502.h"
 };
 
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
+
 /* We want to paint on a 32 by 32 grid of pixels. We will needed to
    divided the screen up into chuncks */
 enum {
 /* We want to paint on a 32 by 32 grid of pixels. We will needed to
    divided the screen up into chuncks */
 enum {
@@ -74,7 +79,7 @@ start_rand_bin_prog(machine_6502 *machine, struct state *st){
   while(n == st->which)
     n = random() % st->demos;
   st->which = n;
   while(n == st->which)
     n = random() % st->demos;
   st->which = n;
-  start_eval_string(machine, demo_files[st->which], plot6502, st);
+  m6502_start_eval_string(machine, demo_files[st->which], plot6502, st);
 }
 
 \f
 }
 
 \f
@@ -114,7 +119,6 @@ m6502_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   unsigned int x, y;
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   unsigned int x, y;
-  char *s = get_string_resource (dpy, "file", "File");
   int n = get_integer_resource(dpy, "displaytime", "Displaytime");
   int dh;
   st->demos = countof(demo_files);
   int n = get_integer_resource(dpy, "displaytime", "Displaytime");
   int dh;
   st->demos = countof(demo_files);
@@ -125,7 +129,7 @@ m6502_init (Display *dpy, Window window)
   st->tv=analogtv_allocate(st->dpy, st->window);
   analogtv_set_defaults(st->tv, "");
   
   st->tv=analogtv_allocate(st->dpy, st->window);
   analogtv_set_defaults(st->tv, "");
   
-  st->machine = build6502();
+  st->machine = m6502_build();
   st->inp=analogtv_input_allocate();
   analogtv_setup_sync(st->inp, 1, 0);
   
   st->inp=analogtv_input_allocate();
   analogtv_setup_sync(st->inp, 1, 0);
   
@@ -141,10 +145,15 @@ m6502_init (Display *dpy, Window window)
 
   init_time(st);
   
 
   init_time(st);
   
-  if (strlen(s) > 0)
-    start_eval_file(st->machine,s, plot6502, st);
+  {
+#ifdef READ_FILES
+    char *s = get_string_resource (dpy, "file", "File");
+    if (strlen(s) > 0)
+      m6502_start_eval_file(st->machine,s, plot6502, st);
   else
   else
+#endif
     start_rand_bin_prog(st->machine,st);
     start_rand_bin_prog(st->machine,st);
+  }
 
   analogtv_lcp_to_ntsc(ANALOGTV_BLACK_LEVEL, 0.0, 0.0, st->field_ntsc);
 
 
   analogtv_lcp_to_ntsc(ANALOGTV_BLACK_LEVEL, 0.0, 0.0, st->field_ntsc);
 
@@ -214,7 +223,7 @@ m6502_draw (Display *dpy, Window window, void *closure)
   unsigned int x = 0, y = 0;
   double te;
 
   unsigned int x = 0, y = 0;
   double te;
 
-  next_eval(st->machine,500);
+  m6502_next_eval(st->machine,500);
 
   for (x = 0; x < 32; x++)
     for (y = 0; y < 32; y++)
 
   for (x = 0; x < 32; x++)
     for (y = 0; y < 32; y++)
index d82d16f55f2cad0ef55057e02771fcf8bd9309c8..afaed3c99dd6e574eeb4ca7558d41865823db7f7 100644 (file)
 #undef countof
 #define countof(x) (sizeof(x)/sizeof(*(x)))
 
 #undef countof
 #define countof(x) (sizeof(x)/sizeof(*(x)))
 
+#ifndef USE_IPHONE
+# define READ_FILES
+#endif
+
 typedef struct {
   int which;
   XRectangle rect;
 typedef struct {
   int which;
   XRectangle rect;
@@ -163,7 +167,9 @@ memscroller_init (Display *dpy, Window window)
   s = 0;
 
 
   s = 0;
 
 
+# ifdef READ_FILES
   st->filename = get_string_resource (dpy, "filename", "Filename");
   st->filename = get_string_resource (dpy, "filename", "Filename");
+# endif
 
   if (!st->filename ||
       !*st->filename ||
 
   if (!st->filename ||
       !*st->filename ||
@@ -171,12 +177,16 @@ memscroller_init (Display *dpy, Window window)
       !strcasecmp (st->filename, "(mem)") ||
       !strcasecmp (st->filename, "(memory)"))
     st->seed_mode = SEED_RAM;
       !strcasecmp (st->filename, "(mem)") ||
       !strcasecmp (st->filename, "(memory)"))
     st->seed_mode = SEED_RAM;
+# ifdef READ_FILES
   else if (st->filename &&
            (!strcasecmp (st->filename, "(rand)") ||
             !strcasecmp (st->filename, "(random)")))
     st->seed_mode = SEED_RANDOM;
   else
     st->seed_mode = SEED_FILE;
   else if (st->filename &&
            (!strcasecmp (st->filename, "(rand)") ||
             !strcasecmp (st->filename, "(random)")))
     st->seed_mode = SEED_RANDOM;
   else
     st->seed_mode = SEED_FILE;
+# else
+  st->seed_mode = SEED_RANDOM;
+# endif
 
   st->nscrollers = 3;
   st->scrollers = (scroller *) calloc (st->nscrollers, sizeof(scroller));
 
   st->nscrollers = 3;
   st->scrollers = (scroller *) calloc (st->nscrollers, sizeof(scroller));
@@ -270,6 +280,7 @@ reshape_memscroller (state *st)
 
 
 
 
 
 
+# ifdef READ_FILES
 static void
 open_file (state *st)
 {
 static void
 open_file (state *st)
 {
@@ -288,6 +299,7 @@ open_file (state *st)
       exit (1);
     }
 }
       exit (1);
     }
 }
+#endif
 
 
 static unsigned int
 
 
 static unsigned int
@@ -416,6 +428,7 @@ more_bits (state *st, scroller *sc)
       pv = PACK();
       break;
 
       pv = PACK();
       break;
 
+# ifdef READ_FILES
     case SEED_FILE:
       {
         int i;
     case SEED_FILE:
       {
         int i;
@@ -460,6 +473,7 @@ more_bits (state *st, scroller *sc)
         pv = PACK();
       }
       break;
         pv = PACK();
       }
       break;
+# endif /* READ_FILES */
 
     default:
       abort();
 
     default:
       abort();
index 72a2f4f23a2cd5a3069ffa0cd90a9d1c9d82f0f3..441a371371bda38ba5c39d75cdfca3e1e16f6e2d 100644 (file)
@@ -306,6 +306,8 @@ static void
 moire2_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 moire2_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->reset = 1;
 }
 
 static Bool
 }
 
 static Bool
index 1c4e64c05b09e724811afbc25c5de5de9c1812de..82d5fce7e82482c219083302113fe95badcf3cf0 100644 (file)
@@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)mountain.c  5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_mountain 0
 # define mountain_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define mountain_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -255,6 +254,14 @@ draw_mountain (ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_mountain(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_mountain (mi);
+}
+
+
 ENTRYPOINT void
 release_mountain (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_mountain (ModeInfo * mi)
 {
index 4f44a8eb3fda400041928e1fa7b0cdcc6d543f56..77232143279e8bc49a43ac319bc49ce692bb2d64 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
 #!/usr/bin/perl -w
-# Copyright Â© 2008-2011 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2008-2012 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -18,7 +18,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my $version = q{ $Revision: 1.7 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
+my $version = q{ $Revision: 1.8 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/;
 
 my $verbose = 0;
 
 
 my $verbose = 0;
 
@@ -111,7 +111,7 @@ sub munge_ad($) {
     open (IN, "<$xml") || error ("$xml: $!");
     while (<IN>) { $b .= $_; }
     close IN;
     open (IN, "<$xml") || error ("$xml: $!");
     while (<IN>) { $b .= $_; }
     close IN;
-    my ($name) = ($b =~ m@<screensaver[^<>]*\b_label=\"([^<>\"]+)\">@s);
+    my ($name) = ($b =~ m@<screensaver[^<>]*\b_label=\"([^<>\"]+)\"@s);
     error ("$xml: no name") unless $name;
 
     my $name2 = lc($name);
     error ("$xml: no name") unless $name;
 
     my $name2 = lc($name);
index 108db35c512200f16094aadb2bcfdcb594bfd36d..32b09e251ef91996baca957a49bb03989680f5f8 100644 (file)
@@ -600,6 +600,9 @@ static void
 noseguy_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 noseguy_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->Width = w + 2;
+  st->Height = h + 2;
 }
 
 static Bool
 }
 
 static Bool
index 226a3cf333dff49bbe56ac90a4006578076a1f27..23fb3a1d4d0b743a43fb2e82e5abf0a0649b2a52 100644 (file)
@@ -56,7 +56,6 @@ static const char sccsid[] = "@(#)pacman.c    5.00 2000/11/01 xlockmore";
 
 #      define UNIFORM_COLORS
 #      define BRIGHT_COLORS
 
 #      define UNIFORM_COLORS
 #      define BRIGHT_COLORS
-#   define reshape_pacman 0
 #   define pacman_handle_event 0
 #      include "xlockmore.h"   /* in xscreensaver distribution */
 #   include <assert.h>
 #   define pacman_handle_event 0
 #      include "xlockmore.h"   /* in xscreensaver distribution */
 #   include <assert.h>
@@ -131,7 +130,7 @@ static XrmOptionDescRec opts[] = {
 };
 
 static argtype vars[] = {
 };
 
 static argtype vars[] = {
-    {&trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool}
+    {&pacman_trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool}
 };
 
 static OptionStruct desc[] = {
 };
 
 static OptionStruct desc[] = {
@@ -158,8 +157,8 @@ ModStruct pacman_description = {
 
 #endif
 
 
 #endif
 
-Bool trackmouse;
-pacmangamestruct *pacmangames = (pacmangamestruct *) NULL;
+Bool pacman_trackmouse;
+pacmangamestruct *pacman_games = (pacmangamestruct *) NULL;
 
 static void repopulate (ModeInfo * mi);
 static void drawlevel (ModeInfo * mi);
 
 static void repopulate (ModeInfo * mi);
 static void drawlevel (ModeInfo * mi);
@@ -201,7 +200,7 @@ free_pacman (Display * display, pacmangamestruct * pp)
 static void
 reset_level (ModeInfo * mi, int n, int pac_init)
 {
 static void
 reset_level (ModeInfo * mi, int n, int pac_init)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int ghost;
 
     MI_CLEARWINDOW (mi);
     unsigned int ghost;
 
     MI_CLEARWINDOW (mi);
@@ -251,9 +250,9 @@ reset_level (ModeInfo * mi, int n, int pac_init)
         pp->ghosts[ghost].delta.y = 0;
         pp->ghosts[ghost].flash_scared = False;
         pp->ghosts[ghost].wait_pos = False;
         pp->ghosts[ghost].delta.y = 0;
         pp->ghosts[ghost].flash_scared = False;
         pp->ghosts[ghost].wait_pos = False;
-        ghost_update (pp, &(pp->ghosts[ghost]));
+        pacman_ghost_update (pp, &(pp->ghosts[ghost]));
     }
     }
-    pac_update (mi, pp, &(pp->pacman));
+    pacman_update (mi, pp, &(pp->pacman));
 }
 
 static int
 }
 
 static int
@@ -311,9 +310,9 @@ check_death (ModeInfo * mi, pacmangamestruct * pp)
 static void
 repopulate (ModeInfo * mi)
 {
 static void
 repopulate (ModeInfo * mi)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     pp->pacman.deaths = 0;
     pp->pacman.deaths = 0;
-    reset_level (mi, createnewlevel (pp), True);
+    reset_level (mi, pacman_createnewlevel (pp), True);
     check_death (mi, pp);
 }
 
     check_death (mi, pp);
 }
 
@@ -322,7 +321,7 @@ static void
 setwallcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
 setwallcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     if (MI_NPIXELS (mi) > 2)
         XSetForeground (display, pp->stippledGC, MI_PIXEL (mi, BLUE));
 
     if (MI_NPIXELS (mi) > 2)
         XSetForeground (display, pp->stippledGC, MI_PIXEL (mi, BLUE));
@@ -335,7 +334,7 @@ static void
 setdotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
 setdotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     XSetForeground (display, pp->stippledGC, MI_WHITE_PIXEL (mi));
 }
 
     XSetForeground (display, pp->stippledGC, MI_WHITE_PIXEL (mi));
 }
@@ -344,7 +343,7 @@ static void
 cleardotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
 cleardotcolor (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     XSetForeground (display, pp->stippledGC, MI_BLACK_PIXEL (mi));
 }
 
     XSetForeground (display, pp->stippledGC, MI_BLACK_PIXEL (mi));
 }
@@ -355,7 +354,7 @@ draw_position (ModeInfo * mi, int x, int y, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
@@ -378,7 +377,7 @@ draw_number (ModeInfo * mi, int x, int y, int num, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
     char *s = NULL;
@@ -406,7 +405,7 @@ draw_grid (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     int h = MI_HEIGHT (mi);
     int w = MI_WIDTH (mi);
     int y = 0;
     int h = MI_HEIGHT (mi);
     int w = MI_WIDTH (mi);
     int y = 0;
@@ -430,7 +429,7 @@ draw_string (ModeInfo * mi, int x, int y, char *s, int color)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
 
     XFontStruct *font = NULL;
     char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*";
 
@@ -482,7 +481,7 @@ print_ghost_stats (ModeInfo *mi, ghoststruct *g , int ghost_num)
 static void
 print_pac_stats ( ModeInfo *mi, pacmanstruct *pac )
 {
 static void
 print_pac_stats ( ModeInfo *mi, pacmanstruct *pac )
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     char s[1024];
     sprintf (s, "Pacman, Deaths: %d", pac->deaths );
     switch ( pac->aistate ){
     char s[1024];
     sprintf (s, "Pacman, Deaths: %d", pac->deaths );
     switch ( pac->aistate ){
@@ -516,7 +515,7 @@ print_pac_stats ( ModeInfo *mi, pacmanstruct *pac )
 static void
 dot_rc_to_pixel (ModeInfo * mi, int *x, int *y)
 {
 static void
 dot_rc_to_pixel (ModeInfo * mi, int *x, int *y)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     *x = (pp->xs * *x) +
         (pp->xs / 2) - (pp->xs > 32 ? (pp->xs / 16) : 1) + pp->xb;
     *y = (pp->ys * *y) +
     *x = (pp->xs * *x) +
         (pp->xs / 2) - (pp->xs > 32 ? (pp->xs / 16) : 1) + pp->xb;
     *y = (pp->ys * *y) +
@@ -529,7 +528,7 @@ dot_rc_to_pixel (ModeInfo * mi, int *x, int *y)
 static void
 dot_width_height (ModeInfo *mi, int *w, int *h)
 {
 static void
 dot_width_height (ModeInfo *mi, int *w, int *h)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     if (pp->xs > 32){
         *w = *h = (pp->xs / 32 );
     }else {
     if (pp->xs > 32){
         *w = *h = (pp->xs / 32 );
     }else {
@@ -713,7 +712,7 @@ drawlevelblock (ModeInfo * mi, pacmangamestruct * pp,
 static void
 drawlevel (ModeInfo * mi)
 {
 static void
 drawlevel (ModeInfo * mi)
 {
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int x, y;
 
     for (y = 0; y < LEVHEIGHT; y++)
     unsigned int x, y;
 
     for (y = 0; y < LEVHEIGHT; y++)
@@ -745,7 +744,7 @@ draw_pacman_sprite (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int dir = 0;
     int old_mask_dir = 0;
     int old_mask_mouth = 0;
     unsigned int dir = 0;
     int old_mask_dir = 0;
     int old_mask_mouth = 0;
@@ -851,7 +850,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 #define MAX_WAG_COUNT 50
     unsigned int dir = 0;
     unsigned int fs  = 0; /*flash scared*/
 #define MAX_WAG_COUNT 50
     unsigned int dir = 0;
     unsigned int fs  = 0; /*flash scared*/
@@ -954,7 +953,7 @@ draw_pacman_sprite (ModeInfo * mi)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int dir;
 
     pp->pacman.cf = pp->pacman.col * pp->xs + pp->pacman.delta.x *
     unsigned int dir;
 
     pp->pacman.cf = pp->pacman.col * pp->xs + pp->pacman.delta.x *
@@ -1003,7 +1002,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost)
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
 {
     Display *display = MI_DISPLAY (mi);
     Window window = MI_WINDOW (mi);
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
 
     pp->ghosts[ghost].cf =
         pp->ghosts[ghost].col * pp->xs + pp->ghosts[ghost].delta.x *
 
     pp->ghosts[ghost].cf =
         pp->ghosts[ghost].col * pp->xs + pp->ghosts[ghost].delta.x *
@@ -1059,7 +1058,7 @@ ghost_over (ModeInfo * mi, int x, int y)
 {
     int ghost = 0;
     int ret = False;
 {
     int ghost = 0;
     int ret = False;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     dot_rc_to_pixel (mi, &x, &y);
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if ((pp->ghosts[ghost].cf <= x
     dot_rc_to_pixel (mi, &x, &y);
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if ((pp->ghosts[ghost].cf <= x
@@ -1078,11 +1077,11 @@ static void
 flash_bonus_dots (ModeInfo * mi)
 {
 #define MAX_FLASH_COUNT 25
 flash_bonus_dots (ModeInfo * mi)
 {
 #define MAX_FLASH_COUNT 25
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     int i, x, y;
     for (i = 0; i < NUM_BONUS_DOTS; i++) {
     int i, x, y;
     for (i = 0; i < NUM_BONUS_DOTS; i++) {
-        if (!bonus_dot_eaten (pp, i)) {
-            bonus_dot_pos (pp, i, &x, &y);
+        if (!pacman_bonus_dot_eaten (pp, i)) {
+            pacman_bonus_dot_pos (pp, i, &x, &y);
             if (ghost_over (mi, x, y))
                 continue;
             if (pp->bd_on)
             if (ghost_over (mi, x, y))
                 continue;
             if (pp->bd_on)
@@ -1105,10 +1104,10 @@ ate_bonus_dot (ModeInfo * mi)
      */
     unsigned int ret = 0;
     int idx = 0;
      */
     unsigned int ret = 0;
     int idx = 0;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
-    if (is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) {
-        ret = !bonus_dot_eaten (pp, idx);
-        eat_bonus_dot (pp, idx);
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
+    if (pacman_is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) {
+        ret = !pacman_bonus_dot_eaten (pp, idx);
+        pacman_eat_bonus_dot (pp, idx);
     }
     return ret;
 }
     }
     return ret;
 }
@@ -1117,7 +1116,7 @@ static void
 ghost_scared (ModeInfo * mi)
 {
     unsigned int ghost;
 ghost_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if (pp->ghosts[ghost].aistate == goingin || 
             pp->ghosts[ghost].aistate == goingout ||
     for (ghost = 0; ghost < pp->nghosts; ghost++) {
         if (pp->ghosts[ghost].aistate == goingin || 
             pp->ghosts[ghost].aistate == goingout ||
@@ -1133,7 +1132,7 @@ static void
 ghost_not_scared (ModeInfo * mi)
 {
     unsigned int ghost;
 ghost_not_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++){
         if (pp->ghosts[ghost].aistate == goingin ||
             pp->ghosts[ghost].aistate == goingout ||
     for (ghost = 0; ghost < pp->nghosts; ghost++){
         if (pp->ghosts[ghost].aistate == goingin ||
             pp->ghosts[ghost].aistate == goingout ||
@@ -1149,7 +1148,7 @@ static void
 ghost_flash_scared (ModeInfo * mi)
 {
     unsigned int ghost;
 ghost_flash_scared (ModeInfo * mi)
 {
     unsigned int ghost;
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     for (ghost = 0; ghost < pp->nghosts; ghost++)
         pp->ghosts[ghost].flash_scared = !pp->ghosts[ghost].flash_scared;
 }
     for (ghost = 0; ghost < pp->nghosts; ghost++)
         pp->ghosts[ghost].flash_scared = !pp->ghosts[ghost].flash_scared;
 }
@@ -1162,7 +1161,7 @@ pacman_tick (ModeInfo * mi)
 #define START_FLASH 200
 #define FLASH_COUNT 25
 
 #define START_FLASH 200
 #define FLASH_COUNT 25
 
-    pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)];
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
     unsigned int ghost;
 #if 0
     draw_grid (mi);
     unsigned int ghost;
 #if 0
     draw_grid (mi);
@@ -1491,13 +1490,13 @@ init_pacman (ModeInfo * mi)
     int dir, mouth;
 #endif
 
     int dir, mouth;
 #endif
 
-    if (pacmangames == NULL) {
-        if ((pacmangames = (pacmangamestruct *)
+    if (pacman_games == NULL) {
+        if ((pacman_games = (pacmangamestruct *)
              calloc ((size_t) MI_NUM_SCREENS (mi),
                      sizeof (pacmangamestruct))) == NULL)
             return;
     }
              calloc ((size_t) MI_NUM_SCREENS (mi),
                      sizeof (pacmangamestruct))) == NULL)
             return;
     }
-    pp = &pacmangames[MI_SCREEN (mi)];
+    pp = &pacman_games[MI_SCREEN (mi)];
 
     pp->width = (unsigned short) MI_WIDTH (mi);
     pp->height = (unsigned short) MI_HEIGHT (mi);
 
     pp->width = (unsigned short) MI_WIDTH (mi);
     pp->height = (unsigned short) MI_HEIGHT (mi);
@@ -1710,9 +1709,9 @@ draw_pacman (ModeInfo * mi)
     unsigned int g;
     pacmangamestruct *pp;
 
     unsigned int g;
     pacmangamestruct *pp;
 
-    if (pacmangames == NULL)
+    if (pacman_games == NULL)
         return;
         return;
-    pp = &pacmangames[MI_SCREEN (mi)];
+    pp = &pacman_games[MI_SCREEN (mi)];
     if (pp->ghosts == NULL)
         return;
 
     if (pp->ghosts == NULL)
         return;
 
@@ -1722,7 +1721,7 @@ draw_pacman (ModeInfo * mi)
     pp->pacman.delta.y += pp->pacman.err.y != 0 ? pp->incy : 0;
 
     if (pp->pacman.delta.x >= pp->xs && pp->pacman.delta.y >= pp->ys) {
     pp->pacman.delta.y += pp->pacman.err.y != 0 ? pp->incy : 0;
 
     if (pp->pacman.delta.x >= pp->xs && pp->pacman.delta.y >= pp->ys) {
-        pac_update (mi, pp, &(pp->pacman));
+        pacman_update (mi, pp, &(pp->pacman));
         check_death (mi, pp);
         pp->pacman.delta.x = pp->incx;
         pp->pacman.delta.y = pp->incy;
         check_death (mi, pp);
         pp->pacman.delta.x = pp->incx;
         pp->pacman.delta.y = pp->incy;
@@ -1741,7 +1740,7 @@ draw_pacman (ModeInfo * mi)
         
         if (pp->ghosts[g].delta.x >= pp->xs &&
             pp->ghosts[g].delta.y >= pp->ys) {
         
         if (pp->ghosts[g].delta.x >= pp->xs &&
             pp->ghosts[g].delta.y >= pp->ys) {
-            ghost_update (pp, &(pp->ghosts[g]));
+            pacman_ghost_update (pp, &(pp->ghosts[g]));
             pp->ghosts[g].delta.x = pp->incx;
             pp->ghosts[g].delta.y = pp->incy;
         }
             pp->ghosts[g].delta.x = pp->incx;
             pp->ghosts[g].delta.y = pp->incy;
         }
@@ -1758,13 +1757,13 @@ draw_pacman (ModeInfo * mi)
 ENTRYPOINT void
 release_pacman (ModeInfo * mi)
 {
 ENTRYPOINT void
 release_pacman (ModeInfo * mi)
 {
-    if (pacmangames != NULL) {
+    if (pacman_games != NULL) {
         int screen;
 
         for (screen = 0; screen < MI_NUM_SCREENS (mi); screen++)
         int screen;
 
         for (screen = 0; screen < MI_NUM_SCREENS (mi); screen++)
-            free_pacman (MI_DISPLAY (mi), &pacmangames[screen]);
-        free (pacmangames);
-        pacmangames = (pacmangamestruct *) NULL;
+            free_pacman (MI_DISPLAY (mi), &pacman_games[screen]);
+        free (pacman_games);
+        pacman_games = (pacmangamestruct *) NULL;
     }
 }
 
     }
 }
 
@@ -1776,6 +1775,17 @@ refresh_pacman (ModeInfo * mi)
     pacman_tick (mi);
 }
 
     pacman_tick (mi);
 }
 
+ENTRYPOINT void
+reshape_pacman(ModeInfo * mi, int width, int height)
+{
+    pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)];
+    pp->width = width;
+    pp->height = height;
+    MI_CLEARWINDOW (mi);
+    /* repopulate (mi); */
+    drawlevel (mi);
+}
+
 #ifndef STANDALONE
 /* Callback to change level. */
 ENTRYPOINT void
 #ifndef STANDALONE
 /* Callback to change level. */
 ENTRYPOINT void
index fbe1eae0f98e95ce3294aec6f7ae0660deb128f6..652ee3142e60183575180395bb602c2bcbfafa52 100644 (file)
@@ -223,8 +223,8 @@ typedef struct
 
 } pacmangamestruct;
 
 
 } pacmangamestruct;
 
-extern pacmangamestruct *pacmangames;
-extern Bool trackmouse;
+extern pacmangamestruct *pacman_games;
+extern Bool pacman_trackmouse;
 
 typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1];
 
 
 typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1];
 
index 070f9aa5fe3debb997e419605432339a95ff5614..b85bd96e816fafa32e32e09f90fd022e15b196a4 100644 (file)
@@ -67,9 +67,9 @@ ghost_get_posdirs (pacmangamestruct * pp, int *posdirs, ghoststruct * g)
         /* check if possible direction */
         can_go_in = (g->aistate == goingout || g->aistate == goingin);
         if ((posdirs[i] =
         /* check if possible direction */
         can_go_in = (g->aistate == goingout || g->aistate == goingin);
         if ((posdirs[i] =
-             check_pos (pp, g->row + dirvecs[i].dy,
-                        g->col + dirvecs[i].dx,
-                        can_go_in)) == True) {
+             pacman_check_pos (pp, g->row + dirvecs[i].dy,
+                               g->col + dirvecs[i].dx,
+                               can_go_in)) == True) {
             nrdirs++;
         }
     }
             nrdirs++;
         }
     }
@@ -245,7 +245,7 @@ clear_dir ( ghoststruct *g ){
 static int 
 found_jail ( int col, int row ){
     int cx, cy;
 static int 
 found_jail ( int col, int row ){
     int cx, cy;
-    get_jail_opening ( &cx, &cy );
+    pacman_get_jail_opening ( &cx, &cy );
     cy += 1;
     if (row == cy && col == cx )
         return 1;
     cy += 1;
     if (row == cy && col == cx )
         return 1;
@@ -261,7 +261,7 @@ move_ghost ( pacmangamestruct * pp,
     int idx = (int)ps;
     int tr = row + dirvecs[idx].dx;
     int tc = col + dirvecs[idx].dy;
     int idx = (int)ps;
     int tr = row + dirvecs[idx].dx;
     int tc = col + dirvecs[idx].dy;
-    if ( check_pos ( pp, tr, tc, True )){
+    if ( pacman_check_pos ( pp, tr, tc, True )){
         *new_row = tr;
         *new_col = tc;
         return True;
         *new_row = tr;
         *new_col = tc;
         return True;
@@ -332,7 +332,7 @@ find_home ( pacmangamestruct *pp, ghoststruct *g ){
     c = tmp_ghost->col;
     if ( ! recur_back_track ( pp, tmp_ghost, r, c ) ){        
         fprintf(stderr, "Could not find way home.#@$?\n");
     c = tmp_ghost->col;
     if ( ! recur_back_track ( pp, tmp_ghost, r, c ) ){        
         fprintf(stderr, "Could not find way home.#@$?\n");
-        get_jail_opening ( &cx, &cy);
+        pacman_get_jail_opening ( &cx, &cy);
         fprintf(stderr, "Jail was at (%d%d)\n", cx,cy);   
     }
     for ( i = 0; i < GHOST_TRACE; i++ ){
         fprintf(stderr, "Jail was at (%d%d)\n", cx,cy);   
     }
     for ( i = 0; i < GHOST_TRACE; i++ ){
@@ -388,7 +388,7 @@ pac_dot_vec (pacmangamestruct * pp, pacmanstruct * p, long *vx, long *vy)
 
     for (y = by; y < ey; y++)
         for (x = bx; x < ex; x++)
 
     for (y = by; y < ey; y++)
         for (x = bx; x < ex; x++)
-            if (check_dot (pp, x, y) == 1) {
+            if (pacman_check_dot (pp, x, y) == 1) {
                 dx = (long) x - (long) (p->col);
                 dy = (long) y - (long) (p->row);
                 dist = dx * dx + dy * dy;
                 dx = (long) x - (long) (p->col);
                 dy = (long) y - (long) (p->row);
                 dist = dx * dx + dy * dy;
@@ -451,8 +451,8 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs)
             posdirs[i] = 0;
         }
         else if ((posdirs[i] =
             posdirs[i] = 0;
         }
         else if ((posdirs[i] =
-                  check_pos (pp, p->row + dirvecs[i].dy,
-                             p->col + dirvecs[i].dx, 0)) == 1)
+                  pacman_check_pos (pp, p->row + dirvecs[i].dy,
+                                    p->col + dirvecs[i].dx, 0)) == 1)
             nrdirs++;
     }
     p->state_change = 0;
             nrdirs++;
     }
     p->state_change = 0;
@@ -462,7 +462,7 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs)
 
 /* Clears the trace of vectors. */
 void
 
 /* Clears the trace of vectors. */
 void
-pac_clear_trace (pacmanstruct * p)
+pacman_clear_trace (pacmanstruct * p)
 {
     int i;
 
 {
     int i;
 
@@ -517,14 +517,14 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         4 * 4 && p->aistate == ps_eating) {
         p->aistate = ps_hiding;
         p->state_change = 1;
         4 * 4 && p->aistate == ps_eating) {
         p->aistate = ps_hiding;
         p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     if (prox > 6 * 6 && p->aistate == ps_hiding) {
         p->aistate = ps_eating;
         if (p->justate == 0)
             p->state_change = 1;
     }
 
     if (prox > 6 * 6 && p->aistate == ps_hiding) {
         p->aistate = ps_eating;
         if (p->justate == 0)
             p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     if (prox < 3 * 3)
     }
 
     if (prox < 3 * 3)
@@ -567,7 +567,7 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
         }
     }
     else
         }
     }
     else
@@ -580,8 +580,8 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p)
         if (posdirs[i] == 0)
             continue;
         score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
         if (posdirs[i] == 0)
             continue;
         score = dirvecs[i].dx * vx + dirvecs[i].dy * vy;
-        if (check_dot (pp, p->col + dirvecs[i].dx,
-                       p->row + dirvecs[i].dy) == 1) {
+        if (pacman_check_dot (pp, p->col + dirvecs[i].dx,
+                              p->row + dirvecs[i].dy) == 1) {
             if (dotfound == 0) {
                 highest = score;
                 dir = i;
             if (dotfound == 0) {
                 highest = score;
                 dir = i;
@@ -647,7 +647,7 @@ pac_chasing (pacmangamestruct * pp, pacmanstruct * p)
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
         if (p->roundscore >= 12) {
             p->roundscore = 0;
             p->aistate = ps_random;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
         }
     }
     else
         }
     }
     else
@@ -674,7 +674,7 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p)
     if (NRAND (20) == 0) {
         p->aistate = ps_eating;
         p->state_change = 1;
     if (NRAND (20) == 0) {
         p->aistate = ps_eating;
         p->state_change = 1;
-        pac_clear_trace (p);
+        pacman_clear_trace (p);
     }
 
     nrdirs = pac_get_posdirs (pp, p, posdirs);
     }
 
     nrdirs = pac_get_posdirs (pp, p, posdirs);
@@ -683,12 +683,12 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p)
         if (posdirs[i] == 0)
             continue;
         lastdir = i;
         if (posdirs[i] == 0)
             continue;
         lastdir = i;
-        if (check_dot (pp, p->col + dirvecs[i].dx,
-                       p->row + dirvecs[i].dy) == 1) {
+        if (pacman_check_dot (pp, p->col + dirvecs[i].dx,
+                              p->row + dirvecs[i].dy) == 1) {
             dir = i;
             p->aistate = ps_eating;
             p->state_change = 1;
             dir = i;
             p->aistate = ps_eating;
             p->state_change = 1;
-            pac_clear_trace (p);
+            pacman_clear_trace (p);
             break;
         }
         else if (NRAND (nrdirs) == 0)
             break;
         }
         else if (NRAND (nrdirs) == 0)
@@ -769,7 +769,7 @@ pac_trackmouse (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
 
 /* Calls correct state function, and changes between states. */
 void
 
 /* Calls correct state function, and changes between states. */
 void
-ghost_update (pacmangamestruct * pp, ghoststruct * g)
+pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g)
 {
 
     if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) {
 {
 
     if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) {
@@ -833,7 +833,7 @@ ghost_update (pacmangamestruct * pp, ghoststruct * g)
 
 /* Calls correct pacman state function. */
 void
 
 /* Calls correct pacman state function. */
 void
-pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
+pacman_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
 {
     if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) {
         p->row = p->nextrow;
 {
     if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) {
         p->row = p->nextrow;
@@ -843,15 +843,15 @@ pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p)
     if (pp->level[p->row * LEVWIDTH + p->col] == '.' ||
         pp->level[p->row * LEVWIDTH + p->col] == 'o') {
         pp->level[p->row * LEVWIDTH + p->col] = ' ';
     if (pp->level[p->row * LEVWIDTH + p->col] == '.' ||
         pp->level[p->row * LEVWIDTH + p->col] == 'o') {
         pp->level[p->row * LEVWIDTH + p->col] = ' ';
-        if (!trackmouse)
+        if (!pacman_trackmouse)
             p->justate = 1;
         pp->dotsleft--;
     }
             p->justate = 1;
         pp->dotsleft--;
     }
-    else if (!trackmouse) {
+    else if (!pacman_trackmouse) {
         p->justate = 0;
     }
 
         p->justate = 0;
     }
 
-    if (!(trackmouse && pac_trackmouse (mi, pp, p))) {
+    if (!(pacman_trackmouse && pac_trackmouse (mi, pp, p))) {
         /* update pacman */
         switch (p->aistate) {
         case ps_eating:
         /* update pacman */
         switch (p->aistate) {
         case ps_eating:
index 2958210cd631c41c42cea62d71ce4d6340858134..2488600a90b810d48d2508b39871ec556b30e62e 100644 (file)
@@ -24,9 +24,9 @@
 #ifndef __PACMAN_AI_H__
 #define __PACMAN_AI_H__
 
 #ifndef __PACMAN_AI_H__
 #define __PACMAN_AI_H__
 
-extern void ghost_update (pacmangamestruct * pp, ghoststruct * g);
-extern void pac_clear_trace (pacmanstruct * p);
-extern void pac_update (ModeInfo * mi, pacmangamestruct * pp,
+extern void pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g);
+extern void pacman_clear_trace (pacmanstruct * p);
+extern void pacman_update (ModeInfo * mi, pacmangamestruct * pp,
                         pacmanstruct * p);
 
 #endif /* __PACMAN_AI_H__ */
                         pacmanstruct * p);
 
 #endif /* __PACMAN_AI_H__ */
index 12e148f403380cb9d9df01740b512f15c5b6db3c..d617942cf4613c057aa03164052e9a7f5a79ebe7 100644 (file)
@@ -223,7 +223,7 @@ createjail (lev_t * level, const unsigned width, const unsigned height)
 }
 
 void
 }
 
 void
-get_jail_opening ( int *x, int *y)
+pacman_get_jail_opening ( int *x, int *y)
 {
     int xstart = LEVWIDTH / 2  - JAILWIDTH / 2;
     int ystart = LEVHEIGHT / 2 - JAILHEIGHT / 2;
 {
     int xstart = LEVWIDTH / 2  - JAILWIDTH / 2;
     int ystart = LEVHEIGHT / 2 - JAILHEIGHT / 2;
@@ -535,7 +535,7 @@ init_bonus_dots (pacmangamestruct *pp, lev_t * level)
 }
 
 int
 }
 
 int
-is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx)
+pacman_is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx)
 {
     int ret = False;
     int i;
 {
     int ret = False;
     int i;
@@ -557,21 +557,21 @@ check_bonus_idx (int idx)
 }
 
 int
 }
 
 int
-bonus_dot_eaten (pacmangamestruct *pp, int idx)
+pacman_bonus_dot_eaten (pacmangamestruct *pp, int idx)
 {
     check_bonus_idx (idx);
     return pp->bonus_dots[idx].eaten;
 }
 
 void
 {
     check_bonus_idx (idx);
     return pp->bonus_dots[idx].eaten;
 }
 
 void
-eat_bonus_dot (pacmangamestruct *pp, int idx)
+pacman_eat_bonus_dot (pacmangamestruct *pp, int idx)
 {
     check_bonus_idx (idx);
     pp->bonus_dots[idx].eaten = True;
 }
 
 void
 {
     check_bonus_idx (idx);
     pp->bonus_dots[idx].eaten = True;
 }
 
 void
-bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y)
+pacman_bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y)
 {
     check_bonus_idx (idx);
     *x = pp->bonus_dots[idx].x;
 {
     check_bonus_idx (idx);
     *x = pp->bonus_dots[idx].x;
@@ -595,7 +595,7 @@ frmtlevel (pacmangamestruct *pp, lev_t * level)
         for (x = 0; x < LEVWIDTH; x++) {
 
             if (checkset (level, x, y) == 0) {
         for (x = 0; x < LEVWIDTH; x++) {
 
             if (checkset (level, x, y) == 0) {
-                if (is_bonus_dot (pp, x, y, &idx)) {
+                if (pacman_is_bonus_dot (pp, x, y, &idx)) {
                     frmtlev[y][x] = BLOCK_DOT_BONUS;
                 }
                 else {
                     frmtlev[y][x] = BLOCK_DOT_BONUS;
                 }
                 else {
@@ -709,7 +709,7 @@ countdots (pacmangamestruct *pp)
 
 /* Creates a new level, and places that in the pacmangamestruct. */
 int
 
 /* Creates a new level, and places that in the pacmangamestruct. */
 int
-createnewlevel (pacmangamestruct *pp)
+pacman_createnewlevel (pacmangamestruct *pp)
 {
     lev_t *level;
     unsigned dirvec[1] = { GO_UP };
 {
     lev_t *level;
     unsigned dirvec[1] = { GO_UP };
@@ -749,7 +749,7 @@ createnewlevel (pacmangamestruct *pp)
 
 /* Checks if a position is allowable for ghosts/pacs to enter. */
 int
 
 /* Checks if a position is allowable for ghosts/pacs to enter. */
 int
-check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
+pacman_check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
 {
     if ((pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) ||
         (pp->level[y * LEVWIDTH + x] == BLOCK_EMPTY) ||
 {
     if ((pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) ||
         (pp->level[y * LEVWIDTH + x] == BLOCK_EMPTY) ||
@@ -762,7 +762,7 @@ check_pos (pacmangamestruct * pp, int y, int x, int ghostpass)
 
 /* Checks if there is a dot on the specified position in the level. */
 int
 
 /* Checks if there is a dot on the specified position in the level. */
 int
-check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y)
+pacman_check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y)
 {
     if (x >= LEVWIDTH || y >= LEVHEIGHT)
         return 0;
 {
     if (x >= LEVWIDTH || y >= LEVHEIGHT)
         return 0;
index 697a6b0c5834c69c21f5f7f0199d8eeb7b62524b..0eccc3383e4348fc7337efb531bd787930989672 100644 (file)
 /*   int x, y; */
 /* } XY; */
 
 /*   int x, y; */
 /* } XY; */
 
-extern int createnewlevel (pacmangamestruct *);
-extern int check_pos (pacmangamestruct *, int y, int x, int ghostpass);
-extern int check_dot (pacmangamestruct *, unsigned int x, unsigned int y);
-extern int is_bonus_dot (pacmangamestruct *, int x, int y, int *idx);
-extern int bonus_dot_eaten (pacmangamestruct *, int idx);
-extern void eat_bonus_dot (pacmangamestruct *, int idx);
-extern void bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y);
-extern void get_jail_opening (int *x, int *y);
+extern int pacman_createnewlevel (pacmangamestruct *);
+extern int pacman_check_pos (pacmangamestruct *, int y, int x, int ghostpass);
+extern int pacman_check_dot (pacmangamestruct *,
+                             unsigned int x, unsigned int y);
+extern int pacman_is_bonus_dot (pacmangamestruct *, int x, int y, int *idx);
+extern int pacman_bonus_dot_eaten (pacmangamestruct *, int idx);
+extern void pacman_eat_bonus_dot (pacmangamestruct *, int idx);
+extern void pacman_bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y);
+extern void pacman_get_jail_opening (int *x, int *y);
 #endif /* __PACMAN_LEVEL_H__ */
 #endif /* __PACMAN_LEVEL_H__ */
index 721ee01600f07eb3ef1a622c3cbfd6bb8608335f..0707422bbaac5bf4591c2ccba260d08d43d261a1 100644 (file)
@@ -949,6 +949,7 @@ static void
 penetrate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 penetrate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  XClearWindow (dpy, window);
 }
 
 static Bool
 }
 
 static Bool
index eedf0fdffe9aee95351b756e40c596e6fc85627d..6b07d8ca65e722e6e462b91681167cf83b890ac8 100644 (file)
@@ -89,7 +89,6 @@ If one of these are hit penrose will reinitialize.
                                        "*fpsSolid: true \n" \
 
 # define refresh_penrose 0
                                        "*fpsSolid: true \n" \
 
 # define refresh_penrose 0
-# define reshape_penrose 0
 # define penrose_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # define penrose_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -1329,6 +1328,14 @@ draw_penrose(ModeInfo * mi)
 }
 
 
 }
 
 
+ENTRYPOINT void
+reshape_penrose(ModeInfo * mi, int width, int height)
+{
+       tiling_c   *tp = &tilings[MI_SCREEN(mi)];
+       tp->width = width;
+       tp->height = height;
+}
+
 /* Total clean-up. */
 ENTRYPOINT void
 release_penrose(ModeInfo * mi)
 /* Total clean-up. */
 ENTRYPOINT void
 release_penrose(ModeInfo * mi)
index 336dd5120e69d1a3afc6b8ef4d3679a43f886d18..af01a99d32aa2f5746c35356be54ef0c82893cec 100644 (file)
@@ -940,6 +940,8 @@ static void
 piecewise_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 piecewise_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  XGetWindowAttributes(st->dpy, st->window, &st->xgwa);
 }
 
 static Bool
 }
 
 static Bool
index 69c7b2590e9e49f55de42367972f8941e5422349..c7b84a74a42146f5a3f9f6409bf42ba402e3551c 100644 (file)
@@ -39,7 +39,6 @@ static const char sccsid[] = "@(#)polyominoes.c 5.01 2000/12/18 xlockmore";
                                        "*ncolors: 64 \n" \
                                        "*fpsSolid: true \n" \
 
                                        "*ncolors: 64 \n" \
                                        "*fpsSolid: true \n" \
 
-# define reshape_polyominoes 0
 # define polyominoes_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
 # define polyominoes_handle_event 0
 # define SMOOTH_COLORS
 # include "xlockmore.h"                /* in xscreensaver distribution */
@@ -2351,6 +2350,13 @@ draw_polyominoes (ModeInfo * mi)
     sp->wait = 0;
 }
 
     sp->wait = 0;
 }
 
+ENTRYPOINT void
+reshape_polyominoes(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_polyominoes (mi);
+}
+
 ENTRYPOINT void
 release_polyominoes(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_polyominoes(ModeInfo * mi)
 {
index 0bea52ef6c9145aff1b4043d9bf2538d6b76b983..15cb61b4a6f36cc1219987811e3c74250f3ecb21 100644 (file)
@@ -187,6 +187,36 @@ static void
 popsquares_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 popsquares_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  int x, y;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  st->sw = st->xgwa.width / st->subdivision;
+  st->sh = st->xgwa.height / st->subdivision;
+  st->gw = st->sw ? st->xgwa.width / st->sw : 0;
+  st->gh = st->sh ? st->xgwa.height / st->sh : 0;
+  st->nsquares = st->gw * st->gh;
+  free (st->squares);
+  st->squares = (square *) calloc (st->nsquares, sizeof(square));
+
+  for (y = 0; y < st->gh; y++)
+    for (x = 0; x < st->gw; x++) 
+      {
+        square *s = (square *) &st->squares[st->gw * y + x];
+        s->w = st->sw;
+        s->h = st->sh;
+        s->x = x * st->sw;
+        s->y = y * st->sh;
+      }
+
+  randomize_square_colors(st->squares, st->nsquares, st->ncolors);
+
+  if (st->dbuf) {
+    XFreePixmap (dpy, st->ba);
+    XFreePixmap (dpy, st->bb);
+    st->ba = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth);
+    st->bb = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth);
+    st->b = st->ba;
+  }
 }
 
 static Bool
 }
 
 static Bool
index dab702f22336b87dd315333a7c35ef30e833e6c1..5e7eedae7aa321198355fa28422e956dea637d04 100644 (file)
@@ -41,7 +41,6 @@ static const char sccsid[] = "@(#)sierpinski.c        5.00 2000/11/01 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define BRIGHT_COLORS
                                        "*fpsSolid: true \n" \
 
 # define BRIGHT_COLORS
-# define reshape_sierpinski 0
 # define sierpinski_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define sierpinski_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -200,6 +199,13 @@ draw_sierpinski(ModeInfo * mi)
                startover(mi);
 }
 
                startover(mi);
 }
 
+ENTRYPOINT void
+reshape_sierpinski(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_sierpinski (mi);
+}
+
 ENTRYPOINT void
 release_sierpinski(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_sierpinski(ModeInfo * mi)
 {
index a44e11531b792a625ef384e1567c4daacf69be9c..69aa10fc3723ea7a3a489ab7b7ae8bd0029b5430 100644 (file)
@@ -425,6 +425,16 @@ static void
 slidescreen_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 slidescreen_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->max_width = w;
+  st->max_height = h;
+  if (! st->img_loader) {
+    XWindowAttributes xgwa;
+    XGetWindowAttributes (st->dpy, st->window, &xgwa);
+    st->img_loader = load_image_async_simple (0, xgwa.screen, st->window,
+                                              st->window, 0, 0);
+    st->start_time = time ((time_t) 0);
+  }
 }
 
 static Bool
 }
 
 static Bool
index 96a880e57fda2f1434858ca88d6fbd29bde90725..5c67082dad498be231ed5cdbe16c411be053d737 100644 (file)
@@ -1538,6 +1538,16 @@ static void
 speedmine_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 speedmine_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
+  if (st->dbuf != st->window) {
+      XWindowAttributes xgwa;
+      XGetWindowAttributes (st->dpy, st->window, &xgwa);
+      XFreePixmap (dpy, st->dbuf);
+      st->dbuf = XCreatePixmap (st->dpy, st->window, 
+                                st->width, st->height, xgwa.depth);
+  }
 }
 
 static Bool
 }
 
 static Bool
index 7dff6d8ae1666133daf78a4ffc3ad8bea9bef374..2a0b0fd29bb61016afe8abe1ed8dddb8925c8f38 100644 (file)
@@ -107,6 +107,28 @@ do_worm(struct state *st, struct worm *w)
     w->v = w->v % st->height;
 }
 
     w->v = w->v % st->height;
 }
 
+static void
+squiral_init_1 (struct state *st)
+{
+    int i;
+    if (st->worms) free (st->worms);
+    if (st->fill) free (st->fill);
+
+    st->worms=calloc(st->count, sizeof(struct worm));
+    st->fill=calloc(st->width*st->height, sizeof(int));
+
+    st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1;
+    st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0;
+    for(i=0;i<st->count;i++) {
+       st->worms[i].h=R(st->width);
+       st->worms[i].v=R(st->height);
+       st->worms[i].s=R(4)+4*PROB(st->handedness);
+       st->worms[i].c=R(st->ncolors);
+       if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; }
+       else st->worms[i].cc=0;
+    }
+}
+
 static void *
 squiral_init (Display *dpy, Window window)
 {
 static void *
 squiral_init (Display *dpy, Window window)
 {
@@ -115,7 +137,6 @@ squiral_init (Display *dpy, Window window)
     Colormap cmap;
     XWindowAttributes xgwa;
     Bool writeable = False;
     Colormap cmap;
     XWindowAttributes xgwa;
     Bool writeable = False;
-    int i;
 
     st->dpy = dpy;
     st->window = window;
 
     st->dpy = dpy;
     st->window = window;
@@ -167,19 +188,7 @@ squiral_init (Display *dpy, Window window)
     if(st->worms) free(st->worms);
     if(st->fill)  free(st->fill);
 
     if(st->worms) free(st->worms);
     if(st->fill)  free(st->fill);
 
-    st->worms=calloc(st->count, sizeof(struct worm));
-    st->fill=calloc(st->width*st->height, sizeof(int));
-
-    st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1;
-    st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0;
-    for(i=0;i<st->count;i++) {
-       st->worms[i].h=R(st->width);
-       st->worms[i].v=R(st->height);
-       st->worms[i].s=R(4)+4*PROB(st->handedness);
-       st->worms[i].c=R(st->ncolors);
-       if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; }
-       else st->worms[i].cc=0;
-    }
+    squiral_init_1 (st);
 
     return st;
 }
 
     return st;
 }
@@ -219,6 +228,11 @@ static void
 squiral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 squiral_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width  = w;
+  st->height = h;
+  squiral_init_1 (st);
+  XClearWindow (dpy, window);
 }
 
 static Bool
 }
 
 static Bool
index 2ba693c0811a18ca032a0e8b9eb18503fced0b16..071dccb6f83819f4f60d37f6d911b5691cd74eed 100644 (file)
@@ -493,6 +493,10 @@ static void
 starfish_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 starfish_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  free_starfish (st->starfish);
+  st->starfish = 0;
+  st->starfish = reset_starfish (st);
 }
 
 static Bool
 }
 
 static Bool
index eba88a90c08f7c53c27b5eb55884373b05afe685..604f471b9af5d7e6125f55e10d3e066b15122d85 100644 (file)
@@ -42,7 +42,6 @@ static const char sccsid[] = "@(#)strange.c   5.00 2000/11/01 xlockmore";
 
 # define SMOOTH_COLORS
 # define refresh_strange 0
 
 # define SMOOTH_COLORS
 # define refresh_strange 0
-# define reshape_strange 0
 # define strange_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
 # define strange_handle_event 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -142,7 +141,7 @@ typedef struct _ATTRACTOR {
 static ATTRACTOR *Root = (ATTRACTOR *) NULL; 
 
 #ifdef useAccumulator
 static ATTRACTOR *Root = (ATTRACTOR *) NULL; 
 
 #ifdef useAccumulator
-XColor* cols;
+static XColor* cols;
 #endif
 
 #ifdef POINTS_HISTORY
 #endif
 
 #ifdef POINTS_HISTORY
@@ -663,6 +662,13 @@ init_strange(ModeInfo * mi)
        XSetGraphicsExposures(display, MI_GC(mi), False);
 }
 
        XSetGraphicsExposures(display, MI_GC(mi), False);
 }
 
+ENTRYPOINT void
+reshape_strange(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_strange (mi);
+}
+
 /***************************************************************/
 
 ENTRYPOINT void
 /***************************************************************/
 
 ENTRYPOINT void
index 5a3d97a2a5dcabf626fac89523a6f359d9ebab0c..ba959ac692045fc483901291d73a469433863312 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)swirl.c     4.00 97/01/01 xlockmore";
 
 # define SMOOTH_COLORS
 # define WRITABLE_COLORS
 
 # define SMOOTH_COLORS
 # define WRITABLE_COLORS
-# define reshape_swirl 0
 # define swirl_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 # ifdef HAVE_XSHM_EXTENSION
 # define swirl_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 # ifdef HAVE_XSHM_EXTENSION
@@ -1433,6 +1432,13 @@ draw_swirl(ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_swirl(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_swirl (mi);
+}
+
 /****************************************************************/
 
 ENTRYPOINT void
 /****************************************************************/
 
 ENTRYPOINT void
index e074ab829040fc30e898835ee0cd480838c84bce..e7bbf6ddf360b24935a98aeee59750b3077ae945 100644 (file)
@@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)thornbird.c 5.00 2000/11/01 xlockmore";
                                         "*fpsSolid: true    \n" \
 
 # define BRIGHT_COLORS
                                         "*fpsSolid: true    \n" \
 
 # define BRIGHT_COLORS
-# define reshape_thornbird 0
 # define thornbird_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define thornbird_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -250,6 +249,13 @@ draw_thornbird(ModeInfo * mi)
        hp->inc++;
 }
 
        hp->inc++;
 }
 
+ENTRYPOINT void
+reshape_thornbird(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_thornbird (mi);
+}
+
 ENTRYPOINT void
 release_thornbird(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_thornbird(ModeInfo * mi)
 {
index 48a8b20d67c86090fe53a07d2e1509a78a7d4c9b..1a93de257dd59fa4aba3d9e6cb363dec9d45e973 100644 (file)
@@ -51,7 +51,6 @@ static const char sccsid[] = "@(#)triangle.c  4.04 97/07/28 xlockmore";
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
                                        "*fpsSolid: true \n" \
 
 # define SMOOTH_COLORS
-# define reshape_triangle 0
 # define triangle_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
 # define triangle_handle_event 0
 # include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
@@ -345,6 +344,13 @@ draw_triangle (ModeInfo * mi)
        }
 }
 
        }
 }
 
+ENTRYPOINT void
+reshape_triangle(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_triangle (mi);
+}
+
 ENTRYPOINT void
 release_triangle(ModeInfo * mi)
 {
 ENTRYPOINT void
 release_triangle(ModeInfo * mi)
 {
index b23b081de89f040add001cad7cbb290ed6600bb2..f21e559966cce3da67d434947e2533320ec7d2d8 100644 (file)
@@ -508,6 +508,10 @@ static void
 truchet_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 truchet_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width = w;
+  st->height = h;
+  XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
 }
 
 static Bool
 }
 
 static Bool
index b96d3dc8e4b84f585b47dc761b7f899543df9a57..d1ef57198af245212cfc971fa17e2c4998507e67 100644 (file)
@@ -807,6 +807,11 @@ static void
 vermiculate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 vermiculate_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->wid = w;
+  st->hei = h;
+  free (st->point);
+  st->point = (unsigned char *) calloc (1, st->wid * st->hei);
 }
 
 static Bool
 }
 
 static Bool
index 6b8819a9ae0fb47d2654951694c70549e3994069..8fa8995ae043b9eec72b5473c8356b3c57b378c2 100644 (file)
@@ -210,6 +210,11 @@ static void
 wander_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 wander_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->width  = w / st->size;
+  st->height = h / st->size;
+  st->width_1  = st->width - 1;
+  st->height_1 = st->height - 1;
 }
 
 static Bool
 }
 
 static Bool
index 47939ffef11de9484ff6ab2545347538eab872b3..566c4187fd87287080e7b0ad4b40d1846809cd05 100644 (file)
@@ -463,6 +463,9 @@ static void
 whirlwindwarp_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 whirlwindwarp_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->scrwid = w;
+  st->scrhei = h;
 }
 
 static Bool
 }
 
 static Bool
index cfc4f5a5e5a19b7f0fa8de159d1d144753bd0587..02587f00b37d12dd7d1ccac1f1b360e17b16f69d 100644 (file)
@@ -1237,7 +1237,6 @@ EndRubberBand(struct state *st, image_data_t *data, XEvent *event)
   data->p_min += diff * delta;
   delta = (double)(st->width - bot.x) / (double)st->width;
   data->p_max -= diff * delta;
   data->p_min += diff * delta;
   delta = (double)(st->width - bot.x) / (double)st->width;
   data->p_max -= diff * delta;
-  fflush(stdout);
   set_new_params(st, data);
 }
 
   set_new_params(st, data);
 }
 
index 9b9faef799d9b53658c5c9bbade18c6a6cb63def..f3b8184800ee07973e504d548b565e148eb867d0 100644 (file)
@@ -1196,6 +1196,12 @@ static void
 xrayswarm_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
 xrayswarm_reshape (Display *dpy, Window window, void *closure, 
                  unsigned int w, unsigned int h)
 {
+  struct state *st = (struct state *) closure;
+  st->xsize = w;
+  st->ysize = h;
+  st->xc = st->xsize >> 1;
+  st->yc = st->ysize >> 1;
+  st->maxy = st->ysize/(float)st->xsize;
 }
 
 static Bool
 }
 
 static Bool
index 4b2ebc3ccf5a213df41b18da17ee362ea7678d34..735634f49bc9c9504ce2b74a96e44cddba39a6b5 100644 (file)
@@ -368,7 +368,8 @@ POTFILES: POTFILES.in
            && chmod a-w $@-t \
            && mv $@-t $@ )
 
            && chmod a-w $@-t \
            && mv $@-t $@ )
 
-Makefile: stamp-it
+# jwz: depending on stamp-it breaks distclean.
+Makefile:
        @if test ! -f $@; then \
                rm -f stamp-it; \
                $(MAKE) stamp-it; \
        @if test ! -f $@; then \
                rm -f stamp-it; \
                $(MAKE) stamp-it; \
index 2adfd34ebaeb1392dedcc11f2b2acaf17fe51204..7743e54c4abe04ea88cad4a7737c108396fefe2a 100644 (file)
@@ -1,4 +1,4 @@
-# Auto-generated: Sun May 20 16:02:50 PDT 2012
+# Auto-generated: Tue Jul  3 14:23:31 PDT 2012
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
 driver/demo-Gtk-conf.c
 driver/demo-Gtk-support.c
 driver/demo-Gtk-widgets.c
index 95ce08a79d067d2e66b4548122ec3ed702f95d5f..f6cc10b7d4bc8081604341598bfb4e5971321f2f 100644 (file)
@@ -249,6 +249,7 @@ grabclient.o: $(srcdir)/grabscreen.h
 grabclient.o: $(srcdir)/resources.h
 grabclient.o: $(srcdir)/utils.h
 grabclient.o: $(srcdir)/vroot.h
 grabclient.o: $(srcdir)/resources.h
 grabclient.o: $(srcdir)/utils.h
 grabclient.o: $(srcdir)/vroot.h
+grabclient.o: $(srcdir)/yarandom.h
 grabscreen.o: $(srcdir)/colors.h
 grabscreen.o: ../config.h
 grabscreen.o: $(srcdir)/grabscreen.h
 grabscreen.o: $(srcdir)/colors.h
 grabscreen.o: ../config.h
 grabscreen.o: $(srcdir)/grabscreen.h
index a0a19f34dbf53286dbbcd8d77d2b8490b5468e8b..58d506efd888ac9a3b7c7a06fdbd91aacad72ab5 100644 (file)
@@ -21,6 +21,7 @@
 #include "utils.h"
 #include "grabscreen.h"
 #include "resources.h"
 #include "utils.h"
 #include "grabscreen.h"
 #include "resources.h"
+#include "yarandom.h"
 
 #ifdef HAVE_COCOA
 # include "jwxyz.h"
 
 #ifdef HAVE_COCOA
 # include "jwxyz.h"
@@ -511,6 +512,21 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
 
 #else  /* HAVE_COCOA */
 
 
 #else  /* HAVE_COCOA */
 
+struct pipe_closure {
+  FILE *pipe;
+  XtInputId id;
+  Screen *screen;
+  Window xwindow;
+  Drawable drawable;
+  char *directory;
+  void (*callback) (Screen *, Window, Drawable,
+                    const char *name, XRectangle *geom,
+                    void *closure);
+  void *closure;
+};
+
+# ifndef USE_IPHONE
+
 /* Gets the name of an image file to load by running xscreensaver-getimage-file
    at the end of a pipe.  This can be very slow!
  */
 /* Gets the name of an image file to load by running xscreensaver-getimage-file
    at the end of a pipe.  This can be very slow!
  */
@@ -539,20 +555,6 @@ open_image_name_pipe (const char *dir)
 }
 
 
 }
 
 
-struct pipe_closure {
-  FILE *pipe;
-  XtInputId id;
-  Screen *screen;
-  Window xwindow;
-  Drawable drawable;
-  char *directory;
-  void (*callback) (Screen *, Window, Drawable,
-                    const char *name, XRectangle *geom,
-                    void *closure);
-  void *closure;
-};
-
-
 static void
 pipe_cb (XtPointer closure, int *source, XtInputId *id)
 {
 static void
 pipe_cb (XtPointer closure, int *source, XtInputId *id)
 {
@@ -626,6 +628,51 @@ pipe_cb (XtPointer closure, int *source, XtInputId *id)
 }
 
 
 }
 
 
+# else  /* USE_IPHONE */
+
+/* Callback for ios_load_random_image(), called after we have loaded an
+   image from the iOS device's Photo Library.  See iosgrabimage.m.
+ */
+static void
+ios_load_random_image_cb (void *uiimage, const char *filename, void *closure)
+{
+  struct pipe_closure *clo2 = (struct pipe_closure *) closure;
+  Display *dpy = DisplayOfScreen (clo2->screen);
+  XRectangle geom;
+
+  if (uiimage)
+    {
+      jwxyz_draw_NSImage_or_CGImage (DisplayOfScreen (clo2->screen), 
+                                     clo2->drawable,
+                                     True, uiimage, &geom,
+                                     0);
+    }
+  else  /* Probably means no images in the gallery. */
+    {
+      XWindowAttributes xgwa;
+      Window r;
+      int x, y;
+      unsigned int w, h, bbw, d;
+      XGetWindowAttributes (dpy, clo2->xwindow, &xgwa);
+      XGetGeometry (dpy, clo2->drawable, &r, &x, &y, &w, &h, &bbw, &d);
+      draw_colorbars (clo2->screen, xgwa.visual, clo2->drawable, xgwa.colormap,
+                      0, 0, w, h);
+      geom.x = geom.y = 0;
+      geom.width = w;
+      geom.height = h;
+      filename = 0;
+    }
+
+  clo2->callback (clo2->screen, clo2->xwindow, clo2->drawable,
+                  filename, &geom, clo2->closure);
+  clo2->callback = 0;
+  if (clo2->directory) free (clo2->directory);
+  free (clo2);
+}
+
+# endif /* USE_IPHONE */
+
+
 static void
 osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
                            const char *dir,
 static void
 osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
                            const char *dir,
@@ -635,7 +682,7 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
                                              void *closure),
                        void *closure)
 {
                                              void *closure),
                        void *closure)
 {
-#if 0  /* do it synchronously */
+# if 0 /* do it synchronously */
 
   FILE *pipe = open_image_name_pipe (dir);
   char buf[10240];
 
   FILE *pipe = open_image_name_pipe (dir);
   char buf[10240];
@@ -655,22 +702,29 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable,
   }
   callback (screen, xwindow, drawable, buf, &geom, closure);
 
   }
   callback (screen, xwindow, drawable, buf, &geom, closure);
 
-#else  /* do it asynchronously */
+# else /* do it asynchronously */
 
 
-  Display *dpy = DisplayOfScreen (screen);
   struct pipe_closure *clo2 = (struct pipe_closure *) calloc (1, sizeof(*clo2));
   struct pipe_closure *clo2 = (struct pipe_closure *) calloc (1, sizeof(*clo2));
-  clo2->directory = strdup (dir);
-  clo2->pipe = open_image_name_pipe (dir);
-  clo2->id = XtAppAddInput (XtDisplayToApplicationContext (dpy), 
-                            fileno (clo2->pipe),
-                            (XtPointer) (XtInputReadMask | XtInputExceptMask),
-                            pipe_cb, (XtPointer) clo2);
+
   clo2->screen = screen;
   clo2->xwindow = xwindow;
   clo2->drawable = drawable;
   clo2->callback = callback;
   clo2->closure = closure;
   clo2->screen = screen;
   clo2->xwindow = xwindow;
   clo2->drawable = drawable;
   clo2->callback = callback;
   clo2->closure = closure;
-#endif
+
+#  ifndef USE_IPHONE
+  clo2->directory = strdup (dir);
+  clo2->pipe = open_image_name_pipe (dir);
+  clo2->id = XtAppAddInput (XtDisplayToApplicationContext (
+                              DisplayOfScreen (screen)), 
+                            fileno (clo2->pipe),
+                            (XtPointer) (XtInputReadMask | XtInputExceptMask),
+                            pipe_cb, (XtPointer) clo2);
+#  else /* USE_IPHONE */
+  ios_load_random_image (ios_load_random_image_cb, clo2);
+#  endif /* USE_IPHONE */
+
+# endif
 }
 
 
 }
 
 
@@ -694,14 +748,6 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
   XRectangle geom_ret_2;
   char *name_ret_2 = 0;
   
   XRectangle geom_ret_2;
   char *name_ret_2 = 0;
   
-# ifdef USE_IPHONE
-  /* Currently, only screen-grabbing is implemented, not loading of
-     images from the iPhone Photo Library.  See osxgrabscreen.m.
-   */
-  deskp = True;
-  filep = False;
-# endif
-
   if (!drawable) abort();
 
   if (callback) {
   if (!drawable) abort();
 
   if (callback) {
@@ -729,11 +775,13 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable,
     geom_ret->height = xgwa.height;
   }
 
     geom_ret->height = xgwa.height;
   }
 
+# ifndef USE_IPHONE
   if (filep)
     dir = get_string_resource (dpy, "imageDirectory", "ImageDirectory");
 
   if (!dir || !*dir)
     filep = False;
   if (filep)
     dir = get_string_resource (dpy, "imageDirectory", "ImageDirectory");
 
   if (!dir || !*dir)
     filep = False;
+# endif /* ! USE_IPHONE */
 
   if (deskp && filep) {
     deskp = !(random() & 5);    /* if both, desktop 1/5th of the time */
 
   if (deskp && filep) {
     deskp = !(random() & 5);    /* if both, desktop 1/5th of the time */
index 97c46a77ca309b216df0fbb0f9f1880c9e7d4760..65e53412d428cc34f8405b1c006d82338dce5e62 100644 (file)
@@ -92,4 +92,11 @@ extern Bool osx_load_image_file (Screen *, Window, Drawable,
                                  const char *filename, XRectangle *geom_ret);
 #endif /* HAVE_COCOA */
 
                                  const char *filename, XRectangle *geom_ret);
 #endif /* HAVE_COCOA */
 
+#ifdef USE_IPHONE
+extern void ios_load_random_image (void (*callback) (void *uiimage,
+                                                     const char *filename,
+                                                     void *closure),
+                                   void *closure);
+#endif /* USE_IPHONE */
+
 #endif /* __GRABSCREEN_H__ */
 #endif /* __GRABSCREEN_H__ */
index f00788c9aac91cab4e4d51a429bc903ebedb08c0..ea951e2a764ea40c6e3548490b6566abdfa79a70 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
 static const char screensaver_id[] =
-       "@(#)xscreensaver 5.17 (22-Jun-2012), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 5.18 (03-Jul-2012), by Jamie Zawinski (jwz@jwz.org)";
index 920a05cd5af78501657d3f053c97f344eda70f36..bf8bb5623dd6e800f4eb2e6fa2b2ac8b73a9439b 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
 %define        name xscreensaver
-%define        version 5.17
+%define        version 5.18
 
 Summary:       X screen saver and locker
 Name:          %{name}
 
 Summary:       X screen saver and locker
 Name:          %{name}
index a167009fb91b9ca7b77d7d1dcddff1b0c7f6b9b5..bd824ab895f0502b55c9a5d13877ac553ce8e1a5 100644 (file)
                AF0FAF2709CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2809CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2909CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2709CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2809CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF0FAF2909CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
+               AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */; };
                AF1A17660D6D6EE3008AF328 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF1A17680D6D6EE3008AF328 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF1A177F0D6D6F3E008AF328 /* lcdscrub.c in Sources */ = {isa = PBXBuildFile; fileRef = AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */; };
                AF1A17660D6D6EE3008AF328 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; };
                AF1A17680D6D6EE3008AF328 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF1A177F0D6D6F3E008AF328 /* lcdscrub.c in Sources */ = {isa = PBXBuildFile; fileRef = AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */; };
                AF35E8900E63823600691F2F /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF35EB240E63829600691F2F /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; };
                AF35EB260E6382BA00691F2F /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; };
                AF35E8900E63823600691F2F /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF35EB240E63829600691F2F /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; };
                AF35EB260E6382BA00691F2F /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; };
+               AF39483E15A164680000FFCD /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; };
                AF3C714B0D624BF50030CC0D /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF3C715E0D624C600030CC0D /* hypnowheel.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3C715D0D624C600030CC0D /* hypnowheel.c */; };
                AF3C71600D624C7C0030CC0D /* hypnowheel.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF3C715F0D624C7C0030CC0D /* hypnowheel.xml */; };
                AF3C714B0D624BF50030CC0D /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF3C715E0D624C600030CC0D /* hypnowheel.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3C715D0D624C600030CC0D /* hypnowheel.c */; };
                AF3C71600D624C7C0030CC0D /* hypnowheel.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF3C715F0D624C7C0030CC0D /* hypnowheel.xml */; };
                AF51FD4115845FFC00E5741F /* iSaverRunner72.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */; };
                AF51FD4215845FFF00E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
                AF51FD431584600300E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
                AF51FD4115845FFC00E5741F /* iSaverRunner72.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */; };
                AF51FD4215845FFF00E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
                AF51FD431584600300E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; };
+               AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */ = {isa = PBXBuildFile; fileRef = AF561DF515969BC3007CA5ED /* iosgrabimage.m */; };
+               AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */; };
                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; };
                AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; };
                AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; };
                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; };
                AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; };
                AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; };
                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC7592F158D9A7A00C5458E /* iostextclient.m */; };
                AFCCCBB009BFE4B000353F4D /* rdbomb.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */; };
                AFCCCBB309BFE51900353F4D /* thornbird.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC259230988A469000655EE /* thornbird.xml */; };
                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC7592F158D9A7A00C5458E /* iostextclient.m */; };
                AFCCCBB009BFE4B000353F4D /* rdbomb.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */; };
                AFCCCBB309BFE51900353F4D /* thornbird.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC259230988A469000655EE /* thornbird.xml */; };
+               AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */ = {isa = PBXBuildFile; fileRef = AF77787609B653DC00EA3033 /* dnalogo.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF77787909B6545E00EA3033 /* dnalogo.xml */; };
+               AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B209937DCB00F3E977 /* polyhedra-gl.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B309937DCC00F3E977 /* polyhedra.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258F70988A469000655EE /* polyhedra.xml */; };
                AFCFF1D90CE4517C00C7D111 /* involute.c in Sources */ = {isa = PBXBuildFile; fileRef = AFE6A16A0CDD78EA002805BF /* involute.c */; };
                AFCFF1DA0CE4518B00C7D111 /* tube.c in Sources */ = {isa = PBXBuildFile; fileRef = AF480ED2098F652A00FB32B8 /* tube.c */; };
                AFCFF1DB0CE451A300C7D111 /* normals.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA55A93099336D800F3E977 /* normals.c */; };
                AFCFF1D90CE4517C00C7D111 /* involute.c in Sources */ = {isa = PBXBuildFile; fileRef = AFE6A16A0CDD78EA002805BF /* involute.c */; };
                AFCFF1DA0CE4518B00C7D111 /* tube.c in Sources */ = {isa = PBXBuildFile; fileRef = AF480ED2098F652A00FB32B8 /* tube.c */; };
                AFCFF1DB0CE451A300C7D111 /* normals.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA55A93099336D800F3E977 /* normals.c */; };
                AF0F46DC104E1809000A929C /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
                AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-text"; path = "driver/xscreensaver-text"; sourceTree = "<group>"; };
                AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-getimage-file"; path = "driver/xscreensaver-getimage-file"; sourceTree = "<group>"; };
                AF0F46DC104E1809000A929C /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
                AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-text"; path = "driver/xscreensaver-text"; sourceTree = "<group>"; };
                AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-getimage-file"; path = "driver/xscreensaver-getimage-file"; sourceTree = "<group>"; };
+               AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; };
                AF14EE300E3CEF1A004CBBD2 /* XScreenSaver.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = XScreenSaver.icns; path = OSX/XScreenSaver.icns; sourceTree = "<group>"; };
                AF1A17730D6D6EE3008AF328 /* XScreenSaver.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = XScreenSaver.saver; path = LCDscrub.saver; sourceTree = BUILT_PRODUCTS_DIR; };
                AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = lcdscrub.c; path = hacks/lcdscrub.c; sourceTree = "<group>"; };
                AF14EE300E3CEF1A004CBBD2 /* XScreenSaver.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = XScreenSaver.icns; path = OSX/XScreenSaver.icns; sourceTree = "<group>"; };
                AF1A17730D6D6EE3008AF328 /* XScreenSaver.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = XScreenSaver.saver; path = LCDscrub.saver; sourceTree = BUILT_PRODUCTS_DIR; };
                AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = lcdscrub.c; path = hacks/lcdscrub.c; sourceTree = "<group>"; };
                AF4FF4D00D52CC8400666F98 /* cubicgrid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cubicgrid.c; path = hacks/glx/cubicgrid.c; sourceTree = "<group>"; };
                AF4FF4D30D52CCAA00666F98 /* cubicgrid.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cubicgrid.xml; sourceTree = "<group>"; };
                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iSaverRunner.xib; path = OSX/iSaverRunner.xib; sourceTree = "<group>"; };
                AF4FF4D00D52CC8400666F98 /* cubicgrid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cubicgrid.c; path = hacks/glx/cubicgrid.c; sourceTree = "<group>"; };
                AF4FF4D30D52CCAA00666F98 /* cubicgrid.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cubicgrid.xml; sourceTree = "<group>"; };
                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iSaverRunner.xib; path = OSX/iSaverRunner.xib; sourceTree = "<group>"; };
+               AF561DF3159651A7007CA5ED /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
+               AF561DF515969BC3007CA5ED /* iosgrabimage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iosgrabimage.m; path = OSX/iosgrabimage.m; sourceTree = "<group>"; };
+               AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; };
                AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = hacks/glx/jwzgles.c; sourceTree = "<group>"; };
                AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = hacks/glx/jwzgles.h; sourceTree = "<group>"; };
                AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = hacks/glx/jwzglesI.h; sourceTree = "<group>"; };
                AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = hacks/glx/jwzgles.c; sourceTree = "<group>"; };
                AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = hacks/glx/jwzgles.h; sourceTree = "<group>"; };
                AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = hacks/glx/jwzglesI.h; sourceTree = "<group>"; };
                                AF918B96158FD0EA002B5D1E /* libjwxyz.a in Frameworks */,
                                AFEB9C3B1590054B003974F3 /* OpenGLES.framework in Frameworks */,
                                AFEB9C3915900514003974F3 /* UIKit.framework in Frameworks */,
                                AF918B96158FD0EA002B5D1E /* libjwxyz.a in Frameworks */,
                                AFEB9C3B1590054B003974F3 /* OpenGLES.framework in Frameworks */,
                                AFEB9C3915900514003974F3 /* UIKit.framework in Frameworks */,
+                               AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */,
                                AFEB9C3D15900558003974F3 /* Foundation.framework in Frameworks */,
                                AFEB9C401590056A003974F3 /* CoreGraphics.framework in Frameworks */,
                                AFEB9C3D15900558003974F3 /* Foundation.framework in Frameworks */,
                                AFEB9C401590056A003974F3 /* CoreGraphics.framework in Frameworks */,
+                               AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */,
                                AFEB9C411590056A003974F3 /* QuartzCore.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                                AFEB9C411590056A003974F3 /* QuartzCore.framework in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                080E96DDFE201D6D7F000001 /* libjwxyz */ = {
                        isa = PBXGroup;
                        children = (
                080E96DDFE201D6D7F000001 /* libjwxyz */ = {
                        isa = PBXGroup;
                        children = (
+                               AF561DF515969BC3007CA5ED /* iosgrabimage.m */,
                                AFC7592F158D9A7A00C5458E /* iostextclient.m */,
                                AFE1FD410981E32E00F7970E /* InvertedSlider.h */,
                                AFE1FD420981E32E00F7970E /* InvertedSlider.m */,
                                AFC7592F158D9A7A00C5458E /* iostextclient.m */,
                                AFE1FD410981E32E00F7970E /* InvertedSlider.h */,
                                AFE1FD420981E32E00F7970E /* InvertedSlider.m */,
                29B97314FDCFA39411CA2CEA /* xscreensaver */ = {
                        isa = PBXGroup;
                        children = (
                29B97314FDCFA39411CA2CEA /* xscreensaver */ = {
                        isa = PBXGroup;
                        children = (
-                               AF7E080315932A1600D81407 /* iSaverRunner29t.png */,
                                AF480AB9098C66E200FB32B8 /* SaverRunner */,
                                080E96DDFE201D6D7F000001 /* libjwxyz */,
                                AFE1FD520981E35400F7970E /* Utils */,
                                AF480AB9098C66E200FB32B8 /* SaverRunner */,
                                080E96DDFE201D6D7F000001 /* libjwxyz */,
                                AFE1FD520981E35400F7970E /* Utils */,
                                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */,
                                AF2D522513E954A0002AA818 /* SaverRunner.icns */,
                                AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */,
                                AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */,
                                AF2D522513E954A0002AA818 /* SaverRunner.icns */,
                                AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */,
+                               AF7E080315932A1600D81407 /* iSaverRunner29t.png */,
                                AF01295B157D5C2C00C396E1 /* iSaverRunner50.png */,
                                AF01295C157D5C2C00C396E1 /* iSaverRunner57.png */,
                                AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */,
                                AF01295B157D5C2C00C396E1 /* iSaverRunner50.png */,
                                AF01295C157D5C2C00C396E1 /* iSaverRunner57.png */,
                                AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */,
                                AFEB9C3815900514003974F3 /* UIKit.framework */,
                                AF0F46DC104E1809000A929C /* AppKit.framework */,
                                AF976ED30989BF59001F8B92 /* ScreenSaver.framework */,
                                AFEB9C3815900514003974F3 /* UIKit.framework */,
                                AF0F46DC104E1809000A929C /* AppKit.framework */,
                                AF976ED30989BF59001F8B92 /* ScreenSaver.framework */,
+                               AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */,
+                               AF561DF3159651A7007CA5ED /* AudioToolbox.framework */,
+                               AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */,
                                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
                                AF480DF1098F528500FB32B8 /* OpenGL.framework */,
                                AF480FE70990375900FB32B8 /* AGL.framework */,
                                1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
                                AF480DF1098F528500FB32B8 /* OpenGL.framework */,
                                AF480FE70990375900FB32B8 /* AGL.framework */,
                        buildActionMask = 2147483647;
                        files = (
                                AF91897E158FC00A002B5D1E /* iSaverRunner29.png in Resources */,
                        buildActionMask = 2147483647;
                        files = (
                                AF91897E158FC00A002B5D1E /* iSaverRunner29.png in Resources */,
+                               AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */,
                                AF91897F158FC00A002B5D1E /* iSaverRunner50.png in Resources */,
                                AF918980158FC00A002B5D1E /* iSaverRunner57.png in Resources */,
                                AF918981158FC00A002B5D1E /* iSaverRunner72.png in Resources */,
                                AF91897F158FC00A002B5D1E /* iSaverRunner50.png in Resources */,
                                AF918980158FC00A002B5D1E /* iSaverRunner57.png in Resources */,
                                AF918981158FC00A002B5D1E /* iSaverRunner72.png in Resources */,
                                AF918AE5158FC53D002B5D1E /* demon.xml in Resources */,
                                AF918AE6158FC53D002B5D1E /* discrete.xml in Resources */,
                                AF918AE7158FC53D002B5D1E /* distort.xml in Resources */,
                                AF918AE5158FC53D002B5D1E /* demon.xml in Resources */,
                                AF918AE6158FC53D002B5D1E /* discrete.xml in Resources */,
                                AF918AE7158FC53D002B5D1E /* distort.xml in Resources */,
+                               AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */,
                                AF918AE9158FC53D002B5D1E /* drift.xml in Resources */,
                                AF918AEA158FC53D002B5D1E /* endgame.xml in Resources */,
                                AF918AEB158FC53D002B5D1E /* engine.xml in Resources */,
                                AF918AE9158FC53D002B5D1E /* drift.xml in Resources */,
                                AF918AEA158FC53D002B5D1E /* endgame.xml in Resources */,
                                AF918AEB158FC53D002B5D1E /* engine.xml in Resources */,
                                AF918B1D158FC53D002B5D1E /* interference.xml in Resources */,
                                AF918B1E158FC53D002B5D1E /* intermomentary.xml in Resources */,
                                AF918B1F158FC53D002B5D1E /* jigglypuff.xml in Resources */,
                                AF918B1D158FC53D002B5D1E /* interference.xml in Resources */,
                                AF918B1E158FC53D002B5D1E /* intermomentary.xml in Resources */,
                                AF918B1F158FC53D002B5D1E /* jigglypuff.xml in Resources */,
+                               AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */,
                                AF918B22158FC53D002B5D1E /* juggler3d.xml in Resources */,
                                AF918B23158FC53D002B5D1E /* julia.xml in Resources */,
                                AF918B24158FC53D002B5D1E /* kaleidescope.xml in Resources */,
                                AF918B22158FC53D002B5D1E /* juggler3d.xml in Resources */,
                                AF918B23158FC53D002B5D1E /* julia.xml in Resources */,
                                AF918B24158FC53D002B5D1E /* kaleidescope.xml in Resources */,
                                AF918B4A158FC53E002B5D1E /* piecewise.xml in Resources */,
                                AF918B4B158FC53E002B5D1E /* pinion.xml in Resources */,
                                AF918B4C158FC53E002B5D1E /* pipes.xml in Resources */,
                                AF918B4A158FC53E002B5D1E /* piecewise.xml in Resources */,
                                AF918B4B158FC53E002B5D1E /* pinion.xml in Resources */,
                                AF918B4C158FC53E002B5D1E /* pipes.xml in Resources */,
+                               AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */,
                                AF918B4E158FC53E002B5D1E /* polyominoes.xml in Resources */,
                                AF918B4F158FC53E002B5D1E /* polytopes.xml in Resources */,
                                AF918B50158FC53E002B5D1E /* pong.xml in Resources */,
                                AF918B4E158FC53E002B5D1E /* polyominoes.xml in Resources */,
                                AF918B4F158FC53E002B5D1E /* polytopes.xml in Resources */,
                                AF918B50158FC53E002B5D1E /* pong.xml in Resources */,
                                AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */,
                                AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */,
                                AF918B91158FC554002B5D1E /* zoom.xml in Resources */,
                                AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */,
                                AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */,
                                AF918B91158FC554002B5D1E /* zoom.xml in Resources */,
-                               AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */,
                                AFC7592D158D8E8B00C5458E /* textclient.c in Sources */,
                                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */,
                                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */,
                                AFC7592D158D8E8B00C5458E /* textclient.c in Sources */,
                                AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */,
+                               AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                AF918A44158FC3BB002B5D1E /* cubestorm.c in Sources */,
                                AF918A45158FC3BB002B5D1E /* cubicgrid.c in Sources */,
                                AF918A46158FC3BB002B5D1E /* dangerball.c in Sources */,
                                AF918A44158FC3BB002B5D1E /* cubestorm.c in Sources */,
                                AF918A45158FC3BB002B5D1E /* cubicgrid.c in Sources */,
                                AF918A46158FC3BB002B5D1E /* dangerball.c in Sources */,
+                               AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */,
                                AF918A48158FC3BB002B5D1E /* dolphin.c in Sources */,
                                AF918A49158FC3BB002B5D1E /* dropshadow.c in Sources */,
                                AF918A4A158FC3E5002B5D1E /* endgame.c in Sources */,
                                AF918A48158FC3BB002B5D1E /* dolphin.c in Sources */,
                                AF918A49158FC3BB002B5D1E /* dropshadow.c in Sources */,
                                AF918A4A158FC3E5002B5D1E /* endgame.c in Sources */,
                                AF918A6C158FC3E5002B5D1E /* hypnowheel.c in Sources */,
                                AF918A6D158FC3E5002B5D1E /* involute.c in Sources */,
                                AF918A6E158FC417002B5D1E /* jigglypuff.c in Sources */,
                                AF918A6C158FC3E5002B5D1E /* hypnowheel.c in Sources */,
                                AF918A6D158FC3E5002B5D1E /* involute.c in Sources */,
                                AF918A6E158FC417002B5D1E /* jigglypuff.c in Sources */,
+                               AF39483E15A164680000FFCD /* jigsaw.c in Sources */,
                                AF918A6F158FC417002B5D1E /* juggler3d.c in Sources */,
                                AF918A70158FC417002B5D1E /* klein.c in Sources */,
                                AF918A71158FC417002B5D1E /* lament.c in Sources */,
                                AF918A6F158FC417002B5D1E /* juggler3d.c in Sources */,
                                AF918A70158FC417002B5D1E /* klein.c in Sources */,
                                AF918A71158FC417002B5D1E /* lament.c in Sources */,
                                AF918A7D158FC417002B5D1E /* pinion.c in Sources */,
                                AF918A7E158FC417002B5D1E /* pipeobjs.c in Sources */,
                                AF918A7F158FC417002B5D1E /* pipes.c in Sources */,
                                AF918A7D158FC417002B5D1E /* pinion.c in Sources */,
                                AF918A7E158FC417002B5D1E /* pipeobjs.c in Sources */,
                                AF918A7F158FC417002B5D1E /* pipes.c in Sources */,
+                               AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */,
+                               AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */,
                                AF918A82158FC417002B5D1E /* polytopes.c in Sources */,
                                AF918A83158FC417002B5D1E /* providence.c in Sources */,
                                AF918A84158FC417002B5D1E /* pulsar.c in Sources */,
                                AF918A82158FC417002B5D1E /* polytopes.c in Sources */,
                                AF918A83158FC417002B5D1E /* providence.c in Sources */,
                                AF918A84158FC417002B5D1E /* pulsar.c in Sources */,
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
+                               SKIP_INSTALL = YES;
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
                                SDKROOT = macosx;
                                "SDKROOT[arch=armv6]" = iphoneos;
                                "SDKROOT[arch=armv7]" = iphoneos;
+                               SKIP_INSTALL = YES;
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
                                VALID_ARCHS = "i386 x86_64 armv6 armv7";
                        };
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
-                               IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.2;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "";
                                SDKROOT = iphoneos;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "";
                                SDKROOT = iphoneos;
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
                                GCC_THUMB_SUPPORT = NO;
                                INFOPLIST_FILE = OSX/iSaverRunner.plist;
                                INSTALL_PATH = "$(HOME)/Applications";
-                               IPHONEOS_DEPLOYMENT_TARGET = 3.0;
+                               IPHONEOS_DEPLOYMENT_TARGET = 4.2;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "6713E214-60AD-43CF-AFD3-825AEB87AA75";
                                SDKROOT = iphoneos;
                                PRODUCT_NAME = XScreenSaver;
                                PROVISIONING_PROFILE = "6713E214-60AD-43CF-AFD3-825AEB87AA75";
                                SDKROOT = iphoneos;
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
+                                       "HAVE_GETIFADDRS=1",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
                                        "HAVE_GLBINDTEXTURE=1",
                                        "HAVE_UNAME=1",
                                        "HAVE_ICMP=1",
+                                       "HAVE_GETIFADDRS=1",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",
                                        "HAVE_FORKPTY=1",
                                        "HAVE_UTIL_H=1",
                                        "$(GCC_PREPROCESSOR_DEFINITIONS)",