home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Tutorial / GNUSoftwareManuals.chm / gnu / gleem.mht < prev    next >
Internet Message Format  |  2002-05-24  |  44KB

  1. From: <╙╔ Microsoft Internet Explorer 5 ▒ú┤µ>
  2. Subject: gleem (OpenGL Extremely Easy-to-use Manipulators) documentation
  3. Date: Fri, 24 May 2002 07:27:17 +0800
  4. MIME-Version: 1.0
  5. Content-Type: multipart/related;
  6.     boundary="----=_NextPart_000_0000_01C202F4.6F17ED30";
  7.     type="text/html"
  8. X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
  9.  
  10. This is a multi-part message in MIME format.
  11.  
  12. ------=_NextPart_000_0000_01C202F4.6F17ED30
  13. Content-Type: text/html;
  14.     charset="gb2312"
  15. Content-Transfer-Encoding: quoted-printable
  16. Content-Location: http://www.gnu.org/manual/gleem/gleem.html
  17.  
  18. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  19. <HTML><HEAD><TITLE>gleem (OpenGL Extremely Easy-to-use Manipulators) =
  20. documentation</TITLE>
  21. <META content=3D"text/html; charset=3Dgb2312" http-equiv=3DContent-Type>
  22. <META content=3D"MSHTML 5.00.3315.2870" name=3DGENERATOR></HEAD>
  23. <BODY>
  24. <H2>gleem: OpenGL Extremely Easy-to-use Manipulators Documentation </H2>
  25. <CENTER><IMG alt=3D"[Picture of Manipulators]" height=3D250=20
  26. src=3D"http://www.gnu.org/software/gleem/manips.jpg" width=3D640> =
  27. </CENTER>
  28. <P><B>Last modified</B>: 11/22/98. <B>Current gleem version</B>: 1.0=20
  29. <UL>
  30.   <LI><A =
  31. href=3D"http://www.gnu.org/manual/gleem/gleem.html#INTRO">Introduction=20
  32.   and Description</A>=20
  33.   <LI><A href=3D"http://www.gnu.org/manual/gleem/gleem.html#HOWTO">How =
  34. to=20
  35.   Incorporate gleem Into Your Programs</A>=20
  36.   <UL>
  37.     <LI><A=20
  38.     =
  39. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HOWTO-COMPILE">Compili=
  40. ng</A>=20
  41.  
  42.     <LI><A=20
  43.     =
  44. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HOWTO-MANIPS">Manips</=
  45. A>=20
  46.     <LI><A=20
  47.     =
  48. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HOWTO-EXAMINER">Examin=
  49. erViewer</A>=20
  50.  
  51.     <LI><A=20
  52.     =
  53. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HOWTO-MULTIWIN">Multip=
  54. le=20
  55.     Window and Multi-Threading Support</A> </LI></UL>
  56.   <LI><A href=3D"http://www.gnu.org/manual/gleem/gleem.html#UI">User =
  57. Interface</A>=20
  58.  
  59.   <UL>
  60.     <LI><A=20
  61.     =
  62. href=3D"http://www.gnu.org/manual/gleem/gleem.html#UI-TRANSLATE12">Transl=
  63. ate1Manip,=20
  64.     Translate2Manip</A>=20
  65.     <LI><A=20
  66.     =
  67. href=3D"http://www.gnu.org/manual/gleem/gleem.html#UI-HANDLEBOX">HandleBo=
  68. xManip</A>=20
  69.  
  70.     <LI><A=20
  71.     =
  72. href=3D"http://www.gnu.org/manual/gleem/gleem.html#UI-EXAMINER">ExaminerV=
  73. iewer</A>=20
  74.     </LI></UL>
  75.   <LI><A =
  76. href=3D"http://www.gnu.org/manual/gleem/gleem.html#DEVELOPER">Developer=20
  77.   Information</A>=20
  78.   <UL>
  79.     <LI><A =
  80. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HIERARCHY">Class=20
  81.     Hierarchy</A>=20
  82.     <LI><A=20
  83.     =
  84. href=3D"http://www.gnu.org/manual/gleem/gleem.html#DOCUMENTATION">Per-Cla=
  85. ss=20
  86.     Documentation</A>=20
  87.     <LI><A =
  88. href=3D"http://www.gnu.org/manual/gleem/gleem.html#OVERVIEW">Library=20
  89.     overview</A> </LI></UL>
  90.   <LI><A =
  91. href=3D"http://www.gnu.org/manual/gleem/gleem.html#PROJECTS">Suggestions =
  92.  
  93.   for Further Development</A>=20
  94.   <LI><A =
  95. href=3D"http://www.gnu.org/manual/gleem/gleem.html#LICENSING">Licensing=20
  96.   Terms</A>=20
  97.   <LI><A =
  98. href=3D"http://www.gnu.org/manual/gleem/gleem.html#FAQ">Frequently Asked =
  99.  
  100.   Questions</A>=20
  101.   <LI><A=20
  102.   =
  103. href=3D"http://www.gnu.org/manual/gleem/gleem.html#THANKS">Acknowledgemen=
  104. ts,=20
  105.   Thanks and Other Interesting Links</A>=20
  106.   <LI><A =
  107. href=3D"http://www.gnu.org/manual/gleem/gleem.html#HISTORY">Version=20
  108.   History</A> </LI></UL>
  109. <H2><A name=3DINTRO>Introduction and Description </A></H2>
  110. <P>gleem is a small, self-contained C++ library of 3D widgets that =
  111. support=20
  112. direct user interaction with a 3D scene. The user interfaces are roughly =
  113. based=20
  114. on the manipulators in <A href=3D"http://www.sgi.com/">Silicon =
  115. Graphics'</A> <A=20
  116. href=3D"http://www.sgi.com/Technology/Inventor/">Open Inventor</A>; the =
  117. names are=20
  118. borrowed from Inventor. </P>
  119. <P>The currently implemented manipulators are:=20
  120. <UL>
  121.   <LI>Translate1Manip: translation along a line=20
  122.   <LI>Translate2Manip: translation in a plane=20
  123.   <LI>HandleBoxManip: 3D translation and rotation </LI></UL>
  124. <P></P>
  125. <P>The most recent version of gleem is available from <A=20
  126. href=3D"http://www.media.mit.edu/~kbrussel/gleem/">http://www.media.mit.e=
  127. du/~kbrussel/gleem/</A>.=20
  128. </P>
  129. <P>gleem uses <A =
  130. href=3D"http://reality.sgi.com/opengl/glut3/glut3.html">GLUT</A>=20
  131. and <A href=3D"http://www.opengl.org/">OpenGL</A> for acquiring mouse =
  132. events and=20
  133. performing rendering. However, all of the data structures for storing =
  134. shapes and=20
  135. computing mouse pointer-object intersections are done within the =
  136. library, not=20
  137. using the OpenGL pick mechanism. Therefore it should be fairly simple to =
  138. port=20
  139. gleem to other graphics libraries such as <A=20
  140. href=3D"http://java.sun.com/products/java-media/3D/index.html">Java3D.</A=
  141. >=20
  142. <P>gleem currently does not implement Inventor-style fields, =
  143. field-to-field=20
  144. connections, reference counting, run-time type checking, instantiation =
  145. by type=20
  146. ID, or any other of the basic mechanisms which made Inventor possible. =
  147. It is=20
  148. implemented entirely using virtual functions; there is no casting down =
  149. the=20
  150. hierarchy based on run-time type checks. </P>
  151. <P>The most fundamental limitation of gleem is that, in the interest of=20
  152. portability, it has no notion of a scene graph. It defines what little =
  153. such=20
  154. support it needs internally. All manipulators live conceptually in world =
  155.  
  156. coordinates. If you want to attach a manipulator to the end of a =
  157. kinematic=20
  158. chain, for example, you will need to manually keep the manipulator in =
  159. place as=20
  160. your application moves the links. </P>
  161. <HR width=3D"50%">
  162.  
  163. <H2><A name=3DHOWTO>How to Incorporate gleem Into Your Programs =
  164. </A></H2>
  165. <H3><A name=3DHOWTO-COMPILE>Compiling gleem </A></H3>
  166. <P>gleem was developed under SGI's Irix 6.5. The Makefile is currently =
  167. set up=20
  168. for SGI's CC and include directories. Type "make" in the gleem =
  169. subdirectory to=20
  170. build the library and tests. A precompiled version (built on a 6.5 Indy) =
  171. is in=20
  172. lib/iris. You will need to set your LD_LIBRARY_PATH to, for example,=20
  173. /users/yourname/gleem-1.0/lib/iris before running any of the tests. </P>
  174. <P>The sources should be quite portable and compilable with any recent =
  175. C++=20
  176. compiler. STL support is required and SGI's version of the STL is =
  177. included in=20
  178. the distribution. By default gleem puts all of its datatypes into the =
  179. namespace=20
  180. "gleem", but if your compiler doesn't support namespaces all of the =
  181. macros gleem=20
  182. uses to this end are in Namespace.h. If you port gleem to another =
  183. platform,=20
  184. please consider making a cross-platform Makefile for gmake and =
  185. submitting your=20
  186. work; see the <A=20
  187. href=3D"http://www.gnu.org/manual/gleem/gleem.html#PROJECTS">suggested=20
  188. projects</A>. The "machtype" script in the top-level directory may be =
  189. useful for=20
  190. this purpose. </P>
  191. <H3><A name=3DHOWTO-MANIPS>Incorporating Manips </A></H3>
  192. <P>To use gleem's manipulators, you need to add the following to your=20
  193. OpenGL/GLUT application:=20
  194. <OL>
  195.   <LI>A call to <CODE>ManipManager::init()</CODE> in =
  196. <CODE>main()</CODE>. There=20
  197.   must be an open window at this point if you want the ManipManager to =
  198. install=20
  199.   its callbacks. (To disable callback installation, call=20
  200.   <CODE>ManipManager::init(false)</CODE>.)=20
  201.   <LI>If you choose not to allow the ManipManager to install mouse =
  202. motion,=20
  203.   passive motion, and mouse button callbacks (because you have already=20
  204.   overridden them in your application), you need to call the appropriate =
  205. static=20
  206.   methods in ManipManager at the end of your callbacks.=20
  207.   <LI>Regular calls to =
  208. <CODE>ManipManager::updateCameraParameters()</CODE> with=20
  209.   parameters of your viewing frustum (forward and up vectors, vertical =
  210. FOV,=20
  211.   image plane aspect ratio, horizontal and vertical size of window). =
  212. gleem=20
  213.   currently only handles frusta corresponding to symmetric truncated =
  214. pyramids.=20
  215.   <LI>A call to <CODE>ManipManager::render()</CODE> in your display =
  216. callback.=20
  217.   </LI></OL>
  218. <P></P>
  219. <P>You can then call methods such as <CODE>getTranslation()</CODE> and=20
  220. <CODE>getRotation()</CODE> on the above manipulator classes in, for =
  221. example, its=20
  222. GLUT render callback, and feed those values elsewhere. You can also =
  223. register a=20
  224. motion callback via <CODE>Manip::addMotionCallback()</CODE> which will =
  225. be called=20
  226. each time the manipulator is moved. </P>
  227. <P>See the sources Translate1Test.cpp, Translate2Test.cpp, and =
  228. TestHandleBox.cpp=20
  229. for specific, small examples of instantiating manipulators. </P>
  230. <H3><A name=3DHOWTO-EXAMINER>Incorporating the Examiner Viewer </A></H3>
  231. <P>The ExaminerViewer class implements trackball-style rotation, =
  232. translation,=20
  233. and dollying of the scene. To use it in conjunction with the =
  234. ManipManager, you=20
  235. need to do the following: </P>
  236. <P>
  237. <OL>
  238.   <LI>Instantiate an Examiner Viewer (i.e., <CODE>ExaminerViewer viewer =
  239. =3D new=20
  240.   ExaminerViewer();</CODE>). This creates a new window internally and =
  241. overrides=20
  242.   mouse and motion callbacks.=20
  243.   <LI>Call <CODE>ManipManager::init(false);</CODE>. It isn't possible to =
  244.  
  245.   re-install the ExaminerViewer's callbacks if they're overridden, so =
  246. it's=20
  247.   important not to let the ManipManager do so.=20
  248.   <LI>Set up the ManipManager as a mouse and motion delegate for the=20
  249.   ExaminerViewer. <PRE>  =
  250. viewer->setMouseDelegate(ManipManager::mouseFunc);
  251.   viewer->setMotionDelegate(ManipManager::motionFunc);
  252. </PRE>
  253.   <LI>To get highlighting of manips to work, set up the ManipManager's =
  254. passive=20
  255.   motion callback manually. <PRE>  viewer->makeCurrent();
  256.   glutPassiveMotionFunc(ManipManager::passiveMotionFunc);
  257. </PRE>
  258.   <LI>(Recommended) Give the ExaminerViewer a BSphereProvider so it can =
  259. compute=20
  260.   the bounding sphere of the scene, and call viewAll() before the first =
  261. render.=20
  262.   See TestExaminerViewer.cpp for an example of how you might compute a =
  263. bounding=20
  264.   sphere for a manipulator.=20
  265.   <LI>Add a call to <CODE>viewer->update();</CODE> before you begin =
  266. drawing=20
  267.   your geometry. This recomputes the ModelView and Projection matrices =
  268. for the=20
  269.   current rendering context. You should then be able to push matrices on =
  270. top of=20
  271.   the one loaded by the ExaminerViewer to effect a camera moving about =
  272. the=20
  273.   scene. </LI></OL>
  274. <P></P>
  275. <H3><A name=3DHOWTO-MULTIWIN>Multiple Window and Multi-Threading Support =
  276. </A></H3>
  277. <P>gleem supports rendering manipulators in multiple windows. See=20
  278. <CODE>ManipManager::windowCreated()</CODE>,=20
  279. <CODE>ManipManager::windowDestroyed()</CODE>,=20
  280. <CODE>ManipManager::addManipToWindow()</CODE>, and=20
  281. <CODE>ManipManager::removeManipFromWindow</CODE>. By default, =
  282. manipulators are=20
  283. rendered in the window which was current at the time of their =
  284. instantiation=20
  285. (determined via <CODE>glutGetWindow()</CODE>.) See =
  286. <CODE>TestMultiWin.cpp</CODE>=20
  287. for an example of rendering the same manipulator into two windows. </P>
  288. <P><B>gleem is not thread-safe</B>. You should not attempt to =
  289. instantiate or use=20
  290. gleem objects in more than one thread. </P>
  291. <HR width=3D"50%">
  292.  
  293. <H2><A name=3DUI>User Interface </A></H2>
  294. <H3><A name=3DUI-TRANSLATE12>Translate1Manip and Translate2Manip User =
  295. Interface=20
  296. </A></H3>
  297. <P>The Translate1Manip and Translate2Manip are self-explanatory. Click =
  298. and drag=20
  299. to cause motion along a line or in a plane. </P>
  300. <H3><A name=3DUI-HANDLEBOX>HandleBoxManip User Interface </A></H3>
  301. <P>The HandleBoxManipulator contains a box with six faces. Clicking and =
  302. dragging=20
  303. on any of these six faces causes translational motion in the plane =
  304. parallel to=20
  305. the face. </P>
  306. <P>This manipulator also contains six handles, each of which can be used =
  307. to=20
  308. rotate the manipulator about two possible axes. The one chosen at the =
  309. start of a=20
  310. drag motion is the one most parallel to the viewing direction. If you =
  311. visualize=20
  312. the two perpendicular planes which go through the handle and three =
  313. others, the=20
  314. one which is rotated about is the one which is facing the camera the =
  315. most at the=20
  316. current time. </P>
  317. <P>Scaling of the HandleBoxManip still needs to be implemented. </P>
  318. <H3><A name=3DUI-EXAMINER>ExaminerViewer User Interface </A></H3>
  319. <P>The ExaminerViewer behaves similarly to Inventor's Examiner Viewer. =
  320. It grabs=20
  321. all drag motions when the Alt key is depressed. The ExaminerViewer has a =
  322.  
  323. conceptual "focal point" which is always defined as being the focal =
  324. distance=20
  325. directly in front of the viewer. </P>
  326. <P>Drag motions with Alt key depressed:=20
  327. <UL>
  328.   <LI>Button 1: Rotate about focal point=20
  329.   <LI>Button 2: Translate in plane parallel to image plane. Note that =
  330. this=20
  331.   causes subsequent rotations to be performed about a point which is =
  332. likely not=20
  333.   to be the precise center of the scene.=20
  334.   <LI>Buttons 1+2: Dolly in/out in direction perpendicular to image =
  335. plane. This=20
  336.   motion increases or decreases the focal distance depending on the =
  337. dollying=20
  338.   direction. </LI></UL>
  339. <P></P>
  340. <P>Calling the viewAll() method re-positions (but does not re-orient) =
  341. the=20
  342. ExaminerViewer so the bounding sphere given by the BSphereProvider is =
  343. contained=20
  344. entirely within the viewing frustum. The focal distance is reset to be =
  345. the=20
  346. distance between the camera and the center of the bounding sphere. </P>
  347. <HR width=3D"50%">
  348.  
  349. <H2><A name=3DDEVELOPER>Developer Information </A></H2>
  350. <H3><A name=3DHIERARCHY>Class Hierarchy </A></H3>
  351. <P>gleem partitions its API into two sections, separate from the C++ =
  352. access=20
  353. rules. Classes and access qualifiers prefaced with GLEEM_INTERNAL are =
  354. not=20
  355. intended to be used by outside users, and have even fewer guarantees =
  356. about=20
  357. interface stability than the public interfaces (which have none). </P>
  358. <P>"Public" classes are in <B>bold</B>. </P>
  359. <P>Manipulator-related classes=20
  360. <UL>
  361.   <LI><B>ManipManager</B>=20
  362.   <LI><B>Manip</B>=20
  363.   <UL>
  364.     <LI><B>Translate1Manip</B>=20
  365.     <LI><B>Translate2Manip</B>=20
  366.     <LI><B>HandleBoxManip</B> </LI></UL>
  367.   <LI><B>CameraParameters</B> </LI></UL>
  368. <P></P>
  369. <P>Application-level classes=20
  370. <UL>
  371.   <LI><B>ExaminerViewer</B> </LI></UL>
  372. <P></P>
  373. <P>Manipulator parts (visible and/or intersectable geometry)=20
  374. <UL>
  375.   <LI>ManipPart=20
  376.   <UL>
  377.     <LI>ManipPartGroup=20
  378.     <UL>
  379.       <LI>ManipPartTransform </LI></UL></LI></UL>
  380.   <LI>ManipPartTriBased=20
  381.   <UL>
  382.     <LI>ManipPartCube=20
  383.     <LI>ManipPartHollowCubeFace=20
  384.     <LI>ManipPartSquare=20
  385.     <LI>ManipPartTwoWayArrow </LI></UL></LI></UL>
  386. <P></P>
  387. <P>Linear algebra classes=20
  388. <UL>
  389.   <LI>BSphere=20
  390.   <LI>Line=20
  391.   <LI>Plane=20
  392.   <LI>PlaneUV </LI></UL>
  393. <P></P>
  394. <P>Other math-related classes=20
  395. <UL>
  396.   <LI>MathUtil=20
  397.   <LI>NormalCalc=20
  398.   <LI>RayTriangleIntersection=20
  399.   <LI>RightTruncPyrMapping </LI></UL>
  400. <P></P>
  401. <H3><A name=3DDOCUMENTATION>Per-Class Documentation </A></H3>
  402. <P>gleem contains a fair amount of documentation in the form of =
  403. javadoc-style=20
  404. comments. I was not able to find a free document generator for C++ which =
  405. could=20
  406. turn these into html; please let me know if you know of one. In the =
  407. meantime,=20
  408. the headers contain all of the class-specific documentation. </P>
  409. <H3><A name=3DOVERVIEW>Library Overview </A></H3>
  410. <P>Manipulators contain Manipulator Parts. The ManipPart hierarchy is =
  411. divided=20
  412. into two sections, one containing triangle-based pieces of manipulators =
  413. and one=20
  414. which contains grouping nodes (analogues to Group and Transform nodes). =
  415. This is=20
  416. gleem's scene graph mechanism. A warning: shared instancing of "nodes"=20
  417. (ManipParts) in this scene graph is not allowed (since reference =
  418. counting is not=20
  419. implemented). The ManipManager keeps track of all instantiated =
  420. manipulators and=20
  421. handles the picking mechanism as well as rendering. </P>
  422. <P>The Manip base class only implements a minimal interface; it is =
  423. intended that=20
  424. you refer to manipulators through a pointer to the concrete type rather =
  425. than the=20
  426. abstract Manip type. The simple manipulators (Translate1Manip, =
  427. Translate2Manip)=20
  428. contain replaceGeometry() methods so you can customize the draggers with =
  429.  
  430. whatever geometry you like. It is not so simple to customize a more =
  431. complex=20
  432. manipulator like the HandleBoxManip, so it contains no such method. </P>
  433. <P>Each manipulator understands its constraints and implements its =
  434. drag() method=20
  435. from scratch. Clearly there is some commonality between the =
  436. Translate2Dragger=20
  437. and the translation functionality of the HandleBoxManip. However, this=20
  438. commonality has not been abstracted into a set of classes like =
  439. Inventor's=20
  440. projectors. Instead there are a few geometrical classes (Line, Plane, =
  441. PlaneUV)=20
  442. which encapsulate such functionality as ray casting and point =
  443. projection, and=20
  444. the manipulators determine how to use this information based on what =
  445. manipulator=20
  446. part was selected and the current configuration of the manipulator. </P>
  447. <P>The linear algebra gleem uses is quite simple and should be =
  448. accessible to=20
  449. anyone with anyone who has taken an undergraduate linear algebra course. =
  450. I=20
  451. encourage you to experiment with more sophisticated algorithms for the =
  452. drag=20
  453. mechanisms. </P>
  454. <P>Recommended texts:=20
  455. <UL>
  456.   <LI>Gilbert Strang, <U>Introduction to Linear Algebra</U>, Wellesley, =
  457. MA:=20
  458.   Wellesley-Cambridge Press, 1993=20
  459.   <LI>James D. Foley, Andries van Dam, Steven K. Feiner, and John F. =
  460. Hughes,=20
  461.   <U>Computer Graphics: Principles and Practice</U>, Reading, MA:=20
  462.   Addison-Wesley, 1992 </LI></UL>
  463. <P></P>
  464. <HR width=3D"50%">
  465.  
  466. <H2><A name=3DPROJECTS>Suggestions for Further Development </A></H2>I =
  467. had=20
  468. originally intended to call gleem an acronym for "OpenGL Easily =
  469. Extensible=20
  470. Manipulators", but decided that I shouldn't try to make that claim until =
  471. other=20
  472. programmers had actually tried to do so. There is a lot of work still to =
  473. be done=20
  474. on this library.=20
  475. <P></P>
  476. <P>The one thing I strongly recommend <I>against</I> is attempting to =
  477. turn=20
  478. gleem's internal scene graph (the ManipPart hierarchy) into a full scene =
  479. graph=20
  480. library. The run-time support is not there, and the structure would need =
  481. to be=20
  482. fully redesigned for this purpose. On the other hand, I think a free, =
  483. portable,=20
  484. and high-performance scene graph library is a great idea. </P>
  485. <P>Suggested projects:=20
  486. <UL>
  487.   <LI>Makefile generalization; gmake and multiple platform support=20
  488.   <LI>Get the javadoc-style comments into actual html pages=20
  489.   <LI>Fix the OpenGL support so it does the right thing with respect to =
  490. state=20
  491.   management coming into and out of the manipulator rendering routines=20
  492.   <LI>Generalize to asymmetric and orthographic viewing frusta=20
  493.   <LI>Implement scaling for HandleBoxManip=20
  494.   <LI>Incorporate into Eric Power's Apprentice project=20
  495.   <LI>Port to Linux (using Mesa) and create RPM=20
  496.   <LI>Port to Windows=20
  497.   <LI>Port to Java3D=20
  498.   <LI>Try running on a 3Dfx card, both windowed and fullscreen modes=20
  499.   <LI>Implement more of Inventor's manipulator hierarchy (in the =
  500. interest of=20
  501.   time, I did only those manipulators which I absolutely needed)=20
  502.   <LI>Figure out the commonalities between manipulators and implement =
  503. drag=20
  504.   policies as classes=20
  505.   <LI>... </LI></UL>
  506. <P></P>
  507. <P>Code contributions will be gladly accepted and incorporated into the=20
  508. "official" distribution. Or you can redistribute your modifications =
  509. yourself;=20
  510. see below. </P>
  511. <HR width=3D"50%">
  512.  
  513. <H2><A name=3DLICENSING>Licensing Terms </A></H2>
  514. <P>gleem is distributed under the <A=20
  515. href=3D"http://www.gnu.org/manual/gleem/LICENSE.txt">GNU Library General =
  516. Public=20
  517. License</A>, version 2.0, or any later version. If you want to =
  518. incorporate gleem=20
  519. into a commercial product, please contact me so we can discuss =
  520. exceptions to the=20
  521. license's requirement that you distribute object files as well as =
  522. gleem's=20
  523. (potentially modified) source code. </P>
  524. <P>gleem includes a copy of SGI's STL implementation. Here is the =
  525. copyright=20
  526. notice from this library: <PRE>/*
  527.  *
  528.  * Copyright (c) 1994
  529.  * Hewlett-Packard Company
  530.  *
  531.  * Permission to use, copy, modify, distribute and sell this software
  532.  * and its documentation for any purpose is hereby granted without fee,
  533.  * provided that the above copyright notice appear in all copies and
  534.  * that both that copyright notice and this permission notice appear
  535.  * in supporting documentation.  Hewlett-Packard Company makes no
  536.  * representations about the suitability of this software for any
  537.  * purpose.  It is provided "as is" without express or implied warranty.
  538.  *
  539.  *
  540.  * Copyright (c) 1996
  541.  * Silicon Graphics Computer Systems, Inc.
  542.  *
  543.  * Permission to use, copy, modify, distribute and sell this software
  544.  * and its documentation for any purpose is hereby granted without fee,
  545.  * provided that the above copyright notice appear in all copies and
  546.  * that both that copyright notice and this permission notice appear
  547.  * in supporting documentation.  Silicon Graphics makes no
  548.  * representations about the suitability of this software for any
  549.  * purpose.  It is provided "as is" without express or implied warranty.
  550.  */
  551. </PRE>
  552. <P></P>
  553. <HR width=3D"50%">
  554.  
  555. <H2><A name=3DFAQ>Frequently Asked Questions </A></H2>
  556. <P>Q: Why don't the manipulators show up in the right place in my =
  557. application?=20
  558. (Or, why can't I drag them?) </P>
  559. <P>A: gleem expects the following from the rendering state at the time =
  560. you call=20
  561. ManipManager::render():=20
  562. <UL>
  563.   <LI>Lighting is turned on and at least one light is on=20
  564.   <LI>Textures are disabled=20
  565.   <LI>The ModelView matrix stack contains only the camera translation =
  566. and=20
  567.   orientation, and the Projection matrix a perspective projection =
  568. matrix.=20
  569. </LI></UL>The latter is likely to be the problem. gleem expects to be =
  570. able to=20
  571. render its manipulators in world coordinates, and the camera parameters =
  572. you give=20
  573. the library must correspond to the current state of the ModelView and =
  574. Projection=20
  575. matrices. See <CODE>TestExaminerViewer.cpp</CODE> for an example of how =
  576. an=20
  577. application using gleem might be structured.=20
  578. <P></P>
  579. <HR width=3D"50%">
  580.  
  581. <H2><A name=3DTHANKS>Acknowledgments, Thanks and Other Interesting Links =
  582. </A></H2>
  583. <UL>
  584.   <LI><A href=3D"http://reality.sgi.com/pauli">Paul Isaacs</A>, David =
  585. Mott, and=20
  586.   Howard Look (judging from the header files) wrote Inventor's dragger =
  587. and=20
  588.   manipulator hierarchies.=20
  589.   <LI>Mark Kilgard wrote <A=20
  590.   href=3D"http://reality.sgi.com/opengl/glut3/glut3.html">GLUT</A>, an =
  591. elegant=20
  592.   abstraction layer allowing development of window system-independent =
  593. OpenGL=20
  594.   programs.=20
  595.   <LI>Thanks to the designers of Open Inventor for a system still =
  596. unmatched in=20
  597.   scope (after over five years!)=20
  598.   <LI><A href=3D"http://www.ssec.wisc.edu/~brianp/home.html">Brian =
  599. Paul's</A> <A=20
  600.   href=3D"http://www.ssec.wisc.edu/~brianp/Mesa.html">Mesa</A>, a free =
  601. OpenGL=20
  602.   clone=20
  603.   <LI><A href=3D"http://users.deltanet.com/~powerg/">Eric Powers's</A> =
  604. <A=20
  605.   href=3D"http://users.deltanet.com/~powerg/Apprentice/">Apprentice</A>, =
  606. a free=20
  607.   (though incomplete) Open Inventor clone=20
  608.   <LI><A href=3D"http://wwwmath.uni-muenster.de/~mam">MAM/VRS</A>: a =
  609. large and=20
  610.   free 3D library </LI></UL>
  611. <P></P>
  612. <HR width=3D"50%">
  613.  
  614. <H2><A name=3DHISTORY>Version History </A></H2>
  615. <P>
  616. <UL>
  617.   <LI>Version 1.0 - November 23, 1998=20
  618.   <UL>
  619.     <LI>First public release </LI></UL></LI></UL>
  620. <P></P>
  621. <HR>
  622. <I><A href=3D"http://www.media.mit.edu/~kbrussel">Kenneth B. Russell</A> =
  623. - <A=20
  624. href=3D"mailto:kbrussel@media.mit.edu">kbrussel@media.mit.edu</A> </I>
  625. <H6>$Id: index.html,v 1.9 1998/12/11 04:47:31 kbrussel Exp =
  626. $</H6></BODY></HTML>
  627.  
  628. ------=_NextPart_000_0000_01C202F4.6F17ED30
  629. Content-Type: image/jpeg
  630. Content-Transfer-Encoding: base64
  631. Content-Location: http://www.gnu.org/software/gleem/manips.jpg
  632.  
  633. /9j/4AAQSkZJRgABAQAAAQABAAD//gBIQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx
  634. Mi8yOS85NCAgUXVhbGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYGBwYFCAcHBwkJCAoM
  635. FA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJ
  636. DAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
  637. MjIyMv/AABEIAPoCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/
  638. xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKC
  639. CQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaH
  640. iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp
  641. 6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME
  642. BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn
  643. KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeY
  644. mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/
  645. 2gAMAwEAAhEDEQA/APn+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
  646. oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
  647. AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiitrw/YR31xHE+399MsQLJu25I5/X9KA
  648. MWivcbvwjoF5s83SrddmceSDF19dmM9O9eWeLtGstC1lbKynklUQq8nmOrMrEng4Axxg/jQBg0UU
  649. UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
  650. AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUoVm+6pP0
  651. FACUVs2vhLxFelhBot8xXGcwsvX61mXVrNZXk9pcJsngkaORCc7WU4I/MUAQ0UUUAFFFFABRRRQA
  652. UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV1Xg7VdO03UbaS9nMATfk+WSCSCBnHbnr7fjXK0UAe+2
  653. Ws6ZqIU2d9BKXyAquN3HX5eteOeLrv7Z4s1KXZs2zGLGc/cATP47c/jWLRQAUUUUAFFFFABRRRQA
  654. UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
  655. RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAX9P0XVNWDHT9PuboIQrGGMsFJ6Zx0rpbT4W
  656. eKbkZktIbYbtp86Zc49cDPFc/wCH/EF94b1RL6xkww4eM/dkXurD0r6F8N+JLHxPpa3tk2GGBNCx
  657. +aJvQ+3oe9AHm9r8F7xgTd6zbxkHgQxM+R9Ttx+Vb1t8H9Ai3efd30+cbcMqY/Q5r0GigDm7XwB4
  658. VtN/l6NA+7GfOZpMfTcTit63s7a0Ura20MAOMiKMLnHTOBzU1aFra7MPIPm7D0oAYiizt5LucFvJ
  659. RpNo64Ayfx4r5GuJTPcyzMWYyOWJY5Jyc8+9fVPjS/8A7M8E6zdiUxMtq6o4GSGb5V/VhXylQAUU
  660. UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
  661. QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
  662. BRRRQAUUVraPpiXW6adSYhwozjJoAygpY4UEn0FXRo2onT5L/wCxy/ZYyA8mOBmu70LQBeS/uoxD
  663. bIfndRyfYeprvIYIreBYYo1WNRgLjigD56or0Pxb4EIM2paQg2/ektVHI9Snt7fl6V55QAUUUUAF
  664. FFFABRRRQAVo6LrmoaBfreadcNFIMBh/C4znaw7is6r2laVc6veLb26+7ueiD1NAH0H4U8V2XivT
  665. fPtyI7mMAT25PMZ9R6qexrfrzHRtPi0KGJLAlJUOfNx8zt3z6j2r07QbyG/h3SLsvEGZIj2H94eo
  666. /l0oA0LW12YkcfN2HpVqiigDgfjFffZPAEsIl2PdXEcW3Gd4GWI9vug/hXznXtnx3vStho1gDGQ8
  667. skzDPzDaAo/A7m/KvE6ACiiigAooooAKKKKACiiigAooooA73QfANrrmhWl5Je3FlK+/ewRZ1kGR
  668. tKrlCmOQclskdqxvEvg278NxJcvcwXFrLK0aMmVdepXepGASATwWAweemfSPCl3p0OhWNtDf207R
  669. RK7p5gyu5hgMAcj5nVe3JHc1n/Em8tbO30+2ubI3dhdM8m5JjHLGyAcK2CoPzkHchyOgGQaAPI6K
  670. 2dvhm4+fztXsMceV5Ud3n/a37osemNp6ZzzgH9g28nyWviDSLiY/di3Sw7vX55Y0QcZPLD0GTgEA
  671. xqK2f+ET15+bbTZr5O8mn4uowfQvEWUN3wTnBB7isagAooooAKKKKACiiigAooooAKKKKACiiigA
  672. ooooAKKKKACtjQPDOqeJbl4dNijcx48xnlVAgPQnJzj6Vj1qeHtZutC1iG8tJdjA7WB+6ynqCO4o
  673. A7zT/grqEy7tQ1qxtMg/LEDMwOe/QdPeut0/4M+F4fmub28vOQceYsa8dRwM4P1rc0jV7XW7Bbu0
  674. bg8Oh+9G3of881foAbp3gjwppZU2ujWQdWLK8o81gTx1cmo9f8AeHPEdvsuNPjt5guEuLVRG6/kM
  675. EexFTUuT6mgDyPxH8GNZ09mm0WQalb5P7s4SVR9CcN+B/CvN7m1uLK5e3uoJIJ4zh45FKsp9wa+p
  676. AzA5DEH61418Wtf/ALQ1qHSkYOtkMyOeSZGA4z6AAD65oA87ooooAKKKKACiiigAooooAKKKKACi
  677. iigAooooAKKKKACiiigAooooAkghe4mSKMZZjgV6JoGgtdhIlylrFw8nqfQe5rI8E+HJdSla7kBS
  678. 3B278dfXHvXqkMMdtCkMKBI0GAooAIYY7aFIYUCRoMBRUlRTzCCPcRk9AKg0+9jS8P2wFoJeGK8F
  679. PRh9PTvQBcrjPFvghNV/03TEjivP44+FWUevs3867q7tXs7gxOysMBldejqehFUrq6gsbWS5upVi
  680. hjGXdu1AHz/LFJBM8UqMkiEqysMEH0NMra8Ua2mv6w93FbrDGBsXj5nA7se5/wD1Vi0AFFFFABRR
  681. V7StKudXvFt7dfd3PRB6mgA0rSrnV71be3X3dz0Qepr1LStKttIs1trZfd3I+Zz6n/CjStKttIs1
  682. trZfd3P3nPqa3rW08vEkg+fsPSgAtbTy8SSD5+w9KyvEvi6LwwInt2D6n96FAfujuW/2T0x3/Wm+
  683. KvFUHh618uPbLfyL+7iPRR/eb29u9ePXV1Pe3UlzcytLNI253Y8k0AfUPg3xlYeMdK+02+IruIAX
  684. NsTzGfUeqnsa6OvkbRNbv/D2qw6jp0xiuIz9Qw7qw7g+lfTXg/xXaeL9DS/twI5lOy4t92TE/wDg
  685. eoP+FAHkHxuvPO8ZW1rhMW1moyDk5Ylua8zrq/iVci6+IutOEKbJxEQT1KKEz+O3NcpQAUUUUAFF
  686. FFABRRRQAUUUUAFFFFAGzp/7jwrrVyvLyyW1kwPQI5eUkf7W63QemC3HQirplzIjyWm1Jbe5GJYp
  687. M7SQDtcY5DLk4I9SDlWYG1c/ufB2nR/6t7i9uJXXoZEVYljYjuobzgp6A7wO9ReH7UXmsQQFtpkY
  688. KGxnbkgZx360AerHwD4M1OKC5ay1XSmaJd1tbXAdQevJkBbPOPTgcda5nWvhZ9h0l7vTNaGoXCDc
  689. 1q1qYmK4ydp3EFh/d784ycA+j1leJJooPDl+Z5BHHJEYTIQSE3/IGOATgFgTgE4BwCeKAPCa2f8A
  690. hLNefi51Ka+TtHqGLqMH1CShlDdsgZwSO5o/4R7zv+PHWNIu8ff/ANJ+zbfT/j4Ee7PP3c4xzjIy
  691. f8Il4hbmDR7u7i7TWcZuIm/3ZI9ytjocHggjqKAD/hII5vmvdD0i7l6B/Je3wPTbA0anvyRnnrgA
  692. A3eGbj5PJ1ewxz5vmx3ef9nZtix653HpjHORjUUAbP8AZejz/NbeIoYUHBXULWWOQn1AiEq7fcsD
  693. nPHQk/4RTWH4treG+fvHp91FdSAepSJmYL2yRjJA7isaigC1fabfaXOsGoWVzaSsu8R3ETRsVyRn
  694. BA4yD+VMs7Y3l3HAJEiDHBkcHag9TgE4+gNWbHXdY0uBoNP1W+tImbeY7e4eNS2AM4BHOAPyrY0v
  695. W5tRma0uLPTJJJsRwhLKK3IdjgENEEJIz0YleeQcDABC/gbxALM3kFkLq23YjeCRWeUbtoZYsiQg
  696. 9R8oODnFYE0MtvPJBPG8U0bFHjdSrKwOCCD0INfRFrBBFGkAYxRIgRONwGOADznHvyfrXi3iax1K
  697. 81G+1tYmutOeTK3sADxKmQqBivCNt2/K2GGRkZNAHO0UUUAFFFFABRRRQAUUUUAFFFFAHbeDfE9x
  698. pFwkoZmgJCXMXXcvqP8Aax0Ne2Wl3BfWsdzayrLDIMqy9/8A6/tXzTp1x5NztY/K/B/pXovg/wAU
  699. No10LS7k/wCJdK3ORnymP8Q9vX86APV6KRWV1DIwZWGQQcgiloApavey6dpF3d29vJcTRRlo4o13
  700. Fm7cDtnr7Zr5puZJprqaW4LGd3ZpC3UsTzn3zX04lzDPJLHDNHI8LbZFRwSjehA6GsbXfCOjeIVJ
  701. vLULcHpcQ/LIPqe/45oA+d6K7fX/AIZaxpW6ax/4mNsMnMS4kUe6d/wzXEspVirAhhwQR0oASiii
  702. gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPTPBvjO0a1g0q+WK1eNVjhkUYR+3Po3v
  703. 0Nd706187V2fhbx1NpSpZaiGnshkK45kj9uvI9v/ANVAHqcsayxlG6H9KyHRo3KMORWtb3EN1bpP
  704. byrLDINyupyCKq6n5MVs1zLIsapjLMcA5OAKANXR7pdTsv7LuHP2iMFrNyc59Y/04rxPxd4ku9a1
  705. B7d45La1t3KrbuMMGHBLj+97dq9LR3ikV0Yq6nIIPIIrG+Ivh8a7Yt4s0+P/AEuIKmqQRoTz0Ew9
  706. sAA+n50AeU0UUUAFFFXtK0q51e8W3tl93c9EHqaADStKudXvFt7dfd3PRB6mvUtK0q20izW2tl93
  707. cj5nPqf8KNK0q20izW2tl93c/edvU/4VvWtp5eJJB8/YelABa2vl4kkHz9h6VkeKvFUHh618uPbL
  708. fyLmOI9FH95vb270eKvFUHh618uPbLfyL+7iPIUf3m9vbvXj11dT3t1Jc3MrSzSNud2PJNACXV1P
  709. e3MlzcytLNIdzux5JqKiigArY8M+JdQ8K6zFqOnyYZeJIm+5KndWHp/KseigCzqF22oaldXjAgzy
  710. tIQzbiMknGe9VqKKACiiigAooooAKKKKACiiigAooooA2fEP7n+yrHr9l06H5/73m5uOnbHnbffb
  711. njOBR0zUJdL1CK8hSN3jOQsgO0ntnBB64PXtV7xb8vi7VYBxFbXLWsK/3Yoj5ca++FVRk8nHOTWN
  712. QB6dF8Q54fD0GoXenRySzXMkCLFKVU7FVmJyDt/1kYA5z833cAHM8WeOLPW9FNjYx3UTPIpl81FA
  713. ZBk44JOd20/hXO6p+48O6DbLyksc16xPUO8piIH+ztt0Prktz0AxqACiiigDZ/4SzXn4udSmvk7R
  714. 6hi6jB9QkoZQ3bIGcEjuaP8AhII5fmvdD0i7k6B/Je3wPTbA8anvyRnnrgADGooA2ftPhyb/AFmm
  715. ajbO/wB54b1HjjJ6lY2j3FR2UyZI4Ld6P7N0S4/49fEHk7fvf2jZvFn02+UZc98529sZ5xjUUAbP
  716. /CNXEnz2uoaRcQn7sv8AaMUO71+SVkcc8cqPUZGDTG8L6/FPbQz6NfW7XMy28JuIGiV5GOFXcwAy
  717. frWTXQeELy503U7rUbe5mt1tLKaR5InK4O3bEGA+8vnNDlTkHuMZoAbrGv3I1y+Ok6ldRaeJilsI
  718. pHjHkoAkXHByI1QZPPHPNY9peXVhcpc2dzNbXCZ2SwuUZcjBwRyOCRWn/wAJXrD83NxDfP2k1C1i
  719. upAPQPKrMF74Bxkk9zR/bGnXHy3vh+0+bmSazlkglJ65XLNGuT1AjxgkALxgAP7R0zUuNUs/ssx/
  720. 5e9OiVc/70GVQ8AAbDHjJJ3mmTaDK8El1pcyajaopdzCCJYVAyTJEfmUAYyw3ICcBzT/APimbn/o
  721. L6ft/wCud5v/APRO3H/As57Y5kh0/TknjurHxRbWxRg8RuYJ4p0YHqRGjqDkZGHPboeAAYVFdn9h
  722. 1G/+W/0W01qY/fm0q8je8x13HyWcHn70jxsTuwWyVxF/Yp8PXsc5VnZ1Jjg1LTjHIg6EvFIGQgnO
  723. CGbp2PFAHI0V6t4e8NeGdb8OyC60Yw3SyeWLq1upFfACnOHLLk854xzwBWJ4n+HsekWdxqGnal51
  724. rFudo7pBG6ruAUBgSHbBOfu5xwCSBQBwlFFFABRRRQAVp22qEYScZH98f1rMooA9j8B+LUIj0m8n
  725. Qw4xayk9D/cP9M/Suy8RazH4f0K61GTG6JcRqf4nPCj8/wBAa+bYppIW3RsVP8639f8AGWo+ItKs
  726. bG824tclnX/lq3QEj1A4/E0AZUGrahbai2oQXk0d2zFmlRsEknJzXoWgfFh12Qa7b7xjH2mAAN/w
  727. Jeh/DH0rzCigD6Z07VLHV7YXGn3cVxF3KHlfqOo/Gs7XvCOjeIlJvbYLcEYFxF8sg+p7/jmvALHU
  728. LzTLlbmyuZbeZejxsQf/AK9ejaB8WHXbBrtvvGcfaYFwR/vL0P4Y+lAGL4i+Guq6OklzZkX9ovJM
  729. YxIo917/AIZriq+l9N1jTtXiEunXsNwMbiEb5l+o6joetZOv+CNE8QBpJrfyLo/8vEHytn3HRvx5
  730. 96APn6iuv8QfDrWtF3zQJ9utF58yAEso/wBpeo/DIrkCCDg8GgAooooAKKKKACiiigAooooAKKKK
  731. ACiiigAooooAKKKKANnw/wCJb7w9c7oG32zsDLA33X/wPvVjxT4quPEVyFUNDYxn93Dnqf7zep/l
  732. XPUUAek+ENb/ALSsfsk7ZurdQOerp0B/DgH8K6/Tb99OuxMFWSNlMcsTDIkQ8Mp+orw+xvZtPvIr
  733. q3YrJGc9eCPQ+xr1vTb+HU7CK7hPyuOR3U9waAOM8f8AhEeG9TS6sd0mjXw821lxwmesRP8AeX+X
  734. 41x9e9QwWWtaXceHdVIW0u2DQz4BNtN2cZ/I+x968il8J6pB4luNDli2XFu+2Vj91V7Nn0III+tA
  735. FDStKudXvVtrdfd3PRB6mvUtK0q20izW2tl93cj5nPqf8KNK0q20izW2tl93c/ec+p/wretbTy8S
  736. SD5+w9KAC1tPLxJIPn7D0rI8VeKoPD1r5ce2W/kGY4j0Uf3m9vbvR4q8VQeHrXy49st/Iv7uI9FH
  737. 95vb27149dXU97dSXNzK0s0jbndjyTQAl1dT3tzJc3MrSzSHc7seSaioooAKKKKACiiigAooooAK
  738. KKKACivc/DngnwQ2hacNU0m6a9eBXuJZpZFIcjJG1WGACcDjPAzzk1i+NfAHhPSfDepatpN7e/aY
  739. irRW7uPLAaRVIGU3EAMcfMTxznmgDyaiiigAooooAK2fCXy+LtKnPEVtcrdTN/diiPmSN74VWOBy
  740. ccZNY1bPh79z/at91+y6dN8n97zcW/Xtjzt3vtxxnIAMaiitDQrGLVPEOmafOzrFdXcUDlCAwVnC
  741. nGc84NAFnxX8niKe2P37OOGykI6F4YkiYj2LISOhxjgdKyrdPMuI0IJBYZA9O9TalfS6pql3qE6o
  742. st1M87hAQoZmLHGc8ZNVgSpBBII5BFAH0PbSSTaHp+n6nbWt1FbRRjyLmBJVVlXb3B56jI9TzXge
  743. rLbJrN8lmEFqtxIIQjFlCbjtwSSSMY5ya24PiB4ihmWR7uOdRnMckKhTx32gH9a5igAooooAKKKK
  744. ACtm2/0PwjfT/clvrmO1jbrviQeZKvthvsxzwfTjdWNWzrX+i6Zo+nD5WS2N1PH1xLM24Nn3hFvw
  745. Dgex3UAY1FFFABRRRQAV0Wl6nLHpR02K9mWCRt8luHKo7epXOCeBz7CudqaztJ7+9t7O2TzLi4kW
  746. KJMgbmY4AyeBye9AHu+j2ZsNItbZgQ6JlwSDhjyRx7k1zfxI1FbXw8lkCvmXkgBBB+4pDEg9Ac7O
  747. vqfw4zVPFmox+ILibTNVuTaQt5VsWYkSRoNiuytwWYAMSQPmJOBWRqmtajrUscmoXTTNGNqDAUL6
  748. 8AAZ9/YelAFCiiigAooooAKKKKACiiigAooooAKKKKAJrW6uLK4We1nkgmQ5V42KkfiK9D0D4r3U
  749. GyDXIPtMfT7REAsg+o6N+lebUUAfSuk63put24n028jnXGWUHDL9VPIrL1/wRoviDdJNb+RdHn7R
  750. AArE/wC0Ojfjz714Ja3VxZXCXFrNJDMhyrxsVI/EV6FoHxXurcLBrcH2mMcfaIgBIPqOjfpQBja/
  751. 8Oda0XdLBH9vtRn95AvzKP8AaTqPwyPeuQr6V0nW9N1uDz9NvI51HLBThk+q9RWP4j8CaR4iJmdD
  752. a3mP9fCAN3+8vRvr196APC7Cza+vordc/OeT6Dua1r/wtcQZe0bz0/unhx/jXW2vga/8NvcTTBbl
  753. W+VJoQSAvuOoJ/p1qSgDzF43icrIjIw7MMGm16Rd2VtfJsuYVkHYnqPoa5bW/Dq6ZYrexTM0TTCI
  754. K45zgnr+H60AYFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdF4S1z+y7/AOzzNi1nOGz0Ruzf0P8A
  755. 9audq9pWlXOr3i29uvu7nog9TQB6/U1zdT3kqy3EhkkCBAxHJA6AnvVKythZWUNsJGkESBQ79Tir
  756. KMUdXGCVOeaAL9pa+XiSQfP2HpWR4q8VQeHrXy49st/IMxxHoo/vN7e3etLxXqf9jeFzrmnwmdJH
  757. EO0gn7PIR/H/ALI7HvkV4ZdXU97dSXNzK0s0jbndjyTQAXV1Pe3UlzcytLNI253Y8k1DRRQAUUUU
  758. AFFFFABRRRQAUUUUAFFFFAH0XXIfEidofCyooBE1wiNnsMFuPxUV5p/wkGtf9Be//wDAl/8AGnap
  759. 4h1XWkjTULszJGSVXYqgE9/lAz+NAGZRRRQAUUUUAFbNj+58I6xOnEslza2rN6xMJZCv/fUMZz1+
  760. X0JzjVs6h+48K6LbNy8slzeqR0COUiAP+1ut3Ppgrz1AAMatnw1+7u766fiGDTrrzG/u+ZE0KcdT
  761. mSVF/HJ4BIxq2dP/AHHhXWrleXlktrJgegRy8pI/2t1ug9MFuOhABjUUUUAFFFFABRRRQAUUUUAT
  762. WdpPf3tvZ2yeZcXEixRJkDczHAGTwOT3q74hu4L3xBey2j77NZDFanBH7hPkiHPPCKo55455zU3h
  763. v9xc3uonpYWUsoI+8rsBFGy+jLJLG2eCNpI5ABxqACiiigAooooAK2fDX+j3txqn/QMtmukx1EuQ
  764. kTAdDtlkjYg8YU9ehxq2W/0Pwcsbff1G9EqqeCqQqyhgO6s0zjPABiYc84AMaiiigAooooAKKKKA
  765. CiiigAooooAKKKKACiiigAooooAKKKKAJrW7uLK4We1nkgmXlXjYqR+Ir0Lwn8SdVN1DYajEL6M8
  766. ecPlkUDuT0b8efevN663wnZqltJeEgu52DB+6B1/P+lAHttjqVpqCbraYMe6Hhh9RWR4i0zTksZb
  767. xo/KmHCmPjex6AjpXGo7RuHRirDoynBFW7zVLy/giiuZfMWMkg45J9/WgCoqs7qijLMcAe9J49sT
  768. F4St1jxtguFZznqSCP5mtbQ7XzJmuGHyx8L/AL1Q+PY3k8I3G1c7ZEZvYZoA8fooooAKKKKACiii
  769. gAooooAKKKKACiirulaVc6veLbW6+7ueiD1NAC6VpVzq94ttbr7u56IPU16lpWlW2kWa21svu7kf
  770. M59T/hRpWlW2kWa21svu7n7zn1P+Fb1ra+XiSQfP2HpQAlvZAIWlHJHT0/8Ar1SljMUrRkgkeh/K
  771. q3irxVB4etfLj2y38i5jiPRR/eb29u9edaD4lntNbkuL6ZpI7tv37Nyc9m/D09KAPWtMvIYDPaXs
  772. fm6deoYbqL1Q8ZHoRnrXk3jbwrL4T8QSWeTJZy/vbSfqJIj05xgkdDjvXpXUZHSrs+mweMPDzeG7
  773. uRYrlGMunXD9I37ocdjz6/oKAPBaKnvLO50+8ms7yF4LiFikkbjBUioKACiiigAooooAKKKKACii
  774. igAooooAKKKKACiiigAooooAK2fEf7mbTbJeYrbTrfYT1Pmp57Z/4FMwHsB1OScmGGW4njggjeWW
  775. RgiRopZmYnAAA6kmtPxRNFP4r1Z7eRJLYXciQGNgUESsVQLjjaFCgY4AAxxQBk1s337nwjo8D8Sy
  776. XN1dKvrEwijDf99QyDHX5fQjONWz4j/czabZLzFbadb7Cep81PPbP/ApmA9gOpySAY1FFFABRRRQ
  777. AUUUUAFFFFAGzF/ong6eTo+oXqxIy9dkK7pFY/3S0sJA5BMeTjaM41bOvf6NbaRpw4MFkssoX7rP
  778. MTKG928t4lJPPyY5ABrGoAKKKKACiiigArZ8T/uNX/sxeE0uNbLHYOmfNIPUqZTKwzzhhwOgZ4bh
  779. ifWo7m4jSS1sla8mSRQUdYxuEbZ4AdgseTnlxwehpRvJeaiJbiUySSyb5HlbJck5JJPUn9c0Aa9r
  780. 4H8SX2kNqlnpb3VqrbSbeRJHByBjy1JfPIPToc9OaxbuzurC6e1vLaa2uExvimQo65GRkHkcEH8a
  781. 9P8AAKzxatPewytH5MYX5WIJLHIyOhHyng+1Xfihcw3fh77RfQRy3hkSKC4ESh16nBYYO3G/jkZI
  782. OO4APHaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqe1vLiyk8y3laNu+DwfqO9QUUAd
  783. dp3imKUCO+Xy3/56KPlP19K6GEi4CGFhIHIClTkGvMKtWmo3lgH+y3Dxbxg7T/L0PvQB6pqnijTP
  784. DNqLRW+03iL/AKmM8Z77m7fTrXmuseINR1ycyXc52D7sKcIv0H9azCSzFmJJJySe9JQAUUUUAFFF
  785. FABRRRQAUUUUAFFFXtK0q51e8W3t193c9EHqaADStKudXvVtrdfd3PRB6mvUtK0q20izW2tl93cj
  786. 5nPqf8KNK0q20izW2tl93c/ec+p/wretbTy8SSD5uw9KAC0tfLxJIPn7D0rI8VeKoPD1r5ce2W/k
  787. GY4j0Uf3m9vbvR4q8VQeHrby49st/IuY4j0Uf3m9vbvXj11dT3t1Jc3MrSzSNud26k0AF1dT3t1J
  788. c3MrSzSHc7seSahoooA77wZrwuIRpdw372MfuWOPmX+79R/L6V2Cu0bq6MVdTkMpwQa8VgnltriO
  789. eFykkbBlYHoa9Z0bVY9Y02O6TAf7siD+Fu/4elAE/j7w4PFminxHp8e7V7OMJfwRrkzIOBJ9QB+Q
  790. 9q8br3jTNQl0y+juYuQOHQ9HU9Qa4H4k+EYdEvotX0oE6NqRLxcAeTJklo8eg7e3HbNAHC0U+GGW
  791. 4mSGGNpJXYKqKMkk9hXa6h8Ltcs/DSaxbgXpjbF3bQKWe3GMhuPvL1yR0x6c0AcPRRRQAUUUUAFF
  792. FFABRRRQAUUUUAFFFFABRRRQB7d8NZYYfCFn/aWlw3jw3LzWUk+1jACVPyZB2fMpPGOeazPifocG
  793. o/2V/wAIt4akXy/O+0fYbEDrs27vLHs2M+9V/BHjHSof7E0RobuSZ5o4SxjXZuZ/97pk+n4VyfjT
  794. xFD4hvLOS0aQW8cJ/dyIAyOWOc465ATuR+OaAMKHTrufVI9MS3cXskwtxC/yMJC23ac4wc8c9Ks+
  795. I7uC/wDFGr3ls/mW9xezSxPgjcrOSDg8jg962vCniPXU1SCMa1qP2eztpriO3+1P5R8mF5FQrnGw
  796. lACOOMjisv8A4SvWH5ubiG+ftJqFrFdSAegeVWYL3wDjJJ7mgDGorZ/4SOSb5b3S9Iu4uoT7Elvg
  797. +u6Dy2PfgnHPTIBB/a2lTfJP4btI4j1ezuZ0lH+60jyKPfKHjPQ8gAxqK2ftPhn/AKBGr/8Ag0j/
  798. APkej7N4Z/6C+r/+CuP/AOSKAMaitn+ydKm+eDxJaRxHol5bTpKP95Y0kUe2HPGOh4B/wj3nf8eO
  799. saRd4+//AKT9m2+n/HwI92efu5xjnGRkAxqtabYy6pqlpp8DIst1MkCFyQoZmCjOM8ZNX/8AhFdV
  800. biBLS7l7Q2d9BcSt/uxxuzNjqcDgAnoK9T8BaB4VWxSTUtHmi1W0mkhe4aWQEMB97aCNjjdgYGQV
  801. BBB6AHkeu30Wp67fXlurpbSzMYI3ABjizhEwOAFUKoA4AAA4FZ9dT4/8P2fh/wASyRaZIradOBLb
  802. rvLPGO6sCAcA5wTnIxySDjlqACiiigAooooA2bT/AELwrqFyeHv5EsogeQyIVllIx0YMLcc8EO2A
  803. eq41bOv/AOjR6Zpq/ct7KKViOBI8yiYsR/eCukeeSREvsBjUAdFo3jPUdEtnht4bWXe24vMhLdMA
  804. ZBHH+JqPxH4om8SQ2QuLaOKW337mjY7X3EdAemNvqfwrBooAKKKKACiiigAooooAKKKKACiiigAo
  805. oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAHxJ5kyJgncQOOtdb4g+Hmq6RpkOs2YOoaPN
  806. CswuY0wY1P8AfTqMevI965rTk33qdcLlq97+EeuNcafdaLM4LWx82DJ52MfmH0B5/wCBUAfPNFfR
  807. Pi/4Q6Rru+70nZpl+csQq5ilPuv8P1Hr0rxm68D69p+trpV9ZNBKw3+YTmMpnG4MOCKAMnStKudX
  808. vFtrZfd3PRB6mvU9K0q20izW2tl93cj5nPqf8KNK0q20izW2tl93cj5nPqf8K3rS18vEkg+fsPSg
  809. AtLXy8SSD5uw9KyPFXiqDw9a7E2y38i/u4j0Uf3m9vbvR4q8VQeHrXZHtlv5B+7iPRR/eb29u9eP
  810. XV1Pe3UlzcytLNIdzux5JoALq6nvbqS5uZWlmkO53Y8k1DRRQAUUUUAFa/h3Wn0bUVckm2kIWZPU
  811. dj9RmsiigD2xHWRFdGDIwDKw6EHoa1NPaz1CyudA1YZ02+GC2BmGTs4J6Yx/nmvOfBGtmUDSJ2y4
  812. 5tye/qv9R+NemWdmLdd74Mp/8doAw/C3gu28OPLcSOtzeFmVJduAiZ4wPUjr+X19H8I3hg1VoC2F
  813. nTj/AHhyP61z9S207Wt1FcJ96Jw4/CgCl8Rvgxb6sJNW8MRRW18AzzWY4S4PXKdlbrxwDx07/Pdx
  814. bT2lw9vcwyQzIcPHIpVlPuD0r7ijkWWJJEOVdQw+hrjvHnw30nxxal3C2mqrgR3ypkkD+Fx/EP1H
  815. H0oA+SaK2PEfhjVvCmqPp+rWrwyAnZJg+XKP7yN/EP8AJwax6ACiiigAooooAKKKKACiiigAoooo
  816. AK2fF3PjHWZBykt7LLG3Z0diysD3UqQQehBBrGrZ8TfNqNpKvMUmnWexx0bbbxo2D3wysp9CpHUG
  817. gA0n9zoPiCd+IpLaK1VvWVp45Av/AHzDIc9Pl9SM41bLf6P4Ki2c/bdRfzM9vIjXZj6/aHz16LjG
  818. DnGoAKKKKACiiigAooooAVWKOGU4ZTkGvTfCnjjQrGxgtb1JYWQl5WMeVkO7plcnOMDJHb6V5jRQ
  819. B1Pj28Goa9FdwMsljLbqbSUKVMkYZgSQeQQ4kXt93uME8tWnpt3A9tNpl8+22m+aGVgWFtNlf3mB
  820. ztIG1gOxDYYoor0LwR4D8MeLreWO6lvrTULdE8yO3nTZIMY3qGUt1Hzc4BYYwCFAB5VRXvF/8B9H
  821. kgUafq99bzbslrhUmUrg8YATnOOc/hXjXiDw/qPhnV5dM1OHy505Vhyki9nU91OP5g4IIoAzK0ND
  822. sYtR1q2trhnW1LF7l0I3JCgLSMOvIRWOMHOOAelZ9bOk/wCi6HrV+eCY47KJl+8jytuJz2UxxSoc
  823. c/PjBBOAChqV9LqmqXeoTqiy3UzzuEBChmYscZzxk1VoooAKKKKACiiigAooooAKKKKACiiigAoo
  824. ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDS0hMySvjoAM11fhrWG0DxFZaiGYJFI
  825. BKF/ijPDD8v5VzmlJttS3HzN/Kr1AH1KsiyQiWEiVWXchU8MCMjB968t1XUrrU715bokFSVWIdI/
  826. YVu/C/XV1Pw0NPkb/SdP/dkE8tGfun+Y/AVd1rw47ahLqFqnmb8Fox1DdyB3oA5i0tfLxJIPm7D0
  827. rI8VeKoPD1r5abZb+RcxxHoo/vN7e3euutdIvdRguPsu2N1RhG8g+XzMHaD+OM186ai95JqVw1+X
  828. N35hE2/ruHBFAEd1dT3t1Jc3MrSzSHczseSahoooAKKKKACiiigAp8MMlxMkMMbSSuQqooyST2FE
  829. MMlxMkMKNJK7BVRRksT2FexeDvB0WgQi7uwsmpOvJ6iEH+Ee/qfw+oAeDvB0WgQi7uwsmpOOT1EI
  830. /uj39T+A9+soooAKKKKAO98K3f2nRVjJ+aBjGfp1H+fatuuH8I3fk6q1ux+WdMD/AHhyP0zXcUAe
  831. F/tFzRn/AIR2ASDzV+0OUzyFPlgH8Sp/KvCq9i/aHljbxRpEaupdLE7lB5XMjYyK8doAKKKKACii
  832. igAooooAKKKKACiiigArZ1b99oPh+dOYo7aW1ZvSVZ5JCv8A3zNGc9Pm9QcY1bLf6R4Ki2cfYtRf
  833. zM9/PjXZj6fZ3z06rjOTgANe/d2mh2r8TQacPMX+75kssyc9DmOVG/HB5BAxq2fFnyeKtQth9yzk
  834. +xRnuUhAiUn/AGiqAnoM54HSsagAooooAKKKKACiiigAooooAmtI/Nu4kwCN2SD3A5rufCxmXxNY
  835. PbztDIkm8OvXABJH0IBB9jXCQTNbzLIpPHUeo9K9O8AxfaJbjUF3CMR+WMrwSTk8+o2j86APT4vE
  836. WoR53NHLn++nT8sVwfxavYtT8PW095CBcwT7LZ4sjG4ZYMCcYIT0zkDtmumrzP4oX7tfWOnjcI0j
  837. M5+bhixKjj1G08/7RoA4CtnVv9F0PRbAcExyXsqt95HlbaBjspjiicZ5+fOSCMUNNsZdU1S00+Bk
  838. WW6mSBC5IUMzBRnGeMmptcvotR1q6ubdXW1LBLZHA3JCgCxqevIRVGcnOOSetAGfRRRQAUUUUAFF
  839. FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFKo3MF9TigDo
  840. LJNlnEOPu549+anoAwAPTip4osfM3X09KANTw9rmoeG703dhIFd12yRuMo69cEf16ivYPDfxA0vX
  841. AkFwwsb3AzHKwCOf9hv6Hn614hRQB9OYxxjFeAfGrwx/Zuvx65bx4ttRz5uBwsw6/wDfQ5+u6r/h
  842. zx/quh+VbzMb2wQbfJkPzIPRW7fQ5Fd5qFxo3xL8JXumWs4W5dN0cU2FkjlXlTjPIzwSOME0AfMd
  843. FSTwS21xJBMjJLE5R0YYKsDgg1HQAUUUUAFFFFAFmw1C60u9jvLOUxTx/dYDNelaD8SoLnbBq8Xk
  844. y9POiGVP1Hb8K8sooA+jLe4gu4RNbypLGejIcipa8D0nX77SZg8E8iD/AGT/ADHQj2NekaN4+guU
  845. Vb9Avbzohkf8CXqPwoA7Siore5gu4RNbzJLGejIcipaAJbedrW5iuE+9G4cfga9RR1kjV1+6wDDn
  846. PBrymvQPDN39q0WJWOXhJiP0HT9MUAfPfx4nim+JBSORWaKyhSQA/dbk4P4EH8a8yrt/i9PFcfFL
  847. W2icOqvHGSOzLGqsPwII/CuIoAKKKKACiiigAooooAKKKKACiiigByIZJFQYyxAGa+ptM8MeHNR0
  848. /T9Ui0S2tHlFtfLHb5jVJEDMhwmASPMbkjnv0GPl+xQPexA56549ua+hLJ5tPs4rW2uJkjjUKMOR
  849. nAAycd+KAOe+Jvw50LRfB0mp6JYJazW08bTM08rlo2OzADEjO5kPbgHnsfFK9v8AHesJD4Ylh1Nr
  850. 25trmRIzFFcbCSDvHzMGAHyf3T+HUeU/afDP/QI1f/waR/8AyPQBjUVs+V4Zm/efa9XtM/8ALD7L
  851. Hc7f+2nmR7s9fuDGcc4yT7N4Z/6C+r/+CuP/AOSKAMaitn+zdEuP+PXxB5O3739o2bxZ9NvlGXPf
  852. OdvbGecH9iaf/wBDRpH/AH6u/wD4xQBjUVs/2DbyfJa+INIuJj92LdLDu9fnljRBxk8sPQZOAT/h
  853. F9Q/5+NI/wDBxaf/ABygDGorZ/4RfUP+fjSP/Bxaf/HKP+EQ8Tf9C7q//gFJ/wDE0AY1W7XVNQso
  854. jFaX91bxk7isUzICfXAPXgVe/wCEQ8Tf9C7q/wD4BSf/ABNZl3Z3VhcvbXltNbXCY3xTIUZcjIyD
  855. yOCDQBsaV4v1fTr5Z5L26uoiCjxSzFsg913ZAYdQcHkcgjINbxELl9WNzc3P2r7TGk0Vz5YTzUKg
  856. DgcBhjawBIDKwycZrKrt/Aep2mm3EK6tZWd9pk0v7yO6hEohzgGRAQcNwM4HzAAHoCADB0D/AEaP
  857. U9Sb7lvZSxKDwJHmUwhQf7wV3kxySIm9yMavqm48JeEtb0W5sLew05ba4CsZLFI0YMAdjhlHUZOD
  858. 0wSOQSD80+IPD+o+GdXl0zU4fLnTlWHKSL2dT3U4/mDggigDMooooAKKKKACiiigAooooAKKKKAC
  859. iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACrFim+9iHPBzx7VXp8UskL742KtjG
  860. RQB1kUWPmI5/lT2kRBl3VR6k4rk3u7mQ5aeQnp941DQB1b39pHndcJkdQDmoG1qzUjDO3+6v+Nc3
  861. RQBuPr6Y+S3Yn/aamJ4ku4J0mtQIZUOUdWIZT6gjGKxqKALOoahdarqE19ey+bcztukfAG4+uBxV
  862. aiigAooooAKKKKACiiigAp8U0kL742KmmUUAb+m+JJ7GYSRSSW8ndozkH6jvXe6N8QLe5Cx36qG/
  863. 56xDj8V6j8K8joBIORwaAPoy3uIbuETW8qSxnoyHIrqPB10Y9SktT0nTIH+0v/1s18u6dr2paVMJ
  864. bS6dG7jqD9R3r0Hwv8V1tNQtZNWtypikVvPhGeh5yv59PyoA5H4hTxXPxD8QTQSLJG19KVZeh+Y1
  865. zVX9bniutf1G4gcPDLdSujDupYkH8qoUAFFFFABRRRQAUUUUAFFFFABRRRQBPZXC2l/b3LxCZIpV
  866. kaNujgEHB+td9/wtT/qDf+TX/wBhXnVFAHU+KfGJ8SWNtAtu1sscjPIm4OG4AU5wDnl+Pcde3LUU
  867. UAFT2VncajfQWVpGZLi4kWKJAQNzE4AyeBz61BVzS03XoOcbFJ+vb+tAHUf8Km8b/wDQE/8AJqH/
  868. AOLrjpoZbeeSCeN4po2KPG6lWVgcEEHoQa+q/wDhKv8Apy/8i/8A1q+dviAIP+E61V7eHyUlkWUp
  869. vLfM6qzHJ9WJPtmgDmqKKKACiiigArTtPEeu2FsltZ61qNtbpnZFDdOirk5OADgckmsyigDZ/wCE
  870. v8Tf9DFq/wD4Gyf/ABVbuk6nqPiiW0sL29ubr94oYzy73QAfMVZskZGSR3IGc4FcTVrT9Ru9KvFu
  871. 7KXyp1BAbaGxkYPBBFAH0DXivjbUTqPiq7OW8u3P2dAwAxt4PTqN24/j+FO/4TvxL/0Ev/IEf/xN
  872. c5QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
  873. FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
  874. AFFFFABRRRQAUUUUAFFFFABRRRQAVb0u+/s3VLW98vzPIkD7N2N2O2e1VKKAPV/+FnaL/wA+t/8A
  875. 9+0/+LrzHULv7fqV1ebNnnzPLsznbuJOM9+tVqKACiiigAooooAKKKKACiiigAooooAKKKKACiii
  876. gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
  877. CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
  878. KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z
  879.  
  880. ------=_NextPart_000_0000_01C202F4.6F17ED30--
  881.