package Savage.ShipsCivilian.Tugboats;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Navigation.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Texturing.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Tug Boat, Type 2. </p>
 <p> Related links: Catalog page <a href="../../../../ShipsCivilian/Tugboats/BoatTug02Index.html" target="_blank">BoatTug02</a>,  source <a href="../../../../ShipsCivilian/Tugboats/BoatTug02.java">BoatTug02.java</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../ShipsCivilian/Tugboats/BoatTug02.x3d">BoatTug02.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Tug Boat, Type 2 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Planet 9 Studios, Inc. </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translator </i> </td>
			<td> Xeena VRML importer, X3D-Edit 3.1, <a href="https://www.web3d.org/x3d/content/README.X3D-Edit.html" target="_blank">https://www.web3d.org/x3d/content/README.X3D-Edit.html</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 4 May 2005 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> translated </i> </td>
			<td> 4 May 2005 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 28 November 2019 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/BoatTug02.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/BoatTug02.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit 3.3, <a href="https://www.web3d.org/x3d/tools/X3D-Edit" target="_blank">https://www.web3d.org/x3d/tools/X3D-Edit</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> Vrml97ToX3dNist, <a href="http://ovrt.nist.gov/v2_x3d.html" target="_blank">http://ovrt.nist.gov/v2_x3d.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Planet 9 Studios, Inc.
 */

public class BoatTug02
{
	/** Default constructor to create this object. */
	public BoatTug02 ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_INTERCHANGE).setVersion(X3D.VERSION_3_0)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("BoatTug02.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Tug Boat, Type 2"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Planet 9 Studios, Inc."))
    .addMeta(new meta().setName(meta.NAME_TRANSLATOR ).setContent("Xeena VRML importer, X3D-Edit 3.1, https://www.web3d.org/x3d/content/README.X3D-Edit.html"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("4 May 2005"))
    .addMeta(new meta().setName(meta.NAME_TRANSLATED ).setContent("4 May 2005"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("28 November 2019"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/BoatTug02.x3d"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setInfo(new String[] {"Created 2005. Planet 9 Studios, Inc."}).setTitle("BoatTug02.x3d"))
    .addChild(new Viewpoint().setDescription("Tug Boat 2").setPosition(0.0,4.0,20.0))
    .addChild(new Viewpoint("CamBoatTug02").setDescription("Tug Boat 2").setFieldOfView(0.60243).setOrientation(0.124491,-0.945607,-0.300549,-2.39496).setPosition(20.0,20.0,-20.0))
    .addChild(new Viewpoint().setDescription("Tug Boat 2 from behind").setOrientation(0.0,1.0,0.0,-1.570796).setPosition(-30.0,8.0,0.0))
    .addChild(new Transform("BoatTug02").setRotation(0.0,-0.707107,0.707107,-3.14159).setScale(0.426276,0.426276,0.426276).setTranslation(3.68883,4.51392,0.852553)
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material("Def23").setAmbientIntensity(1.0).setDiffuseColor(0.588235,0.588235,0.588235).setShininess(0.145))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug08.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug08.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {3,1,0,-1,2,1,3,-1,7,4,5,-1,6,7,5,-1}).setNormalIndex(new int[] {159,159,159,-1,159,159,159,-1,92,92,92,-1,92,92,92,-1}).setTexCoordIndex(new int[] {0,1,2,-1,3,1,0,-1,4,5,6,-1,7,4,6,-1})
          .setCoord(new Coordinate("BoatTug02-COORD").setPoint(getBoatTug02_COORD_6_19_point()))
          .setNormal(new Normal("Def24").setVector(getDef24_6_20_vector()))
          .setTexCoord(new TextureCoordinate("BoatTug02-TEXCOORD").setPoint(getBoatTug02_TEXCOORD_6_21_point()))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug09.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug09.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {0,1,5,-1,0,5,4,-1,2,3,7,-1,2,7,6,-1}).setNormalIndex(new int[] {177,177,177,-1,177,177,177,-1,123,123,123,-1,123,123,123,-1}).setTexCoordIndex(new int[] {12,13,14,-1,12,14,15,-1,8,9,10,-1,8,10,11,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug04.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug04.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {1,8,9,-1,1,9,5,-1,44,45,47,-1,47,46,44,-1,40,41,45,-1,45,44,40,-1,41,43,47,-1,47,45,41,-1,43,42,46,-1,46,47,43,-1,42,40,44,-1,44,46,42,-1,53,49,52,-1,49,53,50,-1,56,50,53,-1,61,52,60,-1,52,61,53,-1,56,61,62,-1,61,56,53,-1,58,50,56,-1,58,62,59,-1,62,58,56,-1,50,51,48,-1,51,50,58,-1,55,60,54,-1,60,55,61,-1,57,61,55,-1,61,57,62,-1,59,62,57,-1,68,67,64,-1,64,65,68,-1,71,68,65,-1,76,75,67,-1,67,68,76,-1,71,77,76,-1,76,68,71,-1,73,71,65,-1,73,74,77,-1,77,71,73,-1,65,63,66,-1,66,73,65,-1,70,69,75,-1,75,76,70,-1,72,70,76,-1,76,77,72,-1,74,72,77,-1,52,67,75,-1,75,60,52,-1,60,75,69,-1,69,54,60,-1}).setNormalIndex(new int[] {106,106,106,-1,106,106,106,-1,206,206,206,-1,206,206,206,-1,30,30,30,-1,30,30,30,-1,92,92,92,-1,92,92,92,-1,185,185,185,-1,185,185,185,-1,159,159,159,-1,159,159,159,-1,72,36,18,-1,36,72,150,-1,33,150,72,-1,146,146,146,-1,146,146,146,-1,20,20,20,-1,183,183,183,-1,167,150,33,-1,51,78,86,-1,78,51,136,-1,150,158,147,-1,158,150,167,-1,208,208,208,-1,149,149,149,-1,92,92,92,-1,92,92,92,-1,143,143,143,-1,3,171,193,-1,193,80,3,-1,186,3,80,-1,146,146,146,-1,146,146,146,-1,174,174,174,-1,112,112,112,-1,96,186,80,-1,202,154,8,-1,8,69,202,-1,80,79,91,-1,91,96,80,-1,58,58,58,-1,216,216,216,-1,159,159,159,-1,159,159,159,-1,213,213,213,-1,146,146,146,-1,146,146,146,-1,212,212,212,-1,212,212,212,-1}).setTexCoordIndex(new int[] {22,23,24,-1,22,24,25,-1,52,53,54,-1,55,56,57,-1,58,59,60,-1,61,62,63,-1,64,65,66,-1,67,49,45,-1,68,69,70,-1,71,51,47,-1,72,44,73,-1,48,50,46,-1,295,291,294,-1,291,295,292,-1,296,292,295,-1,266,268,267,-1,268,266,269,-1,270,266,271,-1,266,270,269,-1,297,292,296,-1,272,271,273,-1,271,272,270,-1,292,293,290,-1,293,292,297,-1,306,309,305,-1,309,306,310,-1,307,310,306,-1,310,307,311,-1,308,311,307,-1,287,286,283,-1,283,284,287,-1,288,287,284,-1,274,276,275,-1,275,277,274,-1,278,279,274,-1,274,277,278,-1,289,288,284,-1,280,281,279,-1,279,278,280,-1,284,282,285,-1,285,289,284,-1,299,298,302,-1,302,303,299,-1,300,299,303,-1,303,304,300,-1,301,300,304,-1,268,275,276,-1,276,267,268,-1,243,245,244,-1,244,242,243,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug11.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug11.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {2,6,9,-1,9,8,2,-1}).setNormalIndex(new int[] {42,42,42,-1,42,42,42,-1}).setTexCoordIndex(new int[] {312,313,314,-1,314,315,312,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug07.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug07.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {10,12,11,-1,10,13,12,-1,10,14,13,-1,10,11,14,-1,11,16,15,-1,11,12,16,-1,12,17,16,-1,12,13,17,-1,13,18,17,-1,13,14,18,-1,14,15,18,-1,14,11,15,-1,17,15,16,-1,17,18,15,-1,19,21,20,-1,19,22,21,-1,19,23,22,-1,19,20,23,-1,20,25,24,-1,20,21,25,-1,21,26,25,-1,21,22,26,-1,22,27,26,-1,22,23,27,-1,23,24,27,-1,23,20,24,-1,26,24,25,-1,26,27,24,-1}).setNormalIndex(new int[] {104,104,104,-1,104,104,104,-1,104,104,104,-1,104,104,104,-1,21,197,7,-1,21,44,197,-1,44,48,197,-1,44,133,48,-1,133,108,48,-1,133,189,108,-1,189,7,108,-1,189,21,7,-1,76,76,76,-1,76,76,76,-1,104,104,104,-1,104,104,104,-1,104,104,104,-1,104,104,104,-1,27,196,65,-1,27,46,196,-1,46,157,196,-1,46,139,157,-1,139,107,157,-1,139,187,107,-1,187,65,107,-1,187,27,65,-1,76,76,76,-1,76,76,76,-1}).setTexCoordIndex(new int[] {325,326,327,-1,325,328,326,-1,325,329,328,-1,325,327,329,-1,327,330,331,-1,327,326,330,-1,326,332,330,-1,326,328,332,-1,328,333,332,-1,328,329,333,-1,329,331,333,-1,329,327,331,-1,332,331,330,-1,332,333,331,-1,316,317,318,-1,316,319,317,-1,316,320,319,-1,316,318,320,-1,318,321,322,-1,318,317,321,-1,317,323,321,-1,317,319,323,-1,319,324,323,-1,319,320,324,-1,320,322,324,-1,320,318,322,-1,323,322,321,-1,323,324,322,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setAmbientIntensity(1.0).setDiffuseColor(0.588,0.588,0.588).setShininess(0.145))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug03.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug03.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {28,32,31,-1,28,29,32,-1,29,33,32,-1,29,30,33,-1,30,31,33,-1,30,28,31,-1,34,38,37,-1,34,35,38,-1,35,39,38,-1,35,36,39,-1,36,37,39,-1,36,34,37,-1,79,80,86,-1,86,85,79,-1,81,82,88,-1,88,87,81,-1,85,86,92,-1,92,91,85,-1,87,88,94,-1,94,93,87,-1,97,135,136,-1,98,137,138,-1,138,99,98,-1,98,99,104,-1,104,103,98,-1,103,104,111,-1,111,110,103,-1,80,79,114,-1,114,116,80,-1,118,82,81,-1,81,117,118,-1,121,116,114,-1,114,122,121,-1,124,118,117,-1,117,123,124,-1,126,121,122,-1,122,115,126,-1,128,124,123,-1,123,127,128,-1,142,141,130,-1,131,132,144,-1,144,143,131,-1,111,132,131,-1,131,110,111,-1,135,91,92,-1,92,136,135,-1,93,94,138,-1,138,137,93,-1,126,115,141,-1,141,142,126,-1,144,128,127,-1,127,143,144,-1,97,136,150,-1,150,146,97,-1,98,151,137,-1,102,97,146,-1,146,147,102,-1,109,102,147,-1,147,148,109,-1,142,130,149,-1,149,152,142,-1,131,143,153,-1,130,109,148,-1,148,149,130,-1}).setNormalIndex(new int[] {92,70,92,-1,92,70,70,-1,70,118,70,-1,70,105,118,-1,105,92,118,-1,105,92,92,-1,206,75,206,-1,206,75,75,-1,75,124,75,-1,75,124,124,-1,124,206,124,-1,124,206,206,-1,119,93,194,-1,194,34,119,-1,201,207,25,-1,25,205,201,-1,34,194,23,-1,23,166,34,-1,205,25,16,-1,16,162,205,-1,90,13,181,-1,53,140,144,-1,144,39,53,-1,53,39,172,-1,172,6,53,-1,6,172,50,-1,50,132,6,-1,93,119,191,-1,191,160,93,-1,135,207,201,-1,201,130,135,-1,38,160,191,-1,191,102,38,-1,179,135,130,-1,130,134,179,-1,94,38,102,-1,102,12,94,-1,115,179,134,-1,134,37,115,-1,74,84,57,-1,35,209,87,-1,87,190,35,-1,50,209,35,-1,35,132,50,-1,1,166,23,-1,23,0,1,-1,162,16,144,-1,144,140,162,-1,94,12,68,-1,68,66,94,-1,87,115,37,-1,37,190,87,-1,90,181,9,-1,9,110,90,-1,53,153,140,-1,77,90,110,-1,110,62,77,-1,15,15,15,-1,15,15,15,-1,74,57,145,-1,145,31,74,-1,35,190,215,-1,57,85,100,-1,100,145,57,-1}).setTexCoordIndex(new int[] {32,30,33,-1,34,27,30,-1,27,31,30,-1,27,28,31,-1,28,29,31,-1,28,26,29,-1,41,39,42,-1,43,36,39,-1,36,40,39,-1,36,37,40,-1,37,38,40,-1,37,35,38,-1,490,491,492,-1,492,493,490,-1,392,393,394,-1,394,395,392,-1,493,492,494,-1,494,495,493,-1,395,394,396,-1,396,397,395,-1,496,497,498,-1,399,400,401,-1,401,402,399,-1,399,402,404,-1,404,403,399,-1,418,419,420,-1,420,421,418,-1,491,490,499,-1,499,500,491,-1,422,423,424,-1,424,425,422,-1,501,500,499,-1,499,502,501,-1,405,406,407,-1,407,408,405,-1,503,501,502,-1,502,504,503,-1,409,405,408,-1,408,410,409,-1,505,506,507,-1,411,413,414,-1,414,415,411,-1,417,413,411,-1,411,416,417,-1,497,495,494,-1,494,498,497,-1,397,396,401,-1,401,400,397,-1,503,504,506,-1,506,505,503,-1,414,409,410,-1,410,415,414,-1,496,498,508,-1,508,509,496,-1,399,398,400,-1,510,496,509,-1,509,511,510,-1,512,510,511,-1,511,513,512,-1,505,507,514,-1,514,515,505,-1,411,415,412,-1,507,512,513,-1,513,514,507,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug10.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug10.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {51,58,59,-1,73,66,51,-1,59,74,51,-1,54,69,70,-1,70,55,54,-1,55,70,72,-1,72,57,55,-1,57,72,74,-1,74,59,57,-1,51,74,73,-1,90,84,107,-1,107,106,90,-1,134,140,90,-1,90,106,134,-1,84,78,120,-1,120,107,84,-1,101,96,108,-1,108,113,101,-1,135,115,91,-1,91,115,114,-1,91,114,79,-1,91,79,85,-1,115,122,114,-1,135,109,130,-1,130,141,135,-1,108,96,140,-1,140,134,108,-1,97,102,109,-1,97,109,135,-1,141,115,135,-1}).setNormalIndex(new int[] {82,82,82,-1,54,54,54,-1,54,54,54,-1,128,128,128,-1,128,128,128,-1,17,17,17,-1,17,17,17,-1,67,67,67,-1,67,67,67,-1,142,142,142,-1,168,55,204,-1,204,97,168,-1,184,29,168,-1,168,97,184,-1,55,10,163,-1,163,204,55,-1,73,178,109,-1,109,73,73,-1,114,114,114,-1,60,60,60,-1,60,60,60,-1,156,156,156,-1,88,88,88,-1,95,95,95,-1,95,95,95,-1,109,178,29,-1,29,184,109,-1,95,95,95,-1,95,95,95,-1,114,114,114,-1}).setTexCoordIndex(new int[] {254,256,255,-1,257,258,254,-1,255,259,254,-1,260,262,261,-1,261,263,260,-1,263,261,264,-1,264,265,263,-1,265,264,259,-1,259,255,265,-1,254,259,257,-1,516,517,518,-1,518,519,516,-1,520,521,516,-1,516,519,520,-1,517,522,523,-1,523,518,517,-1,524,525,526,-1,526,527,524,-1,478,479,480,-1,480,479,481,-1,480,481,482,-1,480,482,483,-1,479,484,481,-1,478,485,486,-1,486,487,478,-1,526,525,521,-1,521,520,526,-1,488,489,485,-1,488,485,478,-1,487,479,478,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug02.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug02.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(getIndexedFaceSet_5_75_coordIndex()).setNormalIndex(new int[] {43,49,151,-1,151,19,43,-1,169,26,211,-1,211,198,169,-1,203,10,55,-1,55,210,203,-1,19,151,155,-1,155,126,19,-1,198,211,89,-1,89,63,198,-1,210,55,168,-1,168,192,210,-1,164,98,40,-1,40,116,164,-1,71,52,28,-1,28,41,71,-1,178,64,11,-1,11,29,178,-1,164,116,117,-1,117,122,164,-1,71,41,14,-1,14,161,71,-1,64,178,22,-1,22,170,64,-1,122,117,180,-1,180,61,122,-1,161,14,111,-1,111,56,161,-1,200,49,43,-1,43,199,200,-1,182,26,169,-1,169,99,182,-1,81,200,199,-1,199,173,81,-1,141,182,99,-1,99,129,141,-1,204,163,131,-1,131,138,204,-1,59,81,173,-1,173,125,59,-1,32,141,129,-1,129,47,32,-1,97,204,138,-1,138,120,97,-1,2,176,152,-1,152,148,2,-1,83,103,5,-1,5,113,83,-1,109,184,165,-1,165,214,109,-1,180,176,2,-1,2,61,180,-1,111,103,83,-1,83,56,111,-1,175,109,214,-1,214,101,175,-1,126,155,45,-1,45,188,126,-1,63,89,28,-1,28,52,63,-1,192,168,29,-1,29,11,192,-1,59,125,137,-1,137,24,59,-1,32,47,113,-1,113,5,32,-1,184,97,120,-1,120,165,184,-1,188,45,40,-1,40,98,188,-1,24,137,148,-1,148,152,24,-1}).setTexCoordIndex(getIndexedFaceSet_5_75_texCoordIndex())
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug01.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug01.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {78,83,119,-1,119,120,78,-1,112,105,101,-1,101,113,112,-1}).setNormalIndex(new int[] {10,203,131,-1,131,163,10,-1,101,170,22,-1,22,175,101,-1}).setTexCoordIndex(new int[] {388,389,390,-1,390,391,388,-1,384,385,386,-1,386,387,384,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug06.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug06.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {49,64,52,-1,67,52,64,-1}).setNormalIndex(new int[] {4,4,4,-1,4,4,4,-1}).setTexCoordIndex(new int[] {246,248,247,-1,249,247,248,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))
      .addChild(new Shape()
        .setAppearance(new Appearance()
          .setMaterial(new Material().setUSE("Def23"))
          .setTexture(new ImageTexture().setUrl(new String[] {"textures/BoatTug05.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Tugboats/textures/BoatTug05.jpg"})))
        .setGeometry(new IndexedFaceSet().setCoordIndex(new int[] {48,51,63,-1,51,66,63,-1}).setNormalIndex(new int[] {121,121,121,-1,121,121,121,-1}).setTexCoordIndex(new int[] {250,252,251,-1,252,253,251,-1})
          .setCoord(new Coordinate().setUSE("BoatTug02-COORD"))
          .setNormal(new Normal().setUSE("Def24"))
          .setTexCoord(new TextureCoordinate().setUSE("BoatTug02-TEXCOORD"))))));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method

		/** Define subarrays using type double[] */
		private double[] getBoatTug02_COORD_6_19_point_1()
		{
			double[] value = {8.51405,0.0,5.14291,1.99899,0.0,-5.19453,-2.86021,0.0,-5.64585,-3.03968,0.0,4.19805,8.51405,4.0,5.14291,1.99899,4.0,-5.19453,-2.86021,4.0,-5.64585,-3.03968,4.0,4.19805,-1.89763,0.8,-6.09181,-1.89763,3.2,-6.09181,11.6683,4.78991,5.82786,11.6683,5.96954,5.82786,13.6271,4.78991,6.2923,11.6683,3.61027,5.82786,9.70942,4.78991,5.36342,11.332,5.68406,0.551631,12.9078,4.78991,0.519934,11.332,3.89575,0.551631,9.75624,4.78991,0.583328,11.6698,-0.772967,5.82822,11.6698,0.40667,5.82822,13.6287,-0.772967,6.29266,11.6698,-1.9526,5.82822,9.71097,-0.772967,5.36378,11.332,0.121187,0.551642,12.9078,-0.772967,0.519945,11.332,-1.66712,0.551642,9.75619,-0.772968,0.583339,-0.182963,2.02643,-7.05341,-0.125107,1.92622,-7.05341,-0.240818,1.92622,-7.05341,-0.182962,2.02643,-13.0186,-0.125106,1.92622,-13.0186,-0.240818,1.92622,-13.0186,-0.182962,3.10418,-11.8714,-0.17279,3.10418,-11.8538,-0.193134,3.10418,-11.8538,-0.182962,0.834691,-11.8714,-0.17279,0.834691,-11.8538,-0.193134,0.834691,-11.8538,-0.754648,1.51504,-5.78697,-0.754648,2.46076,-5.78697,0.449099,1.51504,-5.55119,0.449099,2.46076,-5.55119,-0.764345,1.51504,-7.05341,-0.764345,2.46076,-7.05341,0.44725,1.51504,-7.05341,0.44725,2.46076,-7.05341,14.694,-2.23827,8.60319,-5.73387,-0.226293,6.34,-3.60745,-1.63794,6.57559,13.9432,-2.20985,6.50222,-4.09372,-0.348652,-0.785332,-3.16531,-1.63863,-0.733662,-3.61832,0.242179,3.07292,-3.04661,-1.03886,3.01884,3.05432,-1.82576,0.673146,2.35802,-1.03886,3.6003,6.79835,-1.96,3.85217,6.79641,-1.03886,3.85166,-3.58169,0.241875,-0.756835,-3.00086,-1.03917,-0.724509,3.05401,-1.03917,0.653549,14.694,6.23828,8.60319,-5.73387,4.2263,6.34,-3.60745,5.63794,6.57559,13.9432,6.20985,6.50222,-4.09372,4.34866,-0.785332,-3.16531,5.63864,-0.733661,-3.61832,3.75783,3.07292,-3.0466,5.03887,3.01884,3.05432,5.82577,0.673146,2.35802,5.03887,3.6003,6.79835,5.96001,3.85217,6.79641,5.03887,3.85166,-3.58169,3.75813,-0.756835,-3.00086,5.03917,-0.724509,3.05401,5.03917,0.653549,31.858,-0.182285,11.0642,30.9595,0.410575,8.43117,30.9464,0.404201,7.85733,31.5893,-0.00942,7.8588,32.5553,-0.630873,9.29861,33.0205,-0.930141,9.57771,27.9844,-3.39475,11.0642,27.705,-2.27596,8.45491,27.7034,-2.28533,7.85733,27.9016,-3.06775,7.85879,28.1994,-4.24331,9.29861,28.3429,-4.80942,9.57771,11.2512,-3.41052,11.0666,11.4183,-2.29743,8.21521,11.4119,-2.27163,7.86676,11.412,-3.05405,7.86337,11.3841,-4.24282,8.89792,11.3702,-4.81148,9.17349,-10.764,-3.39493,11.0665,-10.3572,-2.30419,6.41652,-10.244,-2.4813,4.87403,-10.8513,-3.93985,7.19781};
			return value;
		}
		private double[] getBoatTug02_COORD_6_19_point_2()
		{
			double[] value = {-11.0351,-4.80945,7.32679,-14.6181,-0.285128,11.0702,-13.5787,0.383536,6.0909,-13.9972,-0.018179,4.41632,-15.2361,-0.686314,7.057,-15.7132,-0.996084,7.31511,11.2512,7.41053,11.0666,27.9844,7.39475,11.0642,-10.764,7.39494,11.0665,-13.5787,3.61647,6.0909,-13.9972,4.01818,4.41632,-15.2361,4.68632,7.057,-15.7132,4.99609,7.31511,-14.6181,4.28513,11.0702,30.9595,3.58943,8.43117,11.4183,6.29743,8.21521,30.9464,3.5958,7.85733,31.5893,4.00943,7.85879,32.5553,4.63088,9.29861,33.0205,4.93015,9.57771,31.858,4.18229,11.0642,27.7034,6.28533,7.85733,27.705,6.27596,8.45491,27.9016,7.06776,7.85879,28.1994,8.24332,9.29861,28.3429,8.80943,9.57771,11.4119,6.27164,7.86676,11.412,7.05405,7.86337,11.3841,8.24282,8.89792,11.3702,8.81148,9.17349,-10.3572,6.30419,6.41657,-10.2458,6.48344,4.87466,-10.8531,7.95066,7.19377,-11.0351,8.80945,7.32679,-4.54593,7.39934,11.0665,-4.54593,-2.9466,7.00392,-4.54593,-2.92268,6.25358,-4.62112,-3.8984,5.88045,-4.60584,-4.30805,7.74805,-4.54593,-4.81004,7.97817,-4.54593,-3.39933,11.0665,-4.54593,6.9466,7.00396,-4.54593,6.92268,6.25358,-4.61766,7.88479,5.88431,-4.60326,8.29924,7.75021,-4.54593,8.81004,7.97817,-10.1017,-1.69117,4.62999,-13.3548,0.398848,4.44349,-13.3548,3.60116,4.44349,-10.1017,5.69118,4.62999,-5.4919,-2.28157,5.00828,-5.50158,-3.17134,4.96038,-5.4919,6.28158,5.00828,-5.50016,7.15842,4.96591};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getDef24_6_20_vector_1()
		{
			double[] value = {-0.0439,0.9985,0.0318,-0.0439,0.9985,0.0324,-0.0374,0.2582,-0.9653,-0.4502,0.8888,-0.0846,-0.9745,0.0,-0.2243,0.066,0.3911,-0.9179,-0.7724,-0.4267,-0.4703,-0.0182,0.9986,-0.0482,0.6471,0.0163,-0.7622,0.1056,0.919,0.3798,0.4482,-0.1925,0.8729,-0.0217,-0.9143,0.4044,-0.0234,-0.9969,0.0742,0.1066,0.9937,0.0316,-0.3484,-0.1938,-0.917,0.9908,0.0,0.1346,0.0283,-0.661,-0.7497,0.1069,0.0,-0.9942,-0.796,-0.5798,-0.1732,5.0E-4,-0.0016,-0.9999,0.2218,-0.0241,-0.9747,0.1027,0.9933,-0.0526,-0.8588,-0.3943,0.3268,-0.0251,0.997,0.0726,0.4864,-0.2561,-0.8353,0.261,-0.7205,-0.6423,0.4049,-0.2021,-0.8917,0.1028,0.9933,-0.0526,0.064,-0.3999,-0.9143,-0.0086,-0.5364,0.8438,-0.9999,0.0,0.0076,0.0833,-0.9103,0.4053,0.0437,0.4361,-0.8988,-0.0312,-0.9995,-0.0034,-0.3404,0.9401,-0.0131,-0.2745,0.8119,-0.5151,-0.5899,-0.8056,-0.0533,0.029,0.673,-0.739,-0.3364,-0.9416,-0.013,-0.2485,-0.7898,-0.5607,0.5447,0.0521,-0.8369,0.0106,-0.1489,-0.9887,-0.4203,0.0,-0.9073,0.0018,-7.0E-4,-0.9999,0.991,-0.0030,-0.1334,0.4621,0.2793,-0.8416,0.991,-0.0030,-0.1336,0.0436,0.4365,-0.8986,-0.0096,-0.9988,-0.0461,0.0017,-8.0E-4,-0.9999,-0.7599,0.4212,-0.4949,0.6493,-0.0010,-0.7604,0.0609,-0.4099,-0.91,-0.2757,-0.8131,-0.5126,0.3477,0.0,-0.9375,0.1632,-0.4258,0.8899,-0.3759,0.1786,-0.9092,0.318,-0.8977,0.3048,0.9132,-0.4072,0.0087,0.0508,-0.0111,-0.9986,0.011,0.0,-0.9999,0.0458,0.0056,-0.9989,0.5354,0.8406,0.0805,0.0443,-0.4362,-0.8987,-0.3305,-0.8751,0.3532,-0.0183,0.9986,-0.0482,-0.0439,-0.9985,0.0318,0.0565,0.0,-0.9984,-0.0439,-0.9985,0.0324,0.6467,0.0187,-0.7624,0.866,-0.5,0.0,-0.0137,-0.1578,-0.9873,-0.4502,-0.8888,-0.0846,9.0E-4,0.0,0.9999,0.1026,-0.9803,0.1682,0.866,0.0,0.5,-0.0201,0.0,-0.9997,0.5535,0.818,0.1557,0.6471,-0.0163,-0.7622,-0.0325,0.9994,-0.0018,-0.2942,0.9555,-0.0184,4.0E-4,0.0017,-0.9999,0.3477,2.0E-4,-0.9375,-0.0159,0.1631,-0.9864,0.1066,-0.9937,0.0316,0.6322,-0.7691,0.093,0.6496,9.0E-4,-0.7602,-0.0273,0.9592,-0.2811,0.0147,0.0266,-0.9995,0.0443,-0.4365,-0.8985,0.3375,0.8775,0.3405,-0.0325,0.9994,-0.0025,0.0,1.0,0.0,-0.9026,0.43,0.0158,-0.0251,-0.997,0.0726,0.1005,0.0,-0.9949,-0.0324,0.9994,-0.0058,-0.0036,0.4483,0.8938,0.4261,0.044,-0.9035,0.4223,0.1732,-0.8897};
			return value;
		}
		private double[] getDef24_6_20_vector_2()
		{
			double[] value = {0.6004,-0.7833,0.1608,-0.8498,0.4139,0.3262,-0.3404,-0.9401,-0.0131,0.0086,0.1548,-0.9879,-0.2307,0.0,0.973,-0.866,-0.4999,0.0,0.2243,0.0,-0.9744,-0.9998,0.0033,-0.0174,-0.9998,0.0033,-0.0178,-0.228,0.5942,0.7712,0.3529,0.8803,0.3168,-0.3491,0.1936,-0.9168,0.219,0.0452,-0.9746,0.0632,0.4012,-0.9137,0.0756,0.0,-0.9971,0.0281,0.661,-0.7497,-0.0438,-0.2876,-0.9567,0.0364,-0.0292,-0.9989,-0.866,-0.5,0.0,-0.9068,0.4212,0.0152,-0.0094,0.8121,0.5833,0.9416,0.0,-0.3365,0.0458,-0.0056,-0.9989,-0.9998,0.0,-0.0182,-0.866,0.0,0.5,0.0493,-0.0043,-0.9987,0.0595,0.0114,-0.9981,0.0769,0.5545,-0.8286,-0.0941,0.0,-0.9955,0.1678,0.4013,-0.9004,0.7207,0.3128,-0.6185,0.6586,0.325,0.6786,-0.7725,0.4264,-0.4703,0.1103,-0.9922,-0.0576,0.279,0.7116,-0.6447,0.7032,0.3459,-0.6211,0.6467,-0.0187,-0.7624,0.4963,-0.2732,-0.8239,0.2325,0.6805,0.6948,0.1104,-0.9922,-0.0576,-0.0848,-0.9587,-0.2714,0.1525,0.4056,-0.9012,0.3475,-2.0E-4,-0.9376,0.0,1.0,-1.0E-4,-0.0287,-0.9599,-0.2785,0.3114,-0.8823,0.3527,0.0555,0.0,-0.9984,-0.0325,-0.9994,-0.0018,0.4088,-0.066,-0.9102,0.9105,0.4131,0.011,-0.2942,-0.9555,-0.0184,4.0E-4,-0.0017,-0.9999,0.4927,-0.0192,-0.8699,-0.1105,-0.8285,-0.5489,0.6496,-9.0E-4,-0.7602,0.062,0.0042,-0.998,0.0147,-0.0266,-0.9995,-0.0097,-0.9988,-0.0461,-0.0325,-0.9994,-0.0025,0.0,-1.0,0.0,-0.9026,-0.43,0.0158,-0.3754,-0.1793,-0.9093,0.0292,-0.673,-0.739,0.4482,0.1925,0.8729,-0.0381,-0.2577,-0.9654,-0.0217,0.9143,0.4044,-0.0234,0.9969,0.0742,-0.0324,-0.9994,-0.0058,-0.0036,-0.4483,0.8938,0.4223,-0.1732,-0.8897,-0.8498,-0.4139,0.3262,-0.796,0.5798,-0.1732,-0.7598,-0.4218,-0.4945,5.0E-4,0.0016,-0.9999,0.2218,0.0241,-0.9747,-0.8588,0.3943,0.3268,-0.0427,0.2876,-0.9567,0.846,0.0,-0.5331,-0.228,-0.5942,0.7712,0.261,0.7205,-0.6423,0.0363,0.0293,-0.9989,0.109,0.9792,0.1709,0.4049,0.2021,-0.8917,0.219,-0.0452,-0.9746,-0.0086,0.5364,0.8438,0.9999,0.0,-0.0012,-0.0312,0.9995,-0.0034,-0.9998,0.0031,-0.0162,0.4632,0.2625,-0.8464,-0.9998,0.0031,-0.0165,-0.0827,0.9581,-0.274,-0.9068,-0.4212,0.0152,-0.0094,-0.8121,0.5833,-0.5899,0.8056,-0.0533,-0.3364,0.9416,-0.013,0.0769,-0.5545,-0.8286,0.9906,-0.0056,-0.1365,0.9906,-0.0056,-0.1362,0.1678,-0.4013,-0.9004,0.0018,7.0E-4,-0.9999};
			return value;
		}
		private double[] getDef24_6_20_vector_3()
		{
			double[] value = {0.0017,8.0E-4,-0.9999,0.7207,-0.3128,-0.6185,0.6493,0.0010,-0.7604,0.6586,-0.325,0.6786,0.1632,0.4258,0.8899,0.279,-0.7116,-0.6447,0.0,0.0,-1.0,0.7032,-0.3459,-0.6211,0.9132,0.4072,0.0087,-0.247,0.7883,-0.5634,0.2325,-0.6805,0.6948,0.1525,-0.4056,-0.9012,0.9999,0.0,0.0095,0.0,-1.0,-1.0E-4,-0.3305,0.8751,0.3532,-0.107,0.8273,-0.5514,0.9105,-0.4131,0.011};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getBoatTug02_TEXCOORD_6_21_point_1()
		{
			double[] value = {0.001543,4.99E-4,0.409006,0.996847,0.993889,0.007182,4.99E-4,0.999501,0.001543,4.99E-4,0.993889,0.007182,0.409006,0.996847,4.99E-4,0.9995,4.99E-4,0.9995,4.99E-4,4.99E-4,0.9995,4.99E-4,0.9995,0.9995,4.99E-4,4.99E-4,4.99E-4,0.999501,0.999501,0.999501,0.9995,4.99E-4,0.9995,4.99E-4,0.188843,0.9995,4.99E-4,7.63E-4,0.9995,4.98E-4,4.99E-4,7.63E-4,0.188843,0.9995,0.116544,0.492094,0.116253,0.617261,0.24488,0.617261,0.244589,0.492094,0.313919,0.349016,0.177057,0.349016,0.235727,0.349016,0.313919,0.563855,0.177057,0.563855,0.235727,0.563855,0.098865,0.349016,0.098865,0.563855,0.098865,0.349016,0.458995,0.233071,0.150622,0.233071,0.291177,0.233071,0.458995,0.708786,0.150622,0.708786,0.291177,0.708786,-0.017195,0.233071,-0.017195,0.708786,-0.017195,0.233071,0.211158,0.467106,0.089253,0.467106,0.089253,0.467106,0.089253,0.467106,0.211158,0.589011,0.089253,0.589011,0.089253,0.589011,0.089253,0.589011,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.589011,0.089253,0.467106,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.589011,0.089253,0.467106,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.467106,0.211158,0.589011,0.012615,0.003974,0.015464,0.397561,0.200129,0.002103,0.19351,0.397562,0.430428,0.001452,0.42823,0.553734,0.803532,0.001485,0.808539,0.996393,0.989003,4.99E-4,0.997069,0.9995,0.430428,0.001452,0.200129,0.002103,0.803532,0.001485,0.997069,0.9995,0.989003,4.99E-4,0.015464,0.397561,0.012615,0.003973,0.19351,0.397561,0.42823,0.553734,0.808539,0.996392,0.623038,0.001475,0.622476,0.818237,0.623037,0.001476,0.622476,0.818237,1.03111,1.01215,-0.005822,1.01215};
			return value;
		}
		private double[] getBoatTug02_TEXCOORD_6_21_point_2()
		{
			double[] value = {0.112706,0.009983,0.874649,0.009983,0.135281,0.019953,0.012658,0.980047,1.01166,0.980047,0.879309,0.019953,-2.78125,0.58818,-2.78139,0.021334,-2.23557,0.021335,-2.23454,0.58818,0.501288,0.026926,0.504771,0.590121,2.60167,0.999301,3.28461,0.89886,2.50523,0.699915,2.50492,0.019125,3.28752,0.020589,3.83504,1.00484,3.83695,0.021621,-2.23557,0.021334,-2.78139,0.021334,-2.78125,0.588179,-2.23454,0.58818,0.501288,0.026926,0.504771,0.590121,3.28483,0.898731,2.60149,0.99817,3.28774,0.021416,2.50459,0.018683,2.5048,0.699125,3.83504,1.00484,3.83695,0.021621,-0.003754,0.993178,-0.001371,0.019205,0.99763,0.019205,0.995561,0.993178,0.140164,0.021047,4.99E-4,0.021047,6.43E-4,0.593032,0.136279,0.593032,0.189374,0.928008,0.181701,0.931012,0.082233,0.900806,0.096749,0.89988,0.082181,0.756602,0.096761,0.756691,0.10453,0.613106,0.095089,0.653437,0.082217,0.653823,0.082232,0.61192,0.18001,0.581711,0.187952,0.584792,0.333653,0.581711,0.32571,0.584792,0.331962,0.931012,0.324289,0.928008,0.43143,0.900806,0.416914,0.89988,0.431482,0.756602,0.416901,0.756691,0.40941,0.613095,0.43143,0.61192,0.431445,0.653823,0.418348,0.653453,0.199179,0.9644,0.187251,0.968688,0.099057,0.944092,0.12162,0.94277,0.099452,0.798368,0.122015,0.798366,0.138754,0.654874,0.121728,0.685621,0.096069,0.685556,0.115968,0.653925,0.186998,0.628892,0.199024,0.633176,0.303396,0.628892,0.29137,0.633176,0.303144,0.968688,0.291216,0.9644,0.391338,0.944092,0.368775,0.94277,0.390943,0.798368,0.36838,0.798366,0.351641,0.654874,0.374488,0.653913,0.393952,0.685566,0.368667,0.685621,0.075103,0.691429,0.10324,0.69193,0.387154,0.69193,0.414899,0.691452,0.001498,0.906741,2.80185,2.50487,0.198156,2.50487,1.9815,4.9975,1.01851,4.9975,0.204662,4.67171,2.79534,4.67171,1.98968,0.002497};
			return value;
		}
		private double[] getBoatTug02_TEXCOORD_6_21_point_3()
		{
			double[] value = {2.80389,0.324993,2.9985,0.906741,0.196107,0.324993,1.01031,0.002497,0.47892,0.830382,0.478783,0.830326,0.420954,0.816501,0.421156,0.816508,0.421249,0.724204,0.420694,0.724231,0.420549,0.631399,0.406736,0.656174,0.40725,0.656174,0.547269,0.830382,0.547406,0.830326,0.605234,0.816501,0.605033,0.816508,0.60494,0.724204,0.605495,0.724231,0.618938,0.656174,0.619452,0.656174,0.60564,0.631399,0.421035,0.652141,0.433729,0.632488,0.478338,0.617666,0.478667,0.61862,0.54785,0.617666,0.547521,0.61862,0.592459,0.632488,0.605154,0.652141,0.002497,2.7828,0.00978,4.58119,4.99022,4.58119,4.9975,2.7828,4.99234,1.085,0.007659,1.085,1.49266,4.9975,3.50735,4.9975,1.44518,0.002497,0.009691,0.416716,4.9903,0.416716,3.55482,0.002497,0.058593,0.462094,0.081935,0.987739,0.058593,0.462094,0.081935,0.987739,0.973478,4.99E-4,0.999501,0.999501,0.026522,4.99E-4,4.99E-4,0.999501,0.9995,4.99E-4,4.99E-4,4.99E-4,0.99615,0.9995,0.003849,0.9995,2.9985,2.9985,2.58169,1.82869,2.90957,1.82901,0.09043,1.82901,0.001498,2.9985,0.41831,1.82869,2.1257,0.001498,0.418309,0.210945,0.874297,0.001498,2.58169,0.210944,0.418309,1.09893,2.58169,1.09893,0.552785,0.396842,0.530536,0.3894,0.540792,0.382899,0.563197,0.394743,0.566447,0.47346,0.552785,0.47346,0.568779,0.520457,0.55278,0.520432,0.447214,0.396842,0.459207,0.382899,0.469464,0.3894,0.436802,0.394743,0.433552,0.47346,0.447214,0.47346,0.431221,0.520457,0.447219,0.520432,0.9995,4.99E-4,0.009852,0.002029,0.10449,0.001869,0.956233,0.271747,0.056987,0.983983,0.102188,0.984536,0.408717,0.893857,0.600788,0.522064,0.9995,4.99E-4,0.00424,0.002029,0.10449,0.001869,0.956233,0.271747,0.060728,0.983983,0.102188,0.984536,0.408717,0.893857,0.600788,0.522064,0.058593,0.462094,0.120169,0.488208};
			return value;
		}
		private double[] getBoatTug02_TEXCOORD_6_21_point_4()
		{
			double[] value = {0.384419,0.49013,0.600693,0.522103,0.081935,0.987739,0.110195,0.987295,0.408638,0.896486,0.058593,0.462094,0.120168,0.488208,0.384419,0.49013,0.600693,0.522103,0.081935,0.987739,0.110195,0.987884,0.408638,0.896486,0.059641,4.99E-4,0.940359,4.98E-4,0.764215,0.999499,0.235785,0.9995,0.5,0.080873,0.9995,4.99E-4,0.5,0.080873,0.5,0.080873,4.99E-4,0.161247,0.815668,0.999501,0.41385,0.994015,0.41385,0.994015,0.012031,0.98853,0.5,0.080878,0.9995,4.99E-4,0.5,0.080878,0.5,0.080878,4.99E-4,0.161257,0.816075,0.999501,0.414257,0.994015,0.414257,0.994015,0.012439,0.988529,0.211158,0.589011,0.089253,0.589011,0.089253,0.589011,0.089253,0.589011,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.589011,0.089253,0.467106,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.589011,0.089253,0.467106,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.467106,0.211158,0.467106,0.211158,0.589011,0.211158,0.589011,0.089253,0.467106,0.211158,0.589011,0.012615,0.003974,0.015464,0.397561,0.200129,0.002103,0.19351,0.397562,0.430428,0.001452,0.42823,0.553734,0.803532,0.001485,0.808539,0.996393,0.989003,4.99E-4,0.997069,0.9995,0.430428,0.001452,0.200129,0.002103,0.803532,0.001485,0.997069,0.9995,0.989003,4.99E-4,0.015464,0.397561,0.012615,0.003973,0.19351,0.397561,0.42823,0.553734,0.808539,0.996392,0.623038,0.001475,0.622476,0.818237,0.623037,0.001476,0.622476,0.818237,1.03111,1.01215,-0.005822,1.01215,0.112706,0.009983,0.874649,0.009983,0.135281,0.019953,0.012658,0.980047,1.01166,0.980047,0.879309,0.019953,-2.78125,0.58818,-2.78139,0.021334,-2.23557,0.021335,-2.23454,0.58818,0.501288,0.026926,0.504771,0.590121,2.60167,0.999301,3.28461,0.89886};
			return value;
		}
		private double[] getBoatTug02_TEXCOORD_6_21_point_5()
		{
			double[] value = {2.50523,0.699915,2.50492,0.019125,3.28752,0.020589,3.83504,1.00484,3.83695,0.021621,-2.23557,0.021334,-2.78139,0.021334,-2.78125,0.588179,-2.23454,0.58818,0.501288,0.026926,0.504771,0.590121,3.28483,0.898731,2.60149,0.99817,3.28774,0.021416,2.50459,0.018683,2.5048,0.699125,3.83504,1.00484,3.83695,0.021621,-0.003754,0.993178,-0.001371,0.019205,0.99763,0.019205,0.995561,0.993178,0.140164,0.021047,4.99E-4,0.021047,6.43E-4,0.593032,0.136279,0.593032,0.189374,0.928008,0.181701,0.931012,0.082233,0.900806,0.096749,0.89988,0.082181,0.756602,0.096761,0.756691,0.10453,0.613106,0.095089,0.653437,0.082217,0.653823,0.082232,0.61192,0.18001,0.581711,0.187952,0.584792,0.333653,0.581711,0.32571,0.584792,0.331962,0.931012,0.324289,0.928008,0.43143,0.900806,0.416914,0.89988,0.431482,0.756602,0.416901,0.756691,0.40941,0.613095,0.43143,0.61192,0.431445,0.653823,0.418348,0.653453,0.199179,0.9644,0.187251,0.968688,0.099057,0.944092,0.12162,0.94277,0.099452,0.798368,0.122015,0.798366,0.138754,0.654874,0.121728,0.685621,0.096069,0.685556,0.115968,0.653925,0.186998,0.628892,0.199024,0.633176,0.303396,0.628892,0.29137,0.633176,0.303144,0.968688,0.291216,0.9644,0.391338,0.944092,0.368775,0.94277,0.390943,0.798368,0.36838,0.798366,0.351641,0.654874,0.374488,0.653913,0.393952,0.685566,0.368667,0.685621,0.075103,0.691429,0.10324,0.69193,0.387154,0.69193,0.414899,0.691452,0.001498,0.906741,2.80185,2.50487,0.198156,2.50487,1.9815,4.9975,1.01851,4.9975,0.204662,4.67171,2.79534,4.67171,1.98968,0.002497,2.80389,0.324993,2.9985,0.906741,0.196107,0.324993,1.01031,0.002497,0.47892,0.830382,0.478783,0.830326,0.420954,0.816501,0.421156,0.816508,0.421249,0.724204,0.420694,0.724231,0.420549,0.631399,0.406736,0.656174,0.40725,0.656174,0.547269,0.830382};
			return value;
		}
		private double[] getBoatTug02_TEXCOORD_6_21_point_6()
		{
			double[] value = {0.547406,0.830326,0.605234,0.816501,0.605033,0.816508,0.60494,0.724204,0.605495,0.724231,0.618938,0.656174,0.619452,0.656174,0.60564,0.631399,0.421035,0.652141,0.433729,0.632488,0.478338,0.617666,0.478667,0.61862,0.54785,0.617666,0.547521,0.61862,0.592459,0.632488,0.605154,0.652141,0.002497,2.7828,0.00978,4.58119,4.99022,4.58119,4.9975,2.7828,4.99234,1.085,0.007659,1.085,1.49266,4.9975,3.50735,4.9975,1.44518,0.002497,0.009691,0.416716,4.9903,0.416716,3.55482,0.002497};
			return value;
		}


		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_75_coordIndex_1()
		{
			int[] value = {80,81,87,-1,87,86,80,-1,82,83,89,-1,89,88,82,-1,83,78,84,-1,84,89,83,-1,86,87,93,-1,93,92,86,-1,88,89,95,-1,95,94,88,-1,89,84,90,-1,90,95,89,-1,146,150,151,-1,151,98,146,-1,99,138,139,-1,139,100,99,-1,96,100,139,-1,139,140,96,-1,146,98,103,-1,103,147,146,-1,99,100,105,-1,105,104,99,-1,100,96,101,-1,101,105,100,-1,147,103,110,-1,110,148,147,-1,104,105,112,-1,112,111,104,-1,117,81,80,-1,80,116,117,-1,119,83,82,-1,82,118,119,-1,123,117,116,-1,116,121,123,-1,125,119,118,-1,118,124,125,-1,107,120,119,-1,119,125,107,-1,127,123,121,-1,121,126,127,-1,129,125,124,-1,124,128,129,-1,106,107,125,-1,125,129,106,-1,149,131,153,-1,153,152,149,-1,132,133,145,-1,145,144,132,-1,108,134,145,-1,145,133,108,-1,110,131,149,-1,149,148,110,-1,112,133,132,-1,132,111,112,-1,113,108,133,-1,133,112,113,-1,92,93,137,-1,137,136,92,-1,94,95,139,-1,139,138,94,-1,95,90,140,-1,140,139,95,-1,127,126,142,-1,142,143,127,-1,129,128,144,-1,144,145,129,-1,134,106,129,-1,129,145,134,-1,136,137,151,-1,151,150,136,-1,143,142,152,-1,152,153,143,-1};
			return value;
		}


		/** Define subarrays using type int[] */
		private int[] getIndexedFaceSet_5_75_texCoordIndex_1()
		{
			int[] value = {450,451,452,-1,452,453,450,-1,426,427,428,-1,428,429,426,-1,361,360,362,-1,362,363,361,-1,453,452,454,-1,454,455,453,-1,429,428,430,-1,430,431,429,-1,363,362,364,-1,364,365,363,-1,456,457,458,-1,458,459,456,-1,432,433,434,-1,434,435,432,-1,366,367,381,-1,381,382,366,-1,456,459,460,-1,460,461,456,-1,432,435,436,-1,436,437,432,-1,367,366,368,-1,368,369,367,-1,461,460,462,-1,462,463,461,-1,437,436,438,-1,438,439,437,-1,464,451,450,-1,450,465,464,-1,440,427,426,-1,426,441,440,-1,466,464,465,-1,465,467,466,-1,442,440,441,-1,441,443,442,-1,371,376,375,-1,375,377,371,-1,468,466,467,-1,467,469,468,-1,444,442,443,-1,443,445,444,-1,370,371,377,-1,377,378,370,-1,470,471,472,-1,472,473,470,-1,446,447,448,-1,448,449,446,-1,372,380,383,-1,383,379,372,-1,462,471,470,-1,470,463,462,-1,438,447,446,-1,446,439,438,-1,374,372,379,-1,379,373,374,-1,455,454,474,-1,474,475,455,-1,431,430,434,-1,434,433,431,-1,365,364,382,-1,382,381,365,-1,468,469,476,-1,476,477,468,-1,444,445,449,-1,449,448,444,-1,380,370,378,-1,378,383,380,-1,475,474,458,-1,458,457,475,-1,477,476,473,-1,473,472,477,-1};
			return value;
		}

		/** Large attribute array: Coordinate DEF='BoatTug02-COORD' point field, scene-graph level=6, element #19, 462 total numbers made up of 154 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getBoatTug02_COORD_6_19_point()
		{
			MFVec3f BoatTug02_COORD_6_19_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getBoatTug02_COORD_6_19_point_1()))
				.append(new MFVec3f(getBoatTug02_COORD_6_19_point_2()));
			return BoatTug02_COORD_6_19_point;
		}
		/** Large attribute array: Normal DEF='Def24' vector field, scene-graph level=6, element #20, 651 total numbers made up of 217 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getDef24_6_20_vector()
		{
			MFVec3f Def24_6_20_vector = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getDef24_6_20_vector_1()))
				.append(new MFVec3f(getDef24_6_20_vector_2()))
				.append(new MFVec3f(getDef24_6_20_vector_3()));
			return Def24_6_20_vector;
		}
		/** Large attribute array: TextureCoordinate DEF='BoatTug02-TEXCOORD' point field, scene-graph level=6, element #21, 1056 total numbers made up of 528 2-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec2f getBoatTug02_TEXCOORD_6_21_point()
		{
			MFVec2f BoatTug02_TEXCOORD_6_21_point = new MFVec2f()/*2.finalize*/
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_1()))
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_2()))
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_3()))
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_4()))
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_5()))
				.append(new MFVec2f(getBoatTug02_TEXCOORD_6_21_point_6()));
			return BoatTug02_TEXCOORD_6_21_point;
		}
		/** Large attribute array: IndexedFaceSet coordIndex field, scene-graph level=5, element #75, 288 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_75_coordIndex()
		{
			MFInt32 IndexedFaceSet_5_75_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_75_coordIndex_1()));
			return IndexedFaceSet_5_75_coordIndex;
		}
		/** Large attribute array: IndexedFaceSet texCoordIndex field, scene-graph level=5, element #75, 288 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getIndexedFaceSet_5_75_texCoordIndex()
		{
			MFInt32 IndexedFaceSet_5_75_texCoordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getIndexedFaceSet_5_75_texCoordIndex_1()));
			return IndexedFaceSet_5_75_texCoordIndex;
		}

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return BoatTug02 model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new BoatTug02().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"Savage.ShipsCivilian.Tugboats.BoatTug02\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("Savage.ShipsCivilian.Tugboats.BoatTug02 self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // ShipsCivilian/Tugboats/BoatTug02_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "ShipsCivilian/Tugboats/BoatTug02_JavaExport.x3d"; 
                String filenameX3DV = "ShipsCivilian/Tugboats/BoatTug02_JavaExport.x3dv"; 
                String filenameJSON = "ShipsCivilian/Tugboats/BoatTug02_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
