diff --git a/build/awayjs-display.d.ts b/build/awayjs-display.d.ts index e3b4657aa..8070ce34c 100755 --- a/build/awayjs-display.d.ts +++ b/build/awayjs-display.d.ts @@ -1,18 +1,177 @@ -declare module "awayjs-display/lib/base/AlignmentMode" { +declare module "awayjs-display/lib/animators/nodes/AnimationNodeBase" { + import IAsset = require("awayjs-core/lib/library/IAsset"); + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + /** + * Provides an abstract base class for nodes in an animation blend tree. + */ + class AnimationNodeBase extends NamedAssetBase implements IAsset { + _pStateClass: any; + stateClass: any; + /** + * Creates a new AnimationNodeBase object. + */ + constructor(); + /** + * @inheritDoc + */ + dispose(): void; + /** + * @inheritDoc + */ + assetType: string; + } + export = AnimationNodeBase; + +} +declare module "awayjs-display/lib/animators/IAnimationSet" { + import IAsset = require("awayjs-core/lib/library/IAsset"); + import AnimationNodeBase = require("awayjs-display/lib/animators/nodes/AnimationNodeBase"); /** + * Provides an interface for data set classes that hold animation data for use in animator classes. * + * @see away.animators.AnimatorBase */ - class AlignmentMode { + interface IAnimationSet extends IAsset { /** + * Check to determine whether a state is registered in the animation set under the given name. * + * @param stateName The name of the animation state object to be checked. */ - static REGISTRATION_POINT: string; + hasAnimation(name: string): boolean; /** + * Retrieves the animation state object registered in the animation data set under the given name. * + * @param stateName The name of the animation state object to be retrieved. */ - static PIVOT_POINT: string; + getAnimation(name: string): AnimationNodeBase; + /** + * Indicates whether the properties of the animation data contained within the set combined with + * the vertex registers aslready in use on shading materials allows the animation data to utilise + * GPU calls. + */ + usesCPU: boolean; + /** + * Called by the material to reset the GPU indicator before testing whether register space in the shader + * is available for running GPU-based animation code. + * + * @private + */ + resetGPUCompatibility(): any; + /** + * Called by the animator to void the GPU indicator when register space in the shader + * is no longer available for running GPU-based animation code. + * + * @private + */ + cancelGPUCompatibility(): any; } - export = AlignmentMode; + export = IAnimationSet; + +} +declare module "awayjs-display/lib/events/GeometryEvent" { + import Event = require("awayjs-core/lib/events/Event"); + import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); + /** + * Dispatched to notify changes in a geometry object's state. + * + * @class away.events.GeometryEvent + * @see away3d.core.base.Geometry + */ + class GeometryEvent extends Event { + /** + * Dispatched when a TriangleSubGeometry was added to the dispatching Geometry. + */ + static SUB_GEOMETRY_ADDED: string; + /** + * Dispatched when a TriangleSubGeometry was removed from the dispatching Geometry. + */ + static SUB_GEOMETRY_REMOVED: string; + static BOUNDS_INVALID: string; + private _subGeometry; + /** + * Create a new GeometryEvent + * @param type The event type. + * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event. + */ + constructor(type: string, subGeometry?: SubGeometryBase); + /** + * The TriangleSubGeometry object that is the subject of this event, if appropriate. + */ + subGeometry: SubGeometryBase; + /** + * Clones the event. + * @return An exact duplicate of the current object. + */ + clone(): Event; + } + export = GeometryEvent; + +} +declare module "awayjs-display/lib/base/Geometry" { + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import IAsset = require("awayjs-core/lib/library/IAsset"); + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); + /** + * + * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices, + * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves. + * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns + * the SubGeometries to its respective TriangleSubMesh objects. + * + * + * + * @see away.core.base.SubGeometry + * @see away.entities.Mesh + * + * @class Geometry + */ + class Geometry extends NamedAssetBase implements IAsset { + private _subGeometries; + assetType: string; + /** + * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc. + */ + subGeometries: SubGeometryBase[]; + getSubGeometries(): SubGeometryBase[]; + /** + * Creates a new Geometry object. + */ + constructor(); + applyTransformation(transform: Matrix3D): void; + /** + * Adds a new TriangleSubGeometry object to the list. + * @param subGeometry The TriangleSubGeometry object to be added. + */ + addSubGeometry(subGeometry: SubGeometryBase): void; + /** + * Removes a new TriangleSubGeometry object from the list. + * @param subGeometry The TriangleSubGeometry object to be removed. + */ + removeSubGeometry(subGeometry: SubGeometryBase): void; + /** + * Clones the geometry. + * @return An exact duplicate of the current Geometry object. + */ + clone(): Geometry; + /** + * Scales the geometry. + * @param scale The amount by which to scale. + */ + scale(scale: number): void; + /** + * Clears all resources used by the Geometry object, including SubGeometries. + */ + dispose(): void; + /** + * Scales the uv coordinates (tiling) + * @param scaleU The amount by which to scale on the u axis. Default is 1; + * @param scaleV The amount by which to scale on the v axis. Default is 1; + */ + scaleUV(scaleU?: number, scaleV?: number): void; + iInvalidateBounds(subGeom: SubGeometryBase): void; + } + export = Geometry; } declare module "awayjs-display/lib/base/BlendMode" { @@ -192,32 +351,30 @@ declare module "awayjs-display/lib/base/BlendMode" { export = BlendMode; } -declare module "awayjs-display/lib/base/CapsStyle" { +declare module "awayjs-display/lib/pool/IRenderObject" { /** - * The CapsStyle class is an enumeration of constant values that specify the - * caps style to use in drawing lines. The constants are provided for use as - * values in the caps parameter of the - * flash.display.Graphics.lineStyle() method. You can specify the - * following three types of caps: + * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least + * a render call per required renderable. */ - class CapsStyle { + interface IRenderObject { /** - * Used to specify round caps in the caps parameter of the - * flash.display.Graphics.lineStyle() method. + * */ - static ROUND: string; + dispose(): any; /** - * Used to specify no caps in the caps parameter of the - * flash.display.Graphics.lineStyle() method. + * */ - static NONE: string; + invalidateRenderObject(): any; /** - * Used to specify square caps in the caps parameter of the - * flash.display.Graphics.lineStyle() method. + * */ - static SQUARE: string; + invalidatePasses(): any; + /** + * + */ + invalidateAnimation(): any; } - export = CapsStyle; + export = IRenderObject; } declare module "awayjs-display/lib/events/SceneEvent" { @@ -531,206 +688,123 @@ declare module "awayjs-display/lib/controllers/ControllerBase" { export = ControllerBase; } -declare module "awayjs-display/lib/animators/nodes/AnimationNodeBase" { - import IAsset = require("awayjs-core/lib/library/IAsset"); - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); +declare module "awayjs-display/lib/pick/PickingCollisionVO" { + import Point = require("awayjs-core/lib/geom/Point"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); /** - * Provides an abstract base class for nodes in an animation blend tree. + * Value object for a picking collision returned by a picking collider. Created as unique objects on display objects + * + * @see away.base.DisplayObject#pickingCollisionVO + * @see away.core.pick.IPickingCollider + * + * @class away.pick.PickingCollisionVO */ - class AnimationNodeBase extends NamedAssetBase implements IAsset { - _pStateClass: any; - stateClass: any; + class PickingCollisionVO { /** - * Creates a new AnimationNodeBase object. + * The display object to which this collision object belongs. */ - constructor(); + displayObject: DisplayObject; /** - * @inheritDoc + * The local position of the collision on the entity's surface. */ - dispose(): void; + localPosition: Vector3D; /** - * @inheritDoc + * The local normal vector at the position of the collision. */ - assetType: string; - } - export = AnimationNodeBase; - -} -declare module "awayjs-display/lib/animators/IAnimationSet" { - import IAsset = require("awayjs-core/lib/library/IAsset"); - import AnimationNodeBase = require("awayjs-display/lib/animators/nodes/AnimationNodeBase"); - /** - * Provides an interface for data set classes that hold animation data for use in animator classes. - * - * @see away.animators.AnimatorBase - */ - interface IAnimationSet extends IAsset { + localNormal: Vector3D; /** - * Check to determine whether a state is registered in the animation set under the given name. - * - * @param stateName The name of the animation state object to be checked. + * The uv coordinate at the position of the collision. */ - hasAnimation(name: string): boolean; + uv: Point; /** - * Retrieves the animation state object registered in the animation data set under the given name. - * - * @param stateName The name of the animation state object to be retrieved. + * The index of the face where the event took pl ace. */ - getAnimation(name: string): AnimationNodeBase; + index: number; /** - * Indicates whether the properties of the animation data contained within the set combined with - * the vertex registers aslready in use on shading materials allows the animation data to utilise - * GPU calls. - */ - usesCPU: boolean; - /** - * Called by the material to reset the GPU indicator before testing whether register space in the shader - * is available for running GPU-based animation code. - * - * @private - */ - resetGPUCompatibility(): any; - /** - * Called by the animator to void the GPU indicator when register space in the shader - * is no longer available for running GPU-based animation code. - * - * @private - */ - cancelGPUCompatibility(): any; - } - export = IAnimationSet; - -} -declare module "awayjs-display/lib/events/GeometryEvent" { - import Event = require("awayjs-core/lib/events/Event"); - import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); - /** - * Dispatched to notify changes in a geometry object's state. - * - * @class away.events.GeometryEvent - * @see away3d.core.base.Geometry - */ - class GeometryEvent extends Event { - /** - * Dispatched when a TriangleSubGeometry was added to the dispatching Geometry. - */ - static SUB_GEOMETRY_ADDED: string; - /** - * Dispatched when a TriangleSubGeometry was removed from the dispatching Geometry. - */ - static SUB_GEOMETRY_REMOVED: string; - static BOUNDS_INVALID: string; - private _subGeometry; - /** - * Create a new GeometryEvent - * @param type The event type. - * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event. - */ - constructor(type: string, subGeometry?: SubGeometryBase); - /** - * The TriangleSubGeometry object that is the subject of this event, if appropriate. - */ - subGeometry: SubGeometryBase; - /** - * Clones the event. - * @return An exact duplicate of the current object. + * The index of the subGeometry where the event took place. */ - clone(): Event; - } - export = GeometryEvent; - -} -declare module "awayjs-display/lib/base/Geometry" { - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import IAsset = require("awayjs-core/lib/library/IAsset"); - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); - /** - * - * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices, - * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves. - * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns - * the SubGeometries to its respective TriangleSubMesh objects. - * - * - * - * @see away.core.base.SubGeometry - * @see away.entities.Mesh - * - * @class Geometry - */ - class Geometry extends NamedAssetBase implements IAsset { - private _subGeometries; - assetType: string; /** - * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc. + * The starting position of the colliding ray in local coordinates. */ - subGeometries: SubGeometryBase[]; - getSubGeometries(): SubGeometryBase[]; + localRayPosition: Vector3D; /** - * Creates a new Geometry object. + * The direction of the colliding ray in local coordinates. */ - constructor(); - applyTransformation(transform: Matrix3D): void; + localRayDirection: Vector3D; /** - * Adds a new TriangleSubGeometry object to the list. - * @param subGeometry The TriangleSubGeometry object to be added. + * The starting position of the colliding ray in scene coordinates. */ - addSubGeometry(subGeometry: SubGeometryBase): void; + rayPosition: Vector3D; /** - * Removes a new TriangleSubGeometry object from the list. - * @param subGeometry The TriangleSubGeometry object to be removed. + * The direction of the colliding ray in scene coordinates. */ - removeSubGeometry(subGeometry: SubGeometryBase): void; + rayDirection: Vector3D; /** - * Clones the geometry. - * @return An exact duplicate of the current Geometry object. + * Determines if the ray position is contained within the entity bounds. + * + * @see away3d.entities.Entity#bounds */ - clone(): Geometry; + rayOriginIsInsideBounds: boolean; /** - * Scales the geometry. - * @param scale The amount by which to scale. + * The distance along the ray from the starting position to the calculated intersection entry point with the entity. */ - scale(scale: number): void; + rayEntryDistance: number; /** - * Clears all resources used by the Geometry object, including SubGeometries. + * The material ownwer associated with a collision. */ - dispose(): void; + renderableOwner: IRenderableOwner; /** - * Scales the uv coordinates (tiling) - * @param scaleU The amount by which to scale on the u axis. Default is 1; - * @param scaleV The amount by which to scale on the v axis. Default is 1; + * Creates a new PickingCollisionVO object. + * + * @param entity The entity to which this collision object belongs. */ - scaleUV(scaleU?: number, scaleV?: number): void; - iInvalidateBounds(subGeom: SubGeometryBase): void; + constructor(displayObject: DisplayObject); } - export = Geometry; + export = PickingCollisionVO; } -declare module "awayjs-display/lib/pool/IRenderObject" { +declare module "awayjs-display/lib/pick/IPickingCollider" { + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); /** - * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least - * a render call per required renderable. + * Provides an interface for picking colliders that can be assigned to individual entities in a scene for specific picking behaviour. + * Used with the RaycastPicker picking object. + * + * @see away.entities.Entity#pickingCollider + * @see away.pick.RaycastPicker + * + * @interface away.pick.IPickingCollider */ - interface IRenderObject { - /** - * - */ - dispose(): any; + interface IPickingCollider { /** + * Sets the position and direction of a picking ray in local coordinates to the entity. * + * @param localDirection The position vector in local coordinates + * @param localPosition The direction vector in local coordinates */ - invalidateRenderObject(): any; + setLocalRay(localPosition: Vector3D, localDirection: Vector3D): any; /** + * Tests a Billboard object for a collision with the picking ray. * + * @param entity The entity instance to be tested. + * @param pickingCollisionVO The collision object used to store the collision results + * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray. */ - invalidateProperties(): any; + testBillboardCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean; /** + * Tests a Mesh object for a collision with the picking ray. * + * @param entity The entity instance to be tested. + * @param pickingCollisionVO The collision object used to store the collision results + * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray. + * @param findClosest */ - invalidateAnimation(): any; + testMeshCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number, findClosest: boolean): boolean; } - export = IRenderObject; + export = IPickingCollider; } declare module "awayjs-display/lib/pool/IRenderable" { @@ -781,38 +855,6 @@ declare module "awayjs-display/lib/pool/IRenderable" { } export = IRenderable; -} -declare module "awayjs-display/lib/partition/SkyboxNode" { - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * SkyboxNode is a space partitioning leaf node that contains a Skybox object. - * - * @class away.partition.SkyboxNode - */ - class SkyboxNode extends EntityNode { - private _skyBox; - /** - * Creates a new SkyboxNode object. - * @param skyBox The Skybox to be contained in the node. - */ - constructor(skyBox: IEntity); - /** - * @inheritDoc - */ - acceptTraverser(traverser: ICollector): void; - /** - * - * @param planes - * @param numPlanes - * @returns {boolean} - */ - isInFrustum(planes: Plane3D[], numPlanes: number): boolean; - } - export = SkyboxNode; - } declare module "awayjs-display/lib/entities/Mesh" { import UVTransform = require("awayjs-core/lib/geom/UVTransform"); @@ -823,7 +865,7 @@ declare module "awayjs-display/lib/entities/Mesh" { import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import IEntity = require("awayjs-display/lib/entities/IEntity"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); /** @@ -969,7 +1011,7 @@ declare module "awayjs-display/lib/entities/Mesh" { * * @internal */ - _iCollectRenderables(renderer: IRenderer): void; + _iCollectRenderables(rendererPool: IRendererPool): void; _iInvalidateRenderableGeometries(): void; } export = Mesh; @@ -981,7 +1023,7 @@ declare module "awayjs-display/lib/base/SubMeshBase" { import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); import IAnimator = require("awayjs-display/lib/animators/IAnimator"); import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import Camera = require("awayjs-display/lib/entities/Camera"); import Mesh = require("awayjs-display/lib/entities/Mesh"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); @@ -1037,7 +1079,7 @@ declare module "awayjs-display/lib/base/SubMeshBase" { _iAddRenderable(renderable: IRenderable): IRenderable; _iRemoveRenderable(renderable: IRenderable): IRenderable; _iInvalidateRenderableGeometry(): void; - _iCollectRenderable(renderer: IRenderer): void; + _iCollectRenderable(rendererPool: IRendererPool): void; _iGetExplicitMaterial(): MaterialBase; } export = SubMeshBase; @@ -1047,7 +1089,7 @@ declare module "awayjs-display/lib/base/TriangleSubMesh" { import ISubMesh = require("awayjs-display/lib/base/ISubMesh"); import SubMeshBase = require("awayjs-display/lib/base/SubMeshBase"); import TriangleSubGeometry = require("awayjs-display/lib/base/TriangleSubGeometry"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import Mesh = require("awayjs-display/lib/entities/Mesh"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); /** @@ -1080,7 +1122,7 @@ declare module "awayjs-display/lib/base/TriangleSubMesh" { * */ dispose(): void; - _iCollectRenderable(renderer: IRenderer): void; + _iCollectRenderable(rendererPool: IRendererPool): void; } export = TriangleSubMesh; @@ -1442,7 +1484,7 @@ declare module "awayjs-display/lib/base/LineSubMesh" { import ISubMesh = require("awayjs-display/lib/base/ISubMesh"); import LineSubGeometry = require("awayjs-display/lib/base/LineSubGeometry"); import SubMeshBase = require("awayjs-display/lib/base/SubMeshBase"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import Mesh = require("awayjs-display/lib/entities/Mesh"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); /** @@ -1475,22 +1517,10 @@ declare module "awayjs-display/lib/base/LineSubMesh" { * */ dispose(): void; - _iCollectRenderable(renderer: IRenderer): void; + _iCollectRenderable(rendererPool: IRendererPool): void; } export = LineSubMesh; -} -declare module "awayjs-display/lib/sort/IEntitySorter" { - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - /** - * @interface away.sort.IEntitySorter - */ - interface IEntitySorter { - sortBlendedRenderables(head: IRenderable): IRenderable; - sortOpaqueRenderables(head: IRenderable): IRenderable; - } - export = IEntitySorter; - } declare module "awayjs-display/lib/events/MaterialEvent" { import Event = require("awayjs-core/lib/events/Event"); @@ -1508,7 +1538,7 @@ declare module "awayjs-display/lib/entities/Billboard" { import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import IEntity = require("awayjs-display/lib/entities/IEntity"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); /** @@ -1626,360 +1656,474 @@ declare module "awayjs-display/lib/entities/Billboard" { * @private */ private onSizeChanged(event); - _iCollectRenderables(renderer: IRenderer): void; - _iCollectRenderable(renderer: IRenderer): void; + _iCollectRenderables(rendererPool: IRendererPool): void; + _iCollectRenderable(rendererPool: IRendererPool): void; } export = Billboard; } -declare module "awayjs-display/lib/render/IRenderer" { - import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher"); - import Rectangle = require("awayjs-core/lib/geom/Rectangle"); +declare module "awayjs-display/lib/pool/IRendererPool" { import LineSubMesh = require("awayjs-display/lib/base/LineSubMesh"); import TriangleSubMesh = require("awayjs-display/lib/base/TriangleSubMesh"); - import IEntitySorter = require("awayjs-display/lib/sort/IEntitySorter"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); import Billboard = require("awayjs-display/lib/entities/Billboard"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); /** * IRenderer is an interface for classes that are used in the rendering pipeline to render the * contents of a partition * * @class away.render.IRenderer */ - interface IRenderer extends IEventDispatcher { + interface IRendererPool { /** * + * @param billboard */ - renderableSorter: IEntitySorter; + applyBillboard(billboard: Billboard): any; /** * + * @param triangleSubMesh */ - shareContext: boolean; + applyLineSubMesh(triangleSubMesh: LineSubMesh): any; /** * + * @param triangleSubMesh */ + applyTriangleSubMesh(triangleSubMesh: TriangleSubMesh): any; + } + export = IRendererPool; + +} +declare module "awayjs-display/lib/entities/IEntity" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import IAsset = require("awayjs-core/lib/library/IAsset"); + import Transform = require("awayjs-display/lib/base/Transform"); + import Scene = require("awayjs-display/lib/containers/Scene"); + import ControllerBase = require("awayjs-display/lib/controllers/ControllerBase"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import Partition = require("awayjs-display/lib/partition/Partition"); + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import IPickingCollider = require("awayjs-display/lib/pick/IPickingCollider"); + import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); + interface IEntity extends IAsset { x: number; - /** - * - */ y: number; - /** + z: number; + rotationX: number; + rotationY: number; + rotationZ: number; + scaleX: number; + scaleY: number; + scaleZ: number; + /** * */ - width: number; + bounds: BoundingVolumeBase; /** * */ - height: number; + castsShadows: boolean; /** * */ - viewPort: Rectangle; + inverseSceneTransform: Matrix3D; /** * */ - scissorRect: Rectangle; + partitionNode: EntityNode; /** * - * @param billboard */ - applyBillboard(billboard: Billboard): any; + pickingCollider: IPickingCollider; /** * - * @param triangleSubMesh */ - applyLineSubMesh(triangleSubMesh: LineSubMesh): any; + transform: Transform; /** * - * @param triangleSubMesh */ - applyTriangleSubMesh(triangleSubMesh: TriangleSubMesh): any; + scene: Scene; /** * */ - dispose(): any; + scenePosition: Vector3D; /** * - * @param entityCollector */ - render(entityCollector: ICollector): any; + sceneTransform: Matrix3D; + /** + * + */ + worldBounds: BoundingVolumeBase; + /** + * + */ + zOffset: number; + /** + * + */ + isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; + /** + * + * + * @param target + * @param upAxis + */ + lookAt(target: Vector3D, upAxis?: Vector3D): any; /** * @internal */ - _iBackgroundR: number; + _iPickingCollisionVO: PickingCollisionVO; /** * @internal */ - _iBackgroundG: number; + _iController: ControllerBase; /** * @internal */ - _iBackgroundB: number; + _iAssignedPartition: Partition; /** + * //TODO + * + * @param shortestCollisionDistance + * @param findClosest + * @returns {boolean} + * * @internal */ - _iBackgroundAlpha: number; + _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean; /** * @internal */ - _iCreateEntityCollector(): ICollector; - _iRender(entityCollector: ICollector, target?: TextureProxyBase, scissorRect?: Rectangle, surfaceSelector?: number): any; - _iRenderCascades(entityCollector: ICollector, target: TextureProxyBase, numCascades: number, scissorRects: Rectangle[], cameras: Camera[]): any; - } - export = IRenderer; - -} -declare module "awayjs-display/lib/partition/LightProbeNode" { - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.partition.LightProbeNode - */ - class LightProbeNode extends EntityNode { - private _lightProbe; + _iIsMouseEnabled(): boolean; /** - * - * @param lightProbe + * @internal */ - constructor(lightProbe: IEntity); + _iIsVisible(): boolean; + _iInternalUpdate(): any; /** - * @inheritDoc + * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render. + * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would + * return the scene transform. */ - acceptTraverser(traverser: ICollector): void; + getRenderSceneTransform(camera: Camera): Matrix3D; /** * - * @returns {boolean} + * @param renderer + * @private */ - isCastingShadow(): boolean; + _iCollectRenderables(rendererPool: IRendererPool): any; } - export = LightProbeNode; + export = IEntity; } -declare module "awayjs-display/lib/entities/LightProbe" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import LightBase = require("awayjs-display/lib/base/LightBase"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); +declare module "awayjs-display/lib/events/CameraEvent" { + import Event = require("awayjs-core/lib/events/Event"); import Camera = require("awayjs-display/lib/entities/Camera"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase"); - class LightProbe extends LightBase implements IEntity { - private _diffuseMap; - private _specularMap; - constructor(diffuseMap: CubeTextureBase, specularMap?: CubeTextureBase); - diffuseMap: CubeTextureBase; - specularMap: CubeTextureBase; - /** - * @protected - */ - pCreateEntityPartitionNode(): EntityNode; - pUpdateBounds(): void; - pCreateDefaultBoundingVolume(): BoundingVolumeBase; - iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; - _iCollectRenderables(renderer: IRenderer): void; + /** + * @class away.events.CameraEvent + */ + class CameraEvent extends Event { + static PROJECTION_CHANGED: string; + private _camera; + constructor(type: string, camera: Camera); + camera: Camera; } - export = LightProbe; + export = CameraEvent; } -declare module "awayjs-display/lib/partition/PointLightNode" { +declare module "awayjs-display/lib/partition/CameraNode" { import EntityNode = require("awayjs-display/lib/partition/EntityNode"); import ICollector = require("awayjs-display/lib/traverse/ICollector"); import IEntity = require("awayjs-display/lib/entities/IEntity"); /** - * @class away.partition.PointLightNode + * @class away.partition.CameraNode */ - class PointLightNode extends EntityNode { - private _pointLight; - /** - * - * @param pointLight - */ - constructor(pointLight: IEntity); + class CameraNode extends EntityNode { + constructor(camera: IEntity); /** * @inheritDoc */ acceptTraverser(traverser: ICollector): void; - /** - * - * @returns {boolean} - */ - isCastingShadow(): boolean; } - export = PointLightNode; + export = CameraNode; } -declare module "awayjs-display/lib/pool/EntityListItem" { +declare module "awayjs-display/lib/entities/Camera" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import IProjection = require("awayjs-core/lib/projections/IProjection"); + import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.pool.EntityListItem - */ - class EntityListItem { - /** - * - */ - entity: IEntity; + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); + class Camera extends DisplayObjectContainer implements IEntity { + private _viewProjection; + private _viewProjectionDirty; + private _projection; + private _frustumPlanes; + private _frustumPlanesDirty; + private _onProjectionMatrixChangedDelegate; + constructor(projection?: IProjection); + pCreateDefaultBoundingVolume(): BoundingVolumeBase; /** - * + * @protected */ - next: EntityListItem; - } - export = EntityListItem; - -} -declare module "awayjs-display/lib/pool/EntityListItemPool" { - import EntityListItem = require("awayjs-display/lib/pool/EntityListItem"); - /** - * @class away.pool.EntityListItemPool - */ - class EntityListItemPool { - private _pool; - private _index; - private _poolSize; + pCreateEntityPartitionNode(): EntityNode; + assetType: string; + private onProjectionMatrixChanged(event); + frustumPlanes: Plane3D[]; + private updateFrustum(); /** - * + * @protected */ - constructor(); + pInvalidateSceneTransform(): void; /** - * + * @protected */ - getItem(): EntityListItem; + pUpdateBounds(): void; /** * */ - freeAll(): void; - dispose(): void; - } - export = EntityListItemPool; - -} -declare module "awayjs-display/lib/traverse/CollectorBase" { - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import Scene = require("awayjs-display/lib/containers/Scene"); - import EntityListItem = require("awayjs-display/lib/pool/EntityListItem"); - import EntityListItemPool = require("awayjs-display/lib/pool/EntityListItemPool"); - import NodeBase = require("awayjs-display/lib/partition/NodeBase"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.traverse.CollectorBase - */ - class CollectorBase implements ICollector { - scene: Scene; - _pEntityHead: EntityListItem; - _pEntityListItemPool: EntityListItemPool; - _pCamera: Camera; - private _customCullPlanes; - private _cullPlanes; - private _numCullPlanes; - _pNumEntities: number; - _pNumInteractiveEntities: number; - constructor(); + projection: IProjection; /** * */ - camera: Camera; + viewProjection: Matrix3D; /** + * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space. * + * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. + * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. + * @param sZ The z coordinate in screen space, representing the distance into the screen. + * @return The ray from the camera to the scene space position of the given screen coordinates. */ - cullPlanes: Plane3D[]; + getRay(nX: number, nY: number, sZ: number): Vector3D; /** + * Calculates the normalised position in screen space of the given scene position. * + * @param point3d the position vector of the scene coordinates to be projected. + * @return The normalised screen position of the given scene coordinates. */ - entityHead: EntityListItem; + project(point3d: Vector3D): Vector3D; /** + * Calculates the scene position of the given normalized coordinates in screen space. * + * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property. + * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property. + * @param sZ The z coordinate in screen space, representing the distance into the screen. + * @return The scene position of the given screen coordinates. */ - numEntities: number; + unproject(nX: number, nY: number, sZ: number): Vector3D; + _iCollectRenderables(rendererPool: IRendererPool): void; + _iCollectRenderable(rendererPool: IRendererPool): void; + } + export = Camera; + +} +declare module "awayjs-display/lib/events/LightEvent" { + import Event = require("awayjs-core/lib/events/Event"); + class LightEvent extends Event { + static CASTS_SHADOW_CHANGE: string; + constructor(type: string); + clone(): Event; + } + export = LightEvent; + +} +declare module "awayjs-display/lib/sort/IEntitySorter" { + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + /** + * @interface away.sort.IEntitySorter + */ + interface IEntitySorter { + sortBlendedRenderables(head: IRenderable): IRenderable; + sortOpaqueRenderables(head: IRenderable): IRenderable; + } + export = IEntitySorter; + +} +declare module "awayjs-display/lib/render/IRenderer" { + import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher"); + import Rectangle = require("awayjs-core/lib/geom/Rectangle"); + import IEntitySorter = require("awayjs-display/lib/sort/IEntitySorter"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); + /** + * IRenderer is an interface for classes that are used in the rendering pipeline to render the + * contents of a partition + * + * @class away.render.IRenderer + */ + interface IRenderer extends IEventDispatcher { /** * */ - numInteractiveEntities: number; + renderableSorter: IEntitySorter; /** * */ - clear(): void; + shareContext: boolean; /** * - * @param node - * @returns {boolean} */ - enterNode(node: NodeBase): boolean; + x: number; /** * - * @param entity */ - applyDirectionalLight(entity: IEntity): void; + y: number; /** * - * @param entity */ - applyEntity(entity: IEntity): void; + width: number; /** * - * @param entity */ - applyLightProbe(entity: IEntity): void; + height: number; /** * - * @param entity */ - applyPointLight(entity: IEntity): void; + viewPort: Rectangle; /** * - * @param entity */ - applySkybox(entity: IEntity): void; + scissorRect: Rectangle; + /** + * + */ + dispose(): any; + /** + * + * @param entityCollector + */ + render(entityCollector: ICollector): any; + /** + * @internal + */ + _iBackgroundR: number; + /** + * @internal + */ + _iBackgroundG: number; + /** + * @internal + */ + _iBackgroundB: number; + /** + * @internal + */ + _iBackgroundAlpha: number; + /** + * @internal + */ + _iCreateEntityCollector(): ICollector; + _iRender(entityCollector: ICollector, target?: TextureProxyBase, scissorRect?: Rectangle, surfaceSelector?: number): any; + _iRenderCascades(entityCollector: ICollector, target: TextureProxyBase, numCascades: number, scissorRects: Rectangle[], cameras: Camera[]): any; } - export = CollectorBase; + export = IRenderer; } -declare module "awayjs-display/lib/traverse/EntityCollector" { - import LightBase = require("awayjs-display/lib/base/LightBase"); - import CollectorBase = require("awayjs-display/lib/traverse/CollectorBase"); - import DirectionalLight = require("awayjs-display/lib/entities/DirectionalLight"); +declare module "awayjs-display/lib/pool/EntityListItem" { import IEntity = require("awayjs-display/lib/entities/IEntity"); - import LightProbe = require("awayjs-display/lib/entities/LightProbe"); - import PointLight = require("awayjs-display/lib/entities/PointLight"); - import Skybox = require("awayjs-display/lib/entities/Skybox"); /** - * @class away.traverse.EntityCollector + * @class away.pool.EntityListItem */ - class EntityCollector extends CollectorBase { - _pSkybox: Skybox; - _pLights: LightBase[]; - private _directionalLights; - private _pointLights; - private _lightProbes; - _pNumLights: number; - private _numDirectionalLights; - private _numPointLights; - private _numLightProbes; + class EntityListItem { /** * */ - directionalLights: DirectionalLight[]; + entity: IEntity; /** * */ - lightProbes: LightProbe[]; + next: EntityListItem; + } + export = EntityListItem; + +} +declare module "awayjs-display/lib/pool/EntityListItemPool" { + import EntityListItem = require("awayjs-display/lib/pool/EntityListItem"); + /** + * @class away.pool.EntityListItemPool + */ + class EntityListItemPool { + private _pool; + private _index; + private _poolSize; /** * */ - lights: LightBase[]; + constructor(); /** * */ - pointLights: PointLight[]; + getItem(): EntityListItem; /** * */ - skyBox: Skybox; + freeAll(): void; + dispose(): void; + } + export = EntityListItemPool; + +} +declare module "awayjs-display/lib/traverse/CollectorBase" { + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import Scene = require("awayjs-display/lib/containers/Scene"); + import EntityListItem = require("awayjs-display/lib/pool/EntityListItem"); + import EntityListItemPool = require("awayjs-display/lib/pool/EntityListItemPool"); + import NodeBase = require("awayjs-display/lib/partition/NodeBase"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * @class away.traverse.CollectorBase + */ + class CollectorBase implements ICollector { + scene: Scene; + _pEntityHead: EntityListItem; + _pEntityListItemPool: EntityListItemPool; + _pCamera: Camera; + private _customCullPlanes; + private _cullPlanes; + private _numCullPlanes; + _pNumEntities: number; + _pNumInteractiveEntities: number; constructor(); + /** + * + */ + camera: Camera; + /** + * + */ + cullPlanes: Plane3D[]; + /** + * + */ + entityHead: EntityListItem; + /** + * + */ + numEntities: number; + /** + * + */ + numInteractiveEntities: number; + /** + * + */ + clear(): void; + /** + * + * @param node + * @returns {boolean} + */ + enterNode(node: NodeBase): boolean; /** * * @param entity @@ -1989,73 +2133,105 @@ declare module "awayjs-display/lib/traverse/EntityCollector" { * * @param entity */ - applyLightProbe(entity: IEntity): void; + applyEntity(entity: IEntity): void; /** * * @param entity */ - applyPointLight(entity: IEntity): void; + applyLightProbe(entity: IEntity): void; /** * * @param entity */ - applySkybox(entity: IEntity): void; + applyPointLight(entity: IEntity): void; /** * + * @param entity */ - clear(): void; + applySkybox(entity: IEntity): void; } - export = EntityCollector; + export = CollectorBase; } -declare module "awayjs-display/lib/traverse/ShadowCasterCollector" { - import NodeBase = require("awayjs-display/lib/partition/NodeBase"); - import CollectorBase = require("awayjs-display/lib/traverse/CollectorBase"); +declare module "awayjs-display/lib/partition/LightProbeNode" { + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); /** - * @class away.traverse.ShadowCasterCollector + * @class away.partition.LightProbeNode */ - class ShadowCasterCollector extends CollectorBase { - constructor(); + class LightProbeNode extends EntityNode { + private _lightProbe; /** * + * @param lightProbe */ - enterNode(node: NodeBase): boolean; + constructor(lightProbe: IEntity); + /** + * @inheritDoc + */ + acceptTraverser(traverser: ICollector): void; + /** + * + * @returns {boolean} + */ + isCastingShadow(): boolean; } - export = ShadowCasterCollector; + export = LightProbeNode; } -declare module "awayjs-display/lib/materials/shadowmappers/ShadowMapperBase" { - import Scene = require("awayjs-display/lib/containers/Scene"); +declare module "awayjs-display/lib/entities/LightProbe" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); import LightBase = require("awayjs-display/lib/base/LightBase"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - import EntityCollector = require("awayjs-display/lib/traverse/EntityCollector"); - import ShadowCasterCollector = require("awayjs-display/lib/traverse/ShadowCasterCollector"); + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import Camera = require("awayjs-display/lib/entities/Camera"); - import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); - class ShadowMapperBase { - _pCasterCollector: ShadowCasterCollector; - private _depthMap; - _pDepthMapSize: number; - _pLight: LightBase; - private _explicitDepthMap; - private _autoUpdateShadows; - _iShadowsInvalid: boolean; - constructor(); - pCreateCasterCollector(): ShadowCasterCollector; - autoUpdateShadows: boolean; - updateShadows(): void; - iSetDepthMap(depthMap: TextureProxyBase): void; - light: LightBase; - depthMap: TextureProxyBase; - depthMapSize: number; - dispose(): void; - pCreateDepthTexture(): TextureProxyBase; - iRenderDepthMap(entityCollector: EntityCollector, renderer: IRenderer): void; - pUpdateDepthProjection(viewCamera: Camera): void; - pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void; - _pSetDepthMapSize(value: any): void; + import IEntity = require("awayjs-display/lib/entities/IEntity"); + import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase"); + class LightProbe extends LightBase implements IEntity { + private _diffuseMap; + private _specularMap; + constructor(diffuseMap: CubeTextureBase, specularMap?: CubeTextureBase); + diffuseMap: CubeTextureBase; + specularMap: CubeTextureBase; + /** + * @protected + */ + pCreateEntityPartitionNode(): EntityNode; + pUpdateBounds(): void; + pCreateDefaultBoundingVolume(): BoundingVolumeBase; + iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; + _iCollectRenderables(rendererPool: IRendererPool): void; } - export = ShadowMapperBase; + export = LightProbe; + +} +declare module "awayjs-display/lib/partition/PointLightNode" { + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * @class away.partition.PointLightNode + */ + class PointLightNode extends EntityNode { + private _pointLight; + /** + * + * @param pointLight + */ + constructor(pointLight: IEntity); + /** + * @inheritDoc + */ + acceptTraverser(traverser: ICollector): void; + /** + * + * @returns {boolean} + */ + isCastingShadow(): boolean; + } + export = PointLightNode; } declare module "awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper" { @@ -2084,7 +2260,7 @@ declare module "awayjs-display/lib/entities/PointLight" { import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); import LightBase = require("awayjs-display/lib/base/LightBase"); import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import Camera = require("awayjs-display/lib/entities/Camera"); import IEntity = require("awayjs-display/lib/entities/IEntity"); import CubeMapShadowMapper = require("awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper"); @@ -2104,3876 +2280,3768 @@ declare module "awayjs-display/lib/entities/PointLight" { pUpdateBounds(): void; pCreateDefaultBoundingVolume(): BoundingVolumeBase; iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; - _iCollectRenderables(renderer: IRenderer): void; + _iCollectRenderables(rendererPool: IRendererPool): void; } export = PointLight; } -declare module "awayjs-display/lib/materials/lightpickers/LightPickerBase" { - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import IAsset = require("awayjs-core/lib/library/IAsset"); +declare module "awayjs-display/lib/traverse/EntityCollector" { import LightBase = require("awayjs-display/lib/base/LightBase"); - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import CollectorBase = require("awayjs-display/lib/traverse/CollectorBase"); import DirectionalLight = require("awayjs-display/lib/entities/DirectionalLight"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); import LightProbe = require("awayjs-display/lib/entities/LightProbe"); import PointLight = require("awayjs-display/lib/entities/PointLight"); + import Skybox = require("awayjs-display/lib/entities/Skybox"); /** - * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for - * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be - * extended to provide more application-specific dynamic selection of lights. - * - * @see StaticLightPicker + * @class away.traverse.EntityCollector */ - class LightPickerBase extends NamedAssetBase implements IAsset { - _pNumPointLights: number; - _pNumDirectionalLights: number; - _pNumCastingPointLights: number; - _pNumCastingDirectionalLights: number; - _pNumLightProbes: number; - _pAllPickedLights: LightBase[]; - _pPointLights: PointLight[]; - _pCastingPointLights: PointLight[]; - _pDirectionalLights: DirectionalLight[]; - _pCastingDirectionalLights: DirectionalLight[]; - _pLightProbes: LightProbe[]; - _pLightProbeWeights: number[]; - /** - * Creates a new LightPickerBase object. - */ - constructor(); - /** - * Disposes resources used by the light picker. - */ - dispose(): void; - /** - * @inheritDoc - */ - assetType: string; - /** - * The maximum amount of directional lights that will be provided. - */ - numDirectionalLights: number; - /** - * The maximum amount of point lights that will be provided. - */ - numPointLights: number; - /** - * The maximum amount of directional lights that cast shadows. - */ - numCastingDirectionalLights: number; - /** - * The amount of point lights that cast shadows. - */ - numCastingPointLights: number; - /** - * The maximum amount of light probes that will be provided. - */ - numLightProbes: number; - /** - * The collected point lights to be used for shading. - */ - pointLights: PointLight[]; + class EntityCollector extends CollectorBase { + _pSkybox: Skybox; + _pLights: LightBase[]; + private _directionalLights; + private _pointLights; + private _lightProbes; + _pNumLights: number; + private _numDirectionalLights; + private _numPointLights; + private _numLightProbes; /** - * The collected directional lights to be used for shading. + * */ directionalLights: DirectionalLight[]; /** - * The collected point lights that cast shadows to be used for shading. - */ - castingPointLights: PointLight[]; - /** - * The collected directional lights that cast shadows to be used for shading. - */ - castingDirectionalLights: DirectionalLight[]; - /** - * The collected light probes to be used for shading. + * */ lightProbes: LightProbe[]; /** - * The weights for each light probe, defining their influence on the object. - */ - lightProbeWeights: number[]; - /** - * A collection of all the collected lights. - */ - allPickedLights: LightBase[]; - /** - * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code. - */ - collectLights(renderable: IRenderable): void; - /** - * Updates the weights for the light probes, based on the renderable's position relative to them. - * @param renderable The renderble for which to calculate the light probes' influence. - */ - private updateProbeWeights(renderable); - } - export = LightPickerBase; - -} -declare module "awayjs-display/lib/entities/Skybox" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import UVTransform = require("awayjs-core/lib/geom/UVTransform"); - import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase"); - import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); - import IAnimator = require("awayjs-display/lib/animators/IAnimator"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); - import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); - import SkyboxNode = require("awayjs-display/lib/partition/SkyboxNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); - /** - * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as - * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring - * the sky box is always as large as possible without being clipped. - */ - class Skybox extends DisplayObject implements IEntity, IRenderableOwner, IRenderObjectOwner { - private _cubeMap; - _pAlphaThreshold: number; - private _animationSet; - _pLightPicker: LightPickerBase; - _pBlendMode: string; - private _renderObjects; - private _renderables; - private _uvTransform; - private _owners; - private _mipmap; - private _smooth; - private _material; - private _animator; - /** - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). + * */ - alphaThreshold: number; + lights: LightBase[]; /** - * Indicates whether or not any used textures should use mipmapping. Defaults to true. + * */ - mipmap: boolean; + pointLights: PointLight[]; /** - * Indicates whether or not any used textures should use smoothing. + * */ - smooth: boolean; + skyBox: Skybox; + constructor(); /** - * The light picker used by the material to provide lights to the material if it supports lighting. * - * @see LightPickerBase - * @see StaticLightPicker + * @param entity */ - lightPicker: LightPickerBase; + applyDirectionalLight(entity: IEntity): void; /** * + * @param entity */ - animationSet: IAnimationSet; + applyLightProbe(entity: IEntity): void; /** - * The blend mode to use when drawing this renderable. The following blend modes are supported: - * + * + * @param entity */ - blendMode: string; - _pInvalidateRenderObject(): void; + applyPointLight(entity: IEntity): void; /** - * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use. * - * @private + * @param entity */ - _pInvalidateProperties(): void; + applySkybox(entity: IEntity): void; /** - * A list of the IRenderableOwners that use this material * - * @private */ - iOwners: IRenderableOwner[]; - animator: IAnimator; + clear(): void; + } + export = EntityCollector; + +} +declare module "awayjs-display/lib/traverse/ShadowCasterCollector" { + import NodeBase = require("awayjs-display/lib/partition/NodeBase"); + import CollectorBase = require("awayjs-display/lib/traverse/CollectorBase"); + /** + * @class away.traverse.ShadowCasterCollector + */ + class ShadowCasterCollector extends CollectorBase { + constructor(); /** * */ - uvTransform: UVTransform; - /** - * The cube texture to use as the skybox. - */ - cubeMap: CubeTextureBase; + enterNode(node: NodeBase): boolean; + } + export = ShadowCasterCollector; + +} +declare module "awayjs-display/lib/materials/shadowmappers/ShadowMapperBase" { + import Scene = require("awayjs-display/lib/containers/Scene"); + import LightBase = require("awayjs-display/lib/base/LightBase"); + import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import EntityCollector = require("awayjs-display/lib/traverse/EntityCollector"); + import ShadowCasterCollector = require("awayjs-display/lib/traverse/ShadowCasterCollector"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); + class ShadowMapperBase { + _pCasterCollector: ShadowCasterCollector; + private _depthMap; + _pDepthMapSize: number; + _pLight: LightBase; + private _explicitDepthMap; + private _autoUpdateShadows; + _iShadowsInvalid: boolean; + constructor(); + pCreateCasterCollector(): ShadowCasterCollector; + autoUpdateShadows: boolean; + updateShadows(): void; + iSetDepthMap(depthMap: TextureProxyBase): void; + light: LightBase; + depthMap: TextureProxyBase; + depthMapSize: number; + dispose(): void; + pCreateDepthTexture(): TextureProxyBase; + iRenderDepthMap(entityCollector: EntityCollector, renderer: IRenderer): void; + pUpdateDepthProjection(viewCamera: Camera): void; + pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void; + _pSetDepthMapSize(value: any): void; + } + export = ShadowMapperBase; + +} +declare module "awayjs-display/lib/base/LightBase" { + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + import ShadowMapperBase = require("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase"); + class LightBase extends DisplayObjectContainer { + private _color; + private _colorR; + private _colorG; + private _colorB; + private _ambientColor; + private _ambient; + _iAmbientR: number; + _iAmbientG: number; + _iAmbientB: number; + private _specular; + _iSpecularR: number; + _iSpecularG: number; + _iSpecularB: number; + private _diffuse; + _iDiffuseR: number; + _iDiffuseG: number; + _iDiffuseB: number; + private _castsShadows; + private _shadowMapper; + constructor(); + castsShadows: boolean; + pCreateShadowMapper(): ShadowMapperBase; + specular: number; + diffuse: number; + color: number; + ambient: number; + ambientColor: number; + private updateAmbient(); + iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; + assetType: string; + private updateSpecular(); + private updateDiffuse(); + shadowMapper: ShadowMapperBase; + } + export = LightBase; + +} +declare module "awayjs-display/lib/partition/DirectionalLightNode" { + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * @class away.partition.DirectionalLightNode + */ + class DirectionalLightNode extends EntityNode { + private _directionalLight; /** - * Create a new Skybox object. * - * @param material The material with which to render the Skybox. + * @param directionalLight */ - constructor(cubeMap?: CubeTextureBase); - assetType: string; + constructor(directionalLight: IEntity); /** - * @protected + * @inheritDoc */ - pInvalidateBounds(): void; + acceptTraverser(traverser: ICollector): void; /** - * @protected + * + * @returns {boolean} */ - pCreateEntityPartitionNode(): SkyboxNode; + isCastingShadow(): boolean; + } + export = DirectionalLightNode; + +} +declare module "awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper" { + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import FreeMatrixProjection = require("awayjs-core/lib/projections/FreeMatrixProjection"); + import Scene = require("awayjs-display/lib/containers/Scene"); + import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import ShadowMapperBase = require("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase"); + import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); + class DirectionalShadowMapper extends ShadowMapperBase { + _pOverallDepthCamera: Camera; + _pLocalFrustum: number[]; + _pLightOffset: number; + _pMatrix: Matrix3D; + _pOverallDepthProjection: FreeMatrixProjection; + _pSnap: number; + _pCullPlanes: Plane3D[]; + _pMinZ: number; + _pMaxZ: number; + constructor(); + snap: number; + lightOffset: number; + iDepthProjection: Matrix3D; + depth: number; + pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void; + pUpdateCullPlanes(viewCamera: Camera): void; + pUpdateDepthProjection(viewCamera: Camera): void; + pUpdateProjectionFromFrustumCorners(viewCamera: Camera, corners: number[], matrix: Matrix3D): void; + } + export = DirectionalShadowMapper; + +} +declare module "awayjs-display/lib/entities/DirectionalLight" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import LightBase = require("awayjs-display/lib/base/LightBase"); + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + import DirectionalShadowMapper = require("awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper"); + class DirectionalLight extends LightBase implements IEntity { + private _direction; + private _tmpLookAt; + private _sceneDirection; + private _projAABBPoints; + constructor(xDir?: number, yDir?: number, zDir?: number); + sceneDirection: Vector3D; + direction: Vector3D; /** - * @protected + * + * @returns {away.bounds.NullBounds} */ pCreateDefaultBoundingVolume(): BoundingVolumeBase; /** - * @protected + * */ pUpdateBounds(): void; - castsShadows: boolean; - /** - * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they - * could be used by other materials and will not be disposed. - */ - dispose(): void; - _iCollectRenderables(renderer: IRenderer): void; - _iCollectRenderable(renderer: IRenderer): void; - _iAddRenderObject(renderObject: IRenderObject): IRenderObject; - _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; - _iAddRenderable(renderable: IRenderable): IRenderable; - _iRemoveRenderable(renderable: IRenderable): IRenderable; + pUpdateSceneTransform(): void; + pCreateShadowMapper(): DirectionalShadowMapper; /** - * - * @param renderer - * - * @internal + * @protected */ - getRenderObject(renderablePool: IRenderablePool): IRenderObject; - } - export = Skybox; - -} -declare module "awayjs-display/lib/pool/IRenderablePool" { - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); - import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); - import Skybox = require("awayjs-display/lib/entities/Skybox"); - /** - * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least - * a render call per required renderable. - */ - interface IRenderablePool { - getMaterialRenderObject(material: MaterialBase): IRenderObject; - getSkyboxRenderObject(skybox: Skybox): IRenderObject; - disposeItem(renderableOwner: IRenderableOwner): any; + pCreateEntityPartitionNode(): EntityNode; + iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; + _iCollectRenderables(rendererPool: IRendererPool): void; } - export = IRenderablePool; + export = DirectionalLight; } -declare module "awayjs-display/lib/base/IRenderObjectOwner" { - import IAsset = require("awayjs-core/lib/library/IAsset"); - import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); - import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); - import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); +declare module "awayjs-display/lib/traverse/ICollector" { + import Scene = require("awayjs-display/lib/containers/Scene"); + import NodeBase = require("awayjs-display/lib/partition/NodeBase"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); /** - * IRenderObjectOwner provides an interface for objects that can use materials. - * - * @interface away.base.IRenderObjectOwner + * @class away.traverse.ICollector */ - interface IRenderObjectOwner extends IAsset { - alphaThreshold: number; - mipmap: boolean; - smooth: boolean; - blendMode: string; - lightPicker: LightPickerBase; - animationSet: IAnimationSet; - iOwners: IRenderableOwner[]; - _iAddRenderObject(renderObject: IRenderObject): IRenderObject; - _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; + interface ICollector { /** * - * @param renderer + */ + camera: Camera; + /** * - * @internal */ - getRenderObject(renderablePool: IRenderablePool): IRenderObject; - } - export = IRenderObjectOwner; - -} -declare module "awayjs-display/lib/materials/MaterialBase" { - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase"); - import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); - import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); - import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); - import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); - /** - * MaterialBase forms an abstract base class for any material. - * A material consists of several passes, each of which constitutes at least one render call. Several passes could - * be used for special effects (render lighting for many lights in several passes, render an outline in a separate - * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space - * subsurface scattering, or rendering a depth map for specialized self-shadowing). - * - * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular - * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom - * shaders, or entire new material frameworks. - */ - class MaterialBase extends NamedAssetBase implements IRenderObjectOwner { - private _sizeChanged; - private _renderObjects; - _pAlphaThreshold: number; - _pAnimateUVs: boolean; - private _enableLightFallOff; - private _specularLightSources; - private _diffuseLightSources; - /** - * An object to contain any extra data. - */ - extra: Object; + scene: Scene; /** - * A value that can be used by materials that only work with a given type of renderer. The renderer can test the - * classification to choose which render path to use. For example, a deferred material could set this value so - * that the deferred renderer knows not to take the forward rendering path. * - * @private */ - _iClassification: string; + numEntities: number; /** - * An id for this material used to sort the renderables by shader program, which reduces Program state changes. * - * @private - */ - _iMaterialId: number; - _iBaseScreenPassIndex: number; - private _bothSides; - private _animationSet; - /** - * A list of material owners, renderables or custom Entities. */ - private _owners; - private _alphaPremultiplied; - _pBlendMode: string; - private _mipmap; - private _smooth; - private _repeat; - private _color; - _pTexture: Texture2DBase; - _pLightPicker: LightPickerBase; - _pHeight: number; - _pWidth: number; - private _onLightChangeDelegate; + numInteractiveEntities: number; /** - * Creates a new MaterialBase object. + * */ - constructor(); + clear(): any; /** * */ - height: number; + entityHead: any; /** * + * @param node */ - animationSet: IAnimationSet; + enterNode(node: NodeBase): boolean; /** - * The light picker used by the material to provide lights to the material if it supports lighting. * - * @see LightPickerBase - * @see StaticLightPicker + * @param entity */ - lightPicker: LightPickerBase; + applyDirectionalLight(entity: IEntity): any; /** - * Indicates whether or not any used textures should use mipmapping. Defaults to true. + * + * @param entity */ - mipmap: boolean; + applyEntity(entity: IEntity): any; /** - * Indicates whether or not any used textures should use smoothing. + * + * @param entity */ - smooth: boolean; + applyLightProbe(entity: IEntity): any; /** - * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to - * the texture's borders when the uv coordinates are outside the [0, 1] interval. + * + * @param entity */ - repeat: boolean; + applyPointLight(entity: IEntity): any; /** - * The diffuse reflectivity color of the surface. + * + * @param entity */ - color: number; + applySkybox(entity: IEntity): any; + } + export = ICollector; + +} +declare module "awayjs-display/lib/partition/NodeBase" { + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * @class away.partition.NodeBase + */ + class NodeBase { + private _boundsChildrenVisible; + private _explicitBoundsVisible; + private _implicitBoundsVisible; + _iParent: NodeBase; + _pChildNodes: NodeBase[]; + _pNumChildNodes: number; + _pBoundsPrimitive: IEntity; + _iNumEntities: number; + _iCollectionMark: number; /** - * The texture object to use for the albedo colour. + * */ - texture: Texture2DBase; + boundsVisible: boolean; + boundsChildrenVisible: boolean; /** - * Specifies whether or not the UV coordinates should be animated using a transformation matrix. + * */ - animateUVs: boolean; + parent: NodeBase; /** - * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and - * compatibility for constrained mode. + * + * @protected */ - enableLightFallOff: boolean; + _pNumEntities: number; /** - * Define which light source types to use for diffuse reflections. This allows choosing between regular lights - * and/or light probes for diffuse reflections. * - * @see away3d.materials.LightSources */ - diffuseLightSources: number; + constructor(); /** - * Define which light source types to use for specular reflections. This allows choosing between regular lights - * and/or light probes for specular reflections. * - * @see away3d.materials.LightSources + * @param planes + * @param numPlanes + * @returns {boolean} + * @internal */ - specularLightSources: number; + isInFrustum(planes: Plane3D[], numPlanes: number): boolean; /** - * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they - * could be used by other materials and will not be disposed. + * + * @param rayPosition + * @param rayDirection + * @returns {boolean} */ - dispose(): void; + isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; /** - * Defines whether or not the material should cull triangles facing away from the camera. + * + * @returns {boolean} */ - bothSides: boolean; + isCastingShadow(): boolean; /** - * The blend mode to use when drawing this renderable. The following blend modes are supported: - * + * + * @param entity + * @returns {away.partition.NodeBase} */ - blendMode: string; + findPartitionForEntity(entity: IEntity): NodeBase; /** - * Indicates whether visible textures (or other pixels) used by this material have - * already been premultiplied. Toggle this if you are seeing black halos around your - * blended alpha edges. + * + * @param traverser */ - alphaPremultiplied: boolean; + acceptTraverser(traverser: ICollector): void; /** - * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either - * invisible or entirely opaque, often used with textures for foliage, etc. - * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). + * + * @protected */ - alphaThreshold: number; + _pCreateBoundsPrimitive(): IEntity; /** * + * @param node + * @internal */ - width: number; + iAddNode(node: NodeBase): void; /** - * Mark an IRenderableOwner as owner of this material. - * Assures we're not using the same material across renderables with different animations, since the - * Programs depend on animation. This method needs to be called when a material is assigned. - * - * @param owner The IRenderableOwner that had this material assigned * + * @param node * @internal */ - iAddOwner(owner: IRenderableOwner): void; + iRemoveNode(node: NodeBase): void; + private _iUpdateImplicitBoundsVisible(value); /** - * Removes an IRenderableOwner as owner. - * @param owner - * * @internal */ - iRemoveOwner(owner: IRenderableOwner): void; + _iIsBoundsVisible(): boolean; + _iUpdateEntityBounds(): void; + } + export = NodeBase; + +} +declare module "awayjs-display/lib/partition/EntityNode" { + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import NodeBase = require("awayjs-display/lib/partition/NodeBase"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * @class away.partition.EntityNode + */ + class EntityNode extends NodeBase { + private _entity; + _iUpdateQueueNext: EntityNode; + constructor(entity: IEntity); + entity: IEntity; + removeFromParent(): void; /** - * A list of the IRenderableOwners that use this material * - * @private + * @returns {boolean} */ - iOwners: IRenderableOwner[]; + isCastingShadow(): boolean; /** - * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use. * - * @private + * @param planes + * @param numPlanes + * @returns {boolean} */ - _pInvalidateProperties(): void; - private invalidateAnimation(); - _pInvalidateRenderObject(): void; + isInFrustum(planes: Plane3D[], numPlanes: number): boolean; /** - * Called when the light picker's configuration changed. + * @inheritDoc */ - private onLightsChange(event); - _pNotifySizeChanged(): void; - _iAddRenderObject(renderObject: IRenderObject): IRenderObject; - _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; + acceptTraverser(traverser: ICollector): void; + /** + * @inheritDoc + */ + isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; /** * - * @param renderer - * - * @internal + * @protected */ - getRenderObject(renderablePool: IRenderablePool): IRenderObject; + _pCreateBoundsPrimitive(): IEntity; } - export = MaterialBase; + export = EntityNode; } -declare module "awayjs-display/lib/base/ISubMesh" { - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); - import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); - import Mesh = require("awayjs-display/lib/entities/Mesh"); +declare module "awayjs-display/lib/partition/NullNode" { /** - * ISubMesh is an interface for object SubMesh that is used to - * apply a material to a SubGeometry class - * - * @class away.base.ISubMesh + * @class away.partition.NullNode */ - interface ISubMesh extends IRenderableOwner { - subGeometry: SubGeometryBase; - parentMesh: Mesh; - material: MaterialBase; - _iIndex: number; - _iInvalidateRenderableGeometry(): any; - _iGetExplicitMaterial(): MaterialBase; + class NullNode { + constructor(); } - export = ISubMesh; + export = NullNode; } -declare module "awayjs-display/lib/base/ISubMeshClass" { - import ISubMesh = require("awayjs-display/lib/base/ISubMesh"); - import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); - import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); - import Mesh = require("awayjs-display/lib/entities/Mesh"); +declare module "awayjs-display/lib/partition/Partition" { + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + import NodeBase = require("awayjs-display/lib/partition/NodeBase"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); /** - * ISubMeshClass is an interface for the constructable class definition ISubMesh that is used to - * apply a material to a SubGeometry class - * - * @class away.base.ISubMeshClass + * @class away.partition.Partition */ - interface ISubMeshClass { - /** - * - */ - new (subGeometry: SubGeometryBase, parentMesh: Mesh, material?: MaterialBase): ISubMesh; + class Partition { + _rootNode: NodeBase; + private _updatesMade; + private _updateQueue; + constructor(rootNode: NodeBase); + rootNode: NodeBase; + traverse(traverser: ICollector): void; + iMarkForUpdate(entity: DisplayObject): void; + iRemoveEntity(entity: DisplayObject): void; + private updateEntities(); } - export = ISubMeshClass; + export = Partition; } -declare module "awayjs-display/lib/base/SubGeometryBase" { - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Geometry = require("awayjs-display/lib/base/Geometry"); - import ISubMeshClass = require("awayjs-display/lib/base/ISubMeshClass"); +declare module "awayjs-display/lib/containers/DisplayObjectContainer" { + import Point = require("awayjs-core/lib/geom/Point"); + import IAsset = require("awayjs-core/lib/library/IAsset"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + import Partition = require("awayjs-display/lib/partition/Partition"); + import Scene = require("awayjs-display/lib/containers/Scene"); /** - * @class away.base.TriangleSubGeometry + * The DisplayObjectContainer class is the base class for all objects that can + * serve as display object containers on the display list. The display list + * manages all objects displayed in the Flash runtimes. Use the + * DisplayObjectContainer class to arrange the display objects in the display + * list. Each DisplayObjectContainer object has its own child list for + * organizing the z-order of the objects. The z-order is the front-to-back + * order that determines which object is drawn in front, which is behind, and + * so on. + * + *

DisplayObject is an abstract base class; therefore, you cannot call + * DisplayObject directly. Invoking new DisplayObject() throws an + * ArgumentError exception.

+ * The DisplayObjectContainer class is an abstract base class for all objects + * that can contain child objects. It cannot be instantiated directly; calling + * the new DisplayObjectContainer() constructor throws an + * ArgumentError exception. + * + *

For more information, see the "Display Programming" chapter of the + * ActionScript 3.0 Developer's Guide.

*/ - class SubGeometryBase extends NamedAssetBase { - static VERTEX_DATA: string; - _pStrideOffsetDirty: boolean; - _pIndices: number[]; - _pVertices: number[]; - private _numIndices; - private _numTriangles; - _pNumVertices: number; - _pConcatenateArrays: boolean; - private _indicesUpdated; - _pStride: Object; - _pOffset: Object; - _pUpdateStrideOffset(): void; - _pSubMeshClass: ISubMeshClass; - subMeshClass: ISubMeshClass; + class DisplayObjectContainer extends DisplayObject implements IAsset { + private _mouseChildren; + private _children; + _iIsRoot: boolean; /** * */ - concatenateArrays: boolean; + assetType: string; /** - * The raw index data that define the faces. + * Determines whether or not the children of the object are mouse, or user + * input device, enabled. If an object is enabled, a user can interact with + * it by using a mouse or user input device. The default is + * true. + * + *

This property is useful when you create a button with an instance of + * the Sprite class(instead of using the SimpleButton class). When you use a + * Sprite instance to create a button, you can choose to decorate the button + * by using the addChild() method to add additional Sprite + * instances. This process can cause unexpected behavior with mouse events + * because the Sprite instances you add as children can become the target + * object of a mouse event when you expect the parent instance to be the + * target object. To ensure that the parent instance serves as the target + * objects for mouse events, you can set the mouseChildren + * property of the parent instance to false.

+ * + *

No event is dispatched by setting this property. You must use the + * addEventListener() method to create interactive + * functionality.

*/ - indices: number[]; + mouseChildren: boolean; + /** + * Returns the number of children of this object. + */ + numChildren: number; /** + * Determines whether the children of the object are tab enabled. Enables or + * disables tabbing for the children of the object. The default is + * true. + * + *

Note: Do not use the tabChildren property with + * Flex. Instead, use the + * mx.core.UIComponent.hasFocusableChildren property.

* + * @throws IllegalOperationError Calling this property of the Stage object + * throws an exception. The Stage object does + * not implement this property. */ - vertices: number[]; + tabChildren: boolean; /** - * The total amount of triangles in the TriangleSubGeometry. + * Calling the new DisplayObjectContainer() constructor throws + * an ArgumentError exception. You can, however, call + * constructors for the following subclasses of DisplayObjectContainer: + * */ - numTriangles: number; - numVertices: number; + constructor(); /** + * Adds a child DisplayObject instance to this DisplayObjectContainer + * instance. The child is added to the front(top) of all other children in + * this DisplayObjectContainer instance.(To add a child to a specific index + * position, use the addChildAt() method.) + * + *

If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.

+ * + *

Note: The command stage.addChild() can cause + * problems with a published SWF file, including security problems and + * conflicts with other loaded SWF files. There is only one Stage within a + * Flash runtime instance, no matter how many SWF files you load into the + * runtime. So, generally, objects should not be added to the Stage, + * directly, at all. The only object the Stage should contain is the root + * object. Create a DisplayObjectContainer to contain all of the items on the + * display list. Then, if necessary, add that DisplayObjectContainer instance + * to the Stage.

* + * @param child The DisplayObject instance to add as a child of this + * DisplayObjectContainer instance. + * @return The DisplayObject instance that you pass in the child + * parameter. + * @throws ArgumentError Throws if the child is the same as the parent. Also + * throws if the caller is a child(or grandchild etc.) + * of the child being added. + * @event added Dispatched when a display object is added to the display + * list. */ - constructor(concatenatedArrays: boolean); + addChild(child: DisplayObject): DisplayObject; /** + * Adds a child DisplayObject instance to this DisplayObjectContainer + * instance. The child is added at the index position specified. An index of + * 0 represents the back(bottom) of the display list for this + * DisplayObjectContainer object. + * + *

For example, the following example shows three display objects, labeled + * a, b, and c, at index positions 0, 2, and 1, respectively:

+ * + *

If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.

* + * @param child The DisplayObject instance to add as a child of this + * DisplayObjectContainer instance. + * @param index The index position to which the child is added. If you + * specify a currently occupied index position, the child object + * that exists at that position and all higher positions are + * moved up one position in the child list. + * @return The DisplayObject instance that you pass in the child + * parameter. + * @throws ArgumentError Throws if the child is the same as the parent. Also + * throws if the caller is a child(or grandchild etc.) + * of the child being added. + * @throws RangeError Throws if the index position does not exist in the + * child list. + * @event added Dispatched when a display object is added to the display + * list. */ - getStride(dataType: string): any; + addChildAt(child: DisplayObject, index: number): DisplayObject; + addChildren(...childarray: DisplayObject[]): void; /** * */ - getOffset(dataType: string): any; - updateVertices(): void; + clone(): DisplayObject; /** + * Determines whether the specified display object is a child of the + * DisplayObjectContainer instance or the instance itself. The search + * includes the entire display list including this DisplayObjectContainer + * instance. Grandchildren, great-grandchildren, and so on each return + * true. * + * @param child The child object to test. + * @return true if the child object is a child of + * the DisplayObjectContainer or the container itself; otherwise + * false. */ - dispose(): void; + contains(child: DisplayObject): boolean; /** - * Updates the face indices of the TriangleSubGeometry. * - * @param indices The face indices to upload. */ - updateIndices(indices: number[]): void; + disposeWithChildren(): void; /** - * @protected + * Returns the child display object instance that exists at the specified + * index. + * + * @param index The index position of the child object. + * @return The child display object at the specified index position. + * @throws RangeError Throws if the index does not exist in the child + * list. */ - pInvalidateBounds(): void; + getChildAt(index: number): DisplayObject; /** - * The Geometry object that 'owns' this TriangleSubGeometry object. + * Returns the child display object that exists with the specified name. If + * more that one child display object has the specified name, the method + * returns the first object in the child list. * - * @private + *

The getChildAt() method is faster than the + * getChildByName() method. The getChildAt() method + * accesses a child from a cached array, whereas the + * getChildByName() method has to traverse a linked list to + * access a child.

+ * + * @param name The name of the child to return. + * @return The child display object with the specified name. */ - parentGeometry: Geometry; + getChildByName(name: string): DisplayObject; /** - * Clones the current object - * @return An exact duplicate of the current object. + * Returns the index position of a child DisplayObject instance. + * + * @param child The DisplayObject instance to identify. + * @return The index position of the child display object to identify. + * @throws ArgumentError Throws if the child parameter is not a child of this + * object. */ - clone(): SubGeometryBase; - applyTransformation(transform: Matrix3D): void; + getChildIndex(child: DisplayObject): number; /** - * Scales the geometry. - * @param scale The amount by which to scale. + * Returns an array of objects that lie under the specified point and are + * children(or grandchildren, and so on) of this DisplayObjectContainer + * instance. Any child objects that are inaccessible for security reasons are + * omitted from the returned array. To determine whether this security + * restriction affects the returned array, call the + * areInaccessibleObjectsUnderPoint() method. + * + *

The point parameter is in the coordinate space of the + * Stage, which may differ from the coordinate space of the display object + * container(unless the display object container is the Stage). You can use + * the globalToLocal() and the localToGlobal() + * methods to convert points between these coordinate spaces.

+ * + * @param point The point under which to look. + * @return An array of objects that lie under the specified point and are + * children(or grandchildren, and so on) of this + * DisplayObjectContainer instance. */ - scale(scale: number): void; - scaleUV(scaleU?: number, scaleV?: number): void; - getBoundingPositions(): number[]; - private notifyIndicesUpdate(); - _pNotifyVerticesUpdate(): void; - } - export = SubGeometryBase; - -} -declare module "awayjs-display/lib/animators/IAnimator" { - import IAsset = require("awayjs-core/lib/library/IAsset"); - import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); - import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * Provides an interface for animator classes that control animation output from a data set subtype of AnimationSetBase. - * - * @see away.animators.IAnimationSet - */ - interface IAnimator extends IAsset { + getObjectsUnderPoint(point: Point): DisplayObject[]; /** + * Removes the specified child DisplayObject instance from the + * child list of the DisplayObjectContainer instance. The parent + * property of the removed child is set to null , and the object + * is garbage collected if no other references to the child exist. The index + * positions of any display objects above the child in the + * DisplayObjectContainer are decreased by 1. + * + *

The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.

* + * @param child The DisplayObject instance to remove. + * @return The DisplayObject instance that you pass in the child + * parameter. + * @throws ArgumentError Throws if the child parameter is not a child of this + * object. */ - animationSet: IAnimationSet; + removeChild(child: DisplayObject): DisplayObject; /** + * Removes a child DisplayObject from the specified index + * position in the child list of the DisplayObjectContainer. The + * parent property of the removed child is set to + * null, and the object is garbage collected if no other + * references to the child exist. The index positions of any display objects + * above the child in the DisplayObjectContainer are decreased by 1. + * + *

The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.

* + * @param index The child index of the DisplayObject to remove. + * @return The DisplayObject instance that was removed. + * @throws RangeError Throws if the index does not exist in the child + * list. + * @throws SecurityError This child display object belongs to a sandbox to + * which the calling object does not have access. You + * can avoid this situation by having the child movie + * call the Security.allowDomain() method. */ - clone(): IAnimator; + removeChildAt(index: number): DisplayObject; /** + * Removes all child DisplayObject instances from the child list + * of the DisplayObjectContainer instance. The parent property + * of the removed children is set to null, and the objects are + * garbage collected if no other references to the children exist. + * + * The garbage collector reallocates unused memory space. When a variable or + * object is no longer actively referenced or stored somewhere, the garbage + * collector sweeps through and wipes out the memory space it used to occupy + * if no other references to it exist. * + * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError. + * @param endIndex The ending position. A value smaller than 0 throws a RangeError. + * @throws RangeError Throws if the beginIndex or endIndex positions do + * not exist in the child list. */ - dispose(): any; + removeChildren(beginIndex?: number, endIndex?: number): void; /** - * Used by the entity object to which the animator is applied, registers the owner for internal use. + * Changes the position of an existing child in the display object container. + * This affects the layering of child objects. For example, the following + * example shows three display objects, labeled a, b, and c, at index + * positions 0, 1, and 2, respectively: * - * @private + *

When you use the setChildIndex() method and specify an + * index position that is already occupied, the only positions that change + * are those in between the display object's former and new position. All + * others will stay the same. If a child is moved to an index LOWER than its + * current index, all children in between will INCREASE by 1 for their index + * reference. If a child is moved to an index HIGHER than its current index, + * all children in between will DECREASE by 1 for their index reference. For + * example, if the display object container in the previous example is named + * container, you can swap the position of the display objects + * labeled a and b by calling the following code:

+ * + *

This code results in the following arrangement of objects:

+ * + * @param child The child DisplayObject instance for which you want to change + * the index number. + * @param index The resulting index number for the child display + * object. + * @throws ArgumentError Throws if the child parameter is not a child of this + * object. + * @throws RangeError Throws if the index does not exist in the child + * list. */ - addOwner(mesh: IEntity): any; + setChildIndex(child: DisplayObject, index: number): void; /** - * Used by the mesh object from which the animator is removed, unregisters the owner for internal use. + * Swaps the z-order (front-to-back order) of the two specified child + * objects. All other child objects in the display object container remain in + * the same index positions. * - * @private + * @param child1 The first child object. + * @param child2 The second child object. + * @throws ArgumentError Throws if either child parameter is not a child of + * this object. */ - removeOwner(mesh: IEntity): any; + swapChildren(child1: DisplayObject, child2: DisplayObject): void; /** - * //TODO + * Swaps the z-order(front-to-back order) of the child objects at the two + * specified index positions in the child list. All other child objects in + * the display object container remain in the same index positions. * - * @param sourceSubGeometry + * @param index1 The index position of the first child object. + * @param index2 The index position of the second child object. + * @throws RangeError If either index does not exist in the child list. */ - getRenderableSubGeometry(renderable: IRenderable, sourceSubGeometry: SubGeometryBase): SubGeometryBase; - } - export = IAnimator; - -} -declare module "awayjs-display/lib/base/IRenderableOwner" { - import UVTransform = require("awayjs-core/lib/geom/UVTransform"); - import IAsset = require("awayjs-core/lib/library/IAsset"); - import IAnimator = require("awayjs-display/lib/animators/IAnimator"); - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - /** - * IRenderableOwner provides an interface for objects that can use materials. - * - * @interface away.base.IRenderableOwner - */ - interface IRenderableOwner extends IAsset { + swapChildrenAt(index1: number, index2: number): void; /** - * The animation used by the material owner to assemble the vertex code. + * @protected */ - animator: IAnimator; + pInvalidateSceneTransform(): void; /** - * + * @protected */ - uvTransform: UVTransform; + _pUpdateScene(value: Scene): void; /** - * - * @param renderable - * @private + * @protected */ - _iAddRenderable(renderable: IRenderable): IRenderable; + _pUpdateImplicitMouseEnabled(value: boolean): void; /** - * - * @param renderable - * @private + * @protected */ - _iRemoveRenderable(renderable: IRenderable): IRenderable; + _pUpdateImplicitVisibility(value: boolean): void; + /** + * @protected + */ + _pUpdateImplicitPartition(value: Partition): void; /** - * - * @param renderer * @private + * + * @param child */ - _iCollectRenderable(renderer: IRenderer): any; + private removeChildInternal(child); } - export = IRenderableOwner; + export = DisplayObjectContainer; } -declare module "awayjs-display/lib/pick/PickingCollisionVO" { - import Point = require("awayjs-core/lib/geom/Point"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); +declare module "awayjs-display/lib/base/AlignmentMode" { /** - * Value object for a picking collision returned by a picking collider. Created as unique objects on display objects - * - * @see away.base.DisplayObject#pickingCollisionVO - * @see away.core.pick.IPickingCollider * - * @class away.pick.PickingCollisionVO */ - class PickingCollisionVO { - /** - * The display object to which this collision object belongs. - */ - displayObject: DisplayObject; - /** - * The local position of the collision on the entity's surface. - */ - localPosition: Vector3D; - /** - * The local normal vector at the position of the collision. - */ - localNormal: Vector3D; - /** - * The uv coordinate at the position of the collision. - */ - uv: Point; - /** - * The index of the face where the event took pl ace. - */ - index: number; - /** - * The index of the subGeometry where the event took place. - */ - /** - * The starting position of the colliding ray in local coordinates. - */ - localRayPosition: Vector3D; - /** - * The direction of the colliding ray in local coordinates. - */ - localRayDirection: Vector3D; - /** - * The starting position of the colliding ray in scene coordinates. - */ - rayPosition: Vector3D; - /** - * The direction of the colliding ray in scene coordinates. - */ - rayDirection: Vector3D; + class AlignmentMode { /** - * Determines if the ray position is contained within the entity bounds. * - * @see away3d.entities.Entity#bounds */ - rayOriginIsInsideBounds: boolean; + static REGISTRATION_POINT: string; /** - * The distance along the ray from the starting position to the calculated intersection entry point with the entity. + * */ - rayEntryDistance: number; - /** - * The material ownwer associated with a collision. - */ - renderableOwner: IRenderableOwner; - /** - * Creates a new PickingCollisionVO object. - * - * @param entity The entity to which this collision object belongs. - */ - constructor(displayObject: DisplayObject); + static PIVOT_POINT: string; } - export = PickingCollisionVO; + export = AlignmentMode; } -declare module "awayjs-display/lib/pick/IPickingCollider" { - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); +declare module "awayjs-display/lib/containers/Loader" { + import AssetLoaderContext = require("awayjs-core/lib/library/AssetLoaderContext"); + import AssetLoaderToken = require("awayjs-core/lib/library/AssetLoaderToken"); + import URLRequest = require("awayjs-core/lib/net/URLRequest"); + import ParserBase = require("awayjs-core/lib/parsers/ParserBase"); + import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + import LoaderInfo = require("awayjs-display/lib/base/LoaderInfo"); /** - * Provides an interface for picking colliders that can be assigned to individual entities in a scene for specific picking behaviour. - * Used with the RaycastPicker picking object. + * The Loader class is used to load SWF files or image(JPG, PNG, or GIF) + * files. Use the load() method to initiate loading. The loaded + * display object is added as a child of the Loader object. * - * @see away.entities.Entity#pickingCollider - * @see away.pick.RaycastPicker + *

Use the URLLoader class to load text or binary data.

* - * @interface away.pick.IPickingCollider + *

The Loader class overrides the following methods that it inherits, + * because a Loader object can only have one child display object - the + * display object that it loads. Calling the following methods throws an + * exception: addChild(), addChildAt(), + * removeChild(), removeChildAt(), and + * setChildIndex(). To remove a loaded display object, you must + * remove the Loader object from its parent DisplayObjectContainer + * child array.

+ * + *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes + * are not used in ActionScript 3.0. The Loader and URLLoader classes replace + * them.

+ * + *

When you use the Loader class, consider the Flash Player and Adobe AIR + * security model:

+ * + * + * + *

However, in AIR, content in the application security + * sandbox(content installed with the AIR application) are not restricted by + * these security limitations.

+ * + *

For more information related to security, see the Flash Player Developer + * Center Topic: Security.

+ * + *

When loading a SWF file from an untrusted source(such as a domain other + * than that of the Loader object's root SWF file), you may want to define a + * mask for the Loader object, to prevent the loaded content(which is a child + * of the Loader object) from drawing to portions of the Stage outside of that + * mask, as shown in the following code:

*/ - interface IPickingCollider { + class Loader extends DisplayObjectContainer { /** - * Sets the position and direction of a picking ray in local coordinates to the entity. + * Dispatched when any asset finishes parsing. Also see specific events for each + * individual asset type (meshes, materials et c.) * - * @param localDirection The position vector in local coordinates - * @param localPosition The direction vector in local coordinates + * @eventType AssetEvent */ - setLocalRay(localPosition: Vector3D, localDirection: Vector3D): any; /** - * Tests a Billboard object for a collision with the picking ray. + * Dispatched when a full resource (including dependencies) finishes loading. * - * @param entity The entity instance to be tested. - * @param pickingCollisionVO The collision object used to store the collision results - * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray. + * @eventType LoaderEvent */ - testBillboardCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean; + private _loadingSessions; + private _useAssetLib; + private _assetLibId; + private _onResourceCompleteDelegate; + private _onAssetCompleteDelegate; + private _content; + private _contentLoaderInfo; /** - * Tests a Mesh object for a collision with the picking ray. + * Contains the root display object of the SWF file or image(JPG, PNG, or + * GIF) file that was loaded by using the load() or + * loadBytes() methods. * - * @param entity The entity instance to be tested. - * @param pickingCollisionVO The collision object used to store the collision results - * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray. - * @param findClosest + * @throws SecurityError The loaded SWF file or image file belongs to a + * security sandbox to which you do not have access. + * For a loaded SWF file, you can avoid this situation + * by having the file call the + * Security.allowDomain() method or by + * having the loading file specify a + * loaderContext parameter with its + * securityDomain property set to + * SecurityDomain.currentDomain when you + * call the load() or + * loadBytes() method. */ - testMeshCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number, findClosest: boolean): boolean; - } - export = IPickingCollider; - -} -declare module "awayjs-display/lib/entities/IEntity" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import IAsset = require("awayjs-core/lib/library/IAsset"); - import Transform = require("awayjs-display/lib/base/Transform"); - import Scene = require("awayjs-display/lib/containers/Scene"); - import ControllerBase = require("awayjs-display/lib/controllers/ControllerBase"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import Partition = require("awayjs-display/lib/partition/Partition"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IPickingCollider = require("awayjs-display/lib/pick/IPickingCollider"); - import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - interface IEntity extends IAsset { - x: number; - y: number; - z: number; - rotationX: number; - rotationY: number; - rotationZ: number; - scaleX: number; - scaleY: number; - scaleZ: number; + content: DisplayObject; /** + * Returns a LoaderInfo object corresponding to the object being loaded. + * LoaderInfo objects are shared between the Loader object and the loaded + * content object. The LoaderInfo object supplies loading progress + * information and statistics about the loaded file. * - */ - bounds: BoundingVolumeBase; - /** + *

Events related to the load are dispatched by the LoaderInfo object + * referenced by the contentLoaderInfo property of the Loader + * object. The contentLoaderInfo property is set to a valid + * LoaderInfo object, even before the content is loaded, so that you can add + * event listeners to the object prior to the load.

* + *

To detect uncaught errors that happen in a loaded SWF, use the + * Loader.uncaughtErrorEvents property, not the + * Loader.contentLoaderInfo.uncaughtErrorEvents property.

*/ - castsShadows: boolean; + contentLoaderInfo: LoaderInfo; /** + * Creates a Loader object that you can use to load files, such as SWF, JPEG, + * GIF, or PNG files. Call the load() method to load the asset + * as a child of the Loader instance. You can then add the Loader object to + * the display list(for instance, by using the addChild() + * method of a DisplayObjectContainer instance). The asset appears on the + * Stage as it loads. * - */ - inverseSceneTransform: Matrix3D; - /** + *

You can also use a Loader instance "offlist," that is without adding it + * to a display object container on the display list. In this mode, the + * Loader instance might be used to load a SWF file that contains additional + * modules of an application.

* - */ - partitionNode: EntityNode; - /** + *

To detect when the SWF file is finished loading, you can use the events + * of the LoaderInfo object associated with the + * contentLoaderInfo property of the Loader object. At that + * point, the code in the module SWF file can be executed to initialize and + * start the module. In the offlist mode, a Loader instance might also be + * used to load a SWF file that contains components or media assets. Again, + * you can use the LoaderInfo object event notifications to detect when the + * components are finished loading. At that point, the application can start + * using the components and media assets in the library of the SWF file by + * instantiating the ActionScript 3.0 classes that represent those components + * and assets.

* - */ - pickingCollider: IPickingCollider; - /** + *

To determine the status of a Loader object, monitor the following + * events that the LoaderInfo object associated with the + * contentLoaderInfo property of the Loader object:

* + * */ - transform: Transform; + constructor(useAssetLibrary?: boolean, assetLibraryId?: string); /** + * Cancels a load() method operation that is currently in + * progress for the Loader instance. * */ - scene: Scene; + close(): void; /** + * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an + * object that is a child of this Loader object. If you load an animated GIF + * file, only the first frame is displayed. As the Loader object can contain + * only a single child, issuing a subsequent load() request + * terminates the previous request, if still pending, and commences a new + * load. * - */ - scenePosition: Vector3D; - /** + *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a + * loaded image is 8,191 pixels in width or height, and the total number of + * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191 + * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and + * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height + * and 2,880 pixels in width.

* - */ - sceneTransform: Matrix3D; - /** + *

A SWF file or image loaded into a Loader object inherits the position, + * rotation, and scale properties of the parent display objects of the Loader + * object.

* - */ - worldBounds: BoundingVolumeBase; - /** + *

Use the unload() method to remove movies or images loaded + * with this method, or to cancel a load operation that is in progress.

* - */ - zOffset: number; - /** + *

You can prevent a SWF file from using this method by setting the + * allowNetworking parameter of the the object and + * embed tags in the HTML page that contains the SWF + * content.

* - */ - isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; - /** + *

When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.

* + *

In Flash Player 10 and later, if you use a multipart Content-Type(for + * example "multipart/form-data") that contains an upload(indicated by a + * "filename" parameter in a "content-disposition" header within the POST + * body), the POST operation is subject to the security rules applied to + * uploads:

* - * @param target - * @param upAxis - */ - lookAt(target: Vector3D, upAxis?: Vector3D): any; - /** - * @internal - */ - _iPickingCollisionVO: PickingCollisionVO; - /** - * @internal - */ - _iController: ControllerBase; - /** - * @internal + * + * + *

Also, for any multipart Content-Type, the syntax must be valid + * (according to the RFC2046 standard). If the syntax appears to be invalid, + * the POST operation is subject to the security rules applied to + * uploads.

+ * + *

For more information related to security, see the Flash Player + * Developer Center Topic: Security.

+ * + * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG + * file to be loaded. A relative path must be relative to the + * main SWF file. Absolute URLs must include the protocol + * reference, such as http:// or file:///. Filenames cannot + * include disk drive specifications. + * @param context A LoaderContext object, which has properties that define + * the following: + * + * + *

If the context parameter is not specified + * or refers to a null object, the loaded content remains in + * its own security domain.

+ * + *

For complete details, see the description of the + * properties in the LoaderContext + * class.

+ * @param ns An optional namespace string under which the file is to be + * loaded, allowing the differentiation of two resources with + * identical assets. + * @param parser An optional parser object for translating the loaded data + * into a usable resource. If not provided, AssetLoader will + * attempt to auto-detect the file type. + * @throws IOError The digest property of the + * request object is not + * null. You should only set the + * digest property of a URLRequest + * object when calling the + * URLLoader.load() method when + * loading a SWZ file(an Adobe platform + * component). + * @throws IllegalOperationError If the requestedContentParent + * property of the context + * parameter is a Loader. + * @throws IllegalOperationError If the LoaderContext.parameters + * parameter is set to non-null and has some + * values which are not Strings. + * @throws SecurityError The value of + * LoaderContext.securityDomain + * must be either null or + * SecurityDomain.currentDomain. + * This reflects the fact that you can only + * place the loaded media in its natural + * security sandbox or your own(the latter + * requires a policy file). + * @throws SecurityError Local SWF files may not set + * LoaderContext.securityDomain to anything + * other than null. It is not + * permitted to import non-local media into a + * local sandbox, or to place other local media + * in anything other than its natural sandbox. + * @throws SecurityError You cannot connect to commonly reserved + * ports. For a complete list of blocked ports, + * see "Restricting Networking APIs" in the + * ActionScript 3.0 Developer's Guide. + * @throws SecurityError If the applicationDomain or + * securityDomain properties of + * the context parameter are from + * a disallowed domain. + * @throws SecurityError If a local SWF file is attempting to use the + * securityDomain property of the + * context parameter. + * @event asyncError Dispatched by the contentLoaderInfo + * object if the + * LoaderContext.requestedContentParent + * property has been specified and it is not possible to + * add the loaded content as a child to the specified + * DisplayObjectContainer. This could happen if the + * loaded content is a + * flash.display.AVM1Movie or if the + * addChild() call to the + * requestedContentParent throws an error. + * @event complete Dispatched by the contentLoaderInfo + * object when the file has completed loading. The + * complete event is always dispatched + * after the init event. + * @event httpStatus Dispatched by the contentLoaderInfo + * object when a network request is made over HTTP and + * Flash Player can detect the HTTP status code. + * @event init Dispatched by the contentLoaderInfo + * object when the properties and methods of the loaded + * SWF file are accessible. The init event + * always precedes the complete event. + * @event ioError Dispatched by the contentLoaderInfo + * object when an input or output error occurs that + * causes a load operation to fail. + * @event open Dispatched by the contentLoaderInfo + * object when the loading operation starts. + * @event progress Dispatched by the contentLoaderInfo + * object as data is received while load operation + * progresses. + * @event securityError Dispatched by the contentLoaderInfo + * object if a SWF file in the local-with-filesystem + * sandbox attempts to load content in the + * local-with-networking sandbox, or vice versa. + * @event securityError Dispatched by the contentLoaderInfo + * object if the + * LoaderContext.requestedContentParent + * property has been specified and the security sandbox + * of the + * LoaderContext.requestedContentParent + * does not have access to the loaded SWF. + * @event unload Dispatched by the contentLoaderInfo + * object when a loaded object is removed. */ - _iAssignedPartition: Partition; + load(request: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken; /** - * //TODO + * Loads from binary data stored in a ByteArray object. * - * @param shortestCollisionDistance - * @param findClosest - * @returns {boolean} + *

The loadBytes() method is asynchronous. You must wait for + * the "init" event before accessing the properties of a loaded object.

* - * @internal + *

When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.

+ * + * @param bytes A ByteArray object. The contents of the ByteArray can be + * any of the file formats supported by the Loader class: SWF, + * GIF, JPEG, or PNG. + * @param context A LoaderContext object. Only the + * applicationDomain property of the + * LoaderContext object applies; the + * checkPolicyFile and + * securityDomain properties of the LoaderContext + * object do not apply. + * + *

If the context parameter is not specified + * or refers to a null object, the content is loaded into the + * current security domain - a process referred to as "import + * loading" in Flash Player security documentation. + * Specifically, if the loading SWF file trusts the remote SWF + * by incorporating the remote SWF into its code, then the + * loading SWF can import it directly into its own security + * domain.

+ * + *

For more information related to security, see the Flash + * Player Developer Center Topic: Security.

+ * @throws ArgumentError If the length property of the + * ByteArray object is not greater than 0. + * @throws IllegalOperationError If the checkPolicyFile or + * securityDomain property of the + * context parameter are non-null. + * @throws IllegalOperationError If the requestedContentParent + * property of the context + * parameter is a Loader. + * @throws IllegalOperationError If the LoaderContext.parameters + * parameter is set to non-null and has some + * values which are not Strings. + * @throws SecurityError If the provided + * applicationDomain property of + * the context property is from a + * disallowed domain. + * @throws SecurityError You cannot connect to commonly reserved + * ports. For a complete list of blocked ports, + * see "Restricting Networking APIs" in the + * ActionScript 3.0 Developer's Guide. + * @event asyncError Dispatched by the contentLoaderInfo + * object if the + * LoaderContext.requestedContentParent + * property has been specified and it is not possible to + * add the loaded content as a child to the specified + * DisplayObjectContainer. This could happen if the + * loaded content is a + * flash.display.AVM1Movie or if the + * addChild() call to the + * requestedContentParent throws an error. + * @event complete Dispatched by the contentLoaderInfo + * object when the operation is complete. The + * complete event is always dispatched + * after the init event. + * @event init Dispatched by the contentLoaderInfo + * object when the properties and methods of the loaded + * data are accessible. The init event + * always precedes the complete event. + * @event ioError Dispatched by the contentLoaderInfo + * object when the runtime cannot parse the data in the + * byte array. + * @event open Dispatched by the contentLoaderInfo + * object when the operation starts. + * @event progress Dispatched by the contentLoaderInfo + * object as data is transfered in memory. + * @event securityError Dispatched by the contentLoaderInfo + * object if the + * LoaderContext.requestedContentParent + * property has been specified and the security sandbox + * of the + * LoaderContext.requestedContentParent + * does not have access to the loaded SWF. + * @event unload Dispatched by the contentLoaderInfo + * object when a loaded object is removed. */ - _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean; + loadData(data: any, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken; /** - * @internal + * Removes a child of this Loader object that was loaded by using the + * load() method. The property of the associated + * LoaderInfo object is reset to null. The child is not + * necessarily destroyed because other objects might have references to it; + * however, it is no longer a child of the Loader object. + * + *

As a best practice, before you unload a child SWF file, you should + * explicitly close any streams in the child SWF file's objects, such as + * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise, + * audio in the child SWF file might continue to play, even though the child + * SWF file was unloaded. To close streams in the child SWF file, add an + * event listener to the child that listens for the unload + * event. When the parent calls Loader.unload(), the + * unload event is dispatched to the child. The following code + * shows how you might do this:

+ *
 public closeAllStreams(evt:Event) {
+	     * myNetStream.close(); mySound.close(); myNetConnection.close();
+	     * myLocalConnection.close(); }
+	     * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,
+	     * closeAllStreams);
+ * */ - _iIsMouseEnabled(): boolean; + unload(): void; /** - * @internal + * Enables a specific parser. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClass The parser class to enable. + * @see away.parsers.Parsers */ - _iIsVisible(): boolean; - _iInternalUpdate(): any; + static enableParser(parserClass: Object): void; /** - * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render. - * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would - * return the scene transform. + * Enables a list of parsers. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClasses A Vector of parser classes to enable. + * @see away.parsers.Parsers */ - getRenderSceneTransform(camera: Camera): Matrix3D; + static enableParsers(parserClasses: Object[]): void; + private removeListeners(dispatcher); + private onAssetComplete(event); /** - * - * @param renderer - * @private + * Called when an error occurs during loading */ - _iCollectRenderables(renderer: IRenderer): any; - } - export = IEntity; - -} -declare module "awayjs-display/lib/events/CameraEvent" { - import Event = require("awayjs-core/lib/events/Event"); - import Camera = require("awayjs-display/lib/entities/Camera"); - /** - * @class away.events.CameraEvent - */ - class CameraEvent extends Event { - static PROJECTION_CHANGED: string; - private _camera; - constructor(type: string, camera: Camera); - camera: Camera; - } - export = CameraEvent; - -} -declare module "awayjs-display/lib/partition/CameraNode" { - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.partition.CameraNode - */ - class CameraNode extends EntityNode { - constructor(camera: IEntity); + private onLoadError(event); /** - * @inheritDoc + * Called when a an error occurs during parsing */ - acceptTraverser(traverser: ICollector): void; + private onParseError(event); + /** + * Called when the resource and all of its dependencies was retrieved. + */ + private onResourceComplete(event); } - export = CameraNode; + export = Loader; } -declare module "awayjs-display/lib/entities/Camera" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import IProjection = require("awayjs-core/lib/projections/IProjection"); - import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - class Camera extends DisplayObjectContainer implements IEntity { - private _viewProjection; - private _viewProjectionDirty; - private _projection; - private _frustumPlanes; - private _frustumPlanesDirty; - private _onProjectionMatrixChangedDelegate; - constructor(projection?: IProjection); - pCreateDefaultBoundingVolume(): BoundingVolumeBase; - /** - * @protected - */ - pCreateEntityPartitionNode(): EntityNode; - assetType: string; - private onProjectionMatrixChanged(event); - frustumPlanes: Plane3D[]; - private updateFrustum(); +declare module "awayjs-display/lib/base/LoaderInfo" { + import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); + import ByteArray = require("awayjs-core/lib/utils/ByteArray"); + import Loader = require("awayjs-display/lib/containers/Loader"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + /** + * The LoaderInfo class provides information about a loaded SWF file or a + * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for + * any display object. The information provided includes load progress, the + * URLs of the loader and loaded content, the number of bytes total for the + * media, and the nominal height and width of the media. + * + *

You can access LoaderInfo objects in two ways:

+ * + * + * + *

The contentLoaderInfo property of a Loader object provides + * information about the content that the Loader object is loading, whereas + * the loaderInfo property of a DisplayObject provides + * information about the root SWF file for that display object.

+ * + *

When you use a Loader object to load a display object(such as a SWF + * file or a bitmap), the loaderInfo property of the display + * object is the same as the contentLoaderInfo property of the + * Loader object(DisplayObject.loaderInfo = + * Loader.contentLoaderInfo). Because the instance of the main class of + * the SWF file has no Loader object, the loaderInfo property is + * the only way to access the LoaderInfo for the instance of the main class of + * the SWF file.

+ * + *

The following diagram shows the different uses of the LoaderInfo + * object - for the instance of the main class of the SWF file, for the + * contentLoaderInfo property of a Loader object, and for the + * loaderInfo property of a loaded object:

+ * + *

When a loading operation is not complete, some properties of the + * contentLoaderInfo property of a Loader object are not + * available. You can obtain some properties, such as + * bytesLoaded, bytesTotal, url, + * loaderURL, and applicationDomain. When the + * loaderInfo object dispatches the init event, you + * can access all properties of the loaderInfo object and the + * loaded image or SWF file.

+ * + *

Note: All properties of LoaderInfo objects are read-only.

+ * + *

The EventDispatcher.dispatchEvent() method is not + * applicable to LoaderInfo objects. If you call dispatchEvent() + * on a LoaderInfo object, an IllegalOperationError exception is thrown.

+ * + * @event complete Dispatched when data has loaded successfully. In other + * words, it is dispatched when all the content has been + * downloaded and the loading has finished. The + * complete event is always dispatched after + * the init event. The init event + * is dispatched when the object is ready to access, though + * the content may still be downloading. + * @event httpStatus Dispatched when a network request is made over HTTP and + * an HTTP status code can be detected. + * @event init Dispatched when the properties and methods of a loaded + * SWF file are accessible and ready for use. The content, + * however, can still be downloading. A LoaderInfo object + * dispatches the init event when the following + * conditions exist: + * + * + *

For example, an Event.INIT is dispatched + * when the first frame of a movie or animation is loaded. + * The movie is then accessible and can be added to the + * display list. The complete movie, however, can take + * longer to download. The Event.COMPLETE is + * only dispatched once the full movie is loaded.

+ * + *

The init event always precedes the + * complete event.

+ * @event ioError Dispatched when an input or output error occurs that + * causes a load operation to fail. + * @event open Dispatched when a load operation starts. + * @event progress Dispatched when data is received as the download + * operation progresses. + * @event unload Dispatched by a LoaderInfo object whenever a loaded + * object is removed by using the unload() + * method of the Loader object, or when a second load is + * performed by the same Loader object and the original + * content is removed prior to the load beginning. + */ + class LoaderInfo extends EventDispatcher { + private _bytes; + private _bytesLoaded; + private _bytesTotal; + private _content; + private _contentType; + private _loader; + private _url; /** - * @protected + * The bytes associated with a LoaderInfo object. + * + * @throws SecurityError If the object accessing this API is prevented from + * accessing the loaded object due to security + * restrictions. This situation can occur, for + * instance, when a Loader object attempts to access + * the contentLoaderInfo.content property + * and it is not granted security permission to access + * the loaded content. + * + *

For more information related to security, see the + * Flash Player Developer Center Topic: Security.

*/ - pInvalidateSceneTransform(): void; + bytes: ByteArray; /** - * @protected + * The number of bytes that are loaded for the media. When this number equals + * the value of bytesTotal, all of the bytes are loaded. */ - pUpdateBounds(): void; + bytesLoaded: number; /** + * The number of compressed bytes in the entire media file. * + *

Before the first progress event is dispatched by this + * LoaderInfo object's corresponding Loader object, bytesTotal + * is 0. After the first progress event from the Loader object, + * bytesTotal reflects the actual number of bytes to be + * downloaded.

*/ - projection: IProjection; + bytesTotal: number; /** + * The loaded object associated with this LoaderInfo object. + * + * @throws SecurityError If the object accessing this API is prevented from + * accessing the loaded object due to security + * restrictions. This situation can occur, for + * instance, when a Loader object attempts to access + * the contentLoaderInfo.content property + * and it is not granted security permission to access + * the loaded content. * + *

For more information related to security, see the + * Flash Player Developer Center Topic: Security.

*/ - viewProjection: Matrix3D; + content: DisplayObject; /** - * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space. - * - * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right. - * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @return The ray from the camera to the scene space position of the given screen coordinates. + * The MIME type of the loaded file. The value is null if not + * enough of the file has loaded in order to determine the type. The + * following list gives the possible values: + * */ - getRay(nX: number, nY: number, sZ: number): Vector3D; + contentType: string; /** - * Calculates the normalised position in screen space of the given scene position. + * The Loader object associated with this LoaderInfo object. If this + * LoaderInfo object is the loaderInfo property of the instance + * of the main class of the SWF file, no Loader object is associated. * - * @param point3d the position vector of the scene coordinates to be projected. - * @return The normalised screen position of the given scene coordinates. + * @throws SecurityError If the object accessing this API is prevented from + * accessing the Loader object because of security + * restrictions. This can occur, for instance, when a + * loaded SWF file attempts to access its + * loaderInfo.loader property and it is + * not granted security permission to access the + * loading SWF file. + * + *

For more information related to security, see the + * Flash Player Developer Center Topic: Security.

*/ - project(point3d: Vector3D): Vector3D; + loader: Loader; /** - * Calculates the scene position of the given normalized coordinates in screen space. + * The URL of the media being loaded. * - * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property. - * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property. - * @param sZ The z coordinate in screen space, representing the distance into the screen. - * @return The scene position of the given screen coordinates. + *

Before the first progress event is dispatched by this + * LoaderInfo object's corresponding Loader object, the value of the + * url property might reflect only the initial URL specified in + * the call to the load() method of the Loader object. After the + * first progress event, the url property reflects + * the media's final URL, after any redirects and relative URLs are + * resolved.

+ * + *

In some cases, the value of the url property is truncated; + * see the isURLInaccessible property for details.

*/ - unproject(nX: number, nY: number, sZ: number): Vector3D; - _iCollectRenderables(renderer: IRenderer): void; - _iCollectRenderable(renderer: IRenderer): void; - } - export = Camera; - -} -declare module "awayjs-display/lib/events/LightEvent" { - import Event = require("awayjs-core/lib/events/Event"); - class LightEvent extends Event { - static CASTS_SHADOW_CHANGE: string; - constructor(type: string); - clone(): Event; - } - export = LightEvent; - -} -declare module "awayjs-display/lib/base/LightBase" { - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - import ShadowMapperBase = require("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase"); - class LightBase extends DisplayObjectContainer { - private _color; - private _colorR; - private _colorG; - private _colorB; - private _ambientColor; - private _ambient; - _iAmbientR: number; - _iAmbientG: number; - _iAmbientB: number; - private _specular; - _iSpecularR: number; - _iSpecularG: number; - _iSpecularB: number; - private _diffuse; - _iDiffuseR: number; - _iDiffuseG: number; - _iDiffuseB: number; - private _castsShadows; - private _shadowMapper; - constructor(); - castsShadows: boolean; - pCreateShadowMapper(): ShadowMapperBase; - specular: number; - diffuse: number; - color: number; - ambient: number; - ambientColor: number; - private updateAmbient(); - iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; - assetType: string; - private updateSpecular(); - private updateDiffuse(); - shadowMapper: ShadowMapperBase; + url: string; } - export = LightBase; + export = LoaderInfo; } -declare module "awayjs-display/lib/partition/DirectionalLightNode" { - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.partition.DirectionalLightNode - */ - class DirectionalLightNode extends EntityNode { - private _directionalLight; +declare module "awayjs-display/lib/base/OrientationMode" { + class OrientationMode { /** * - * @param directionalLight */ - constructor(directionalLight: IEntity); + static DEFAULT: string; /** - * @inheritDoc + * */ - acceptTraverser(traverser: ICollector): void; + static CAMERA_PLANE: string; /** * - * @returns {boolean} */ - isCastingShadow(): boolean; + static CAMERA_POSITION: string; } - export = DirectionalLightNode; + export = OrientationMode; } -declare module "awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper" { - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import FreeMatrixProjection = require("awayjs-core/lib/projections/FreeMatrixProjection"); - import Scene = require("awayjs-display/lib/containers/Scene"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import ShadowMapperBase = require("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase"); - import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase"); - class DirectionalShadowMapper extends ShadowMapperBase { - _pOverallDepthCamera: Camera; - _pLocalFrustum: number[]; - _pLightOffset: number; - _pMatrix: Matrix3D; - _pOverallDepthProjection: FreeMatrixProjection; - _pSnap: number; - _pCullPlanes: Plane3D[]; - _pMinZ: number; - _pMaxZ: number; - constructor(); - snap: number; - lightOffset: number; - iDepthProjection: Matrix3D; - depth: number; - pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void; - pUpdateCullPlanes(viewCamera: Camera): void; - pUpdateDepthProjection(viewCamera: Camera): void; - pUpdateProjectionFromFrustumCorners(viewCamera: Camera, corners: number[], matrix: Matrix3D): void; +declare module "awayjs-display/lib/base/IBitmapDrawable" { + /** + * The IBitmapDrawable interface is implemented by objects that can be passed as the + * source parameter of the draw() method of the BitmapData class. These + * objects are of type BitmapData or DisplayObject. + * + * @see away.base.BitmapData#draw() + * @see away.base.BitmapData + * @see away.base.DisplayObject + */ + interface IBitmapDrawable { } - export = DirectionalShadowMapper; + export = IBitmapDrawable; } -declare module "awayjs-display/lib/entities/DirectionalLight" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import LightBase = require("awayjs-display/lib/base/LightBase"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - import DirectionalShadowMapper = require("awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper"); - class DirectionalLight extends LightBase implements IEntity { - private _direction; - private _tmpLookAt; - private _sceneDirection; - private _projAABBPoints; - constructor(xDir?: number, yDir?: number, zDir?: number); - sceneDirection: Vector3D; - direction: Vector3D; - /** - * - * @returns {away.bounds.NullBounds} - */ - pCreateDefaultBoundingVolume(): BoundingVolumeBase; - /** - * - */ - pUpdateBounds(): void; - pUpdateSceneTransform(): void; - pCreateShadowMapper(): DirectionalShadowMapper; - /** - * @protected - */ - pCreateEntityPartitionNode(): EntityNode; - iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D; - _iCollectRenderables(renderer: IRenderer): void; +declare module "awayjs-display/lib/events/DisplayObjectEvent" { + import Event = require("awayjs-core/lib/events/Event"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + class DisplayObjectEvent extends Event { + static VISIBLITY_UPDATED: string; + static SCENETRANSFORM_CHANGED: string; + static SCENE_CHANGED: string; + static POSITION_CHANGED: string; + static ROTATION_CHANGED: string; + static SCALE_CHANGED: string; + object: DisplayObject; + constructor(type: string, object: DisplayObject); } - export = DirectionalLight; + export = DisplayObjectEvent; } -declare module "awayjs-display/lib/traverse/ICollector" { - import Scene = require("awayjs-display/lib/containers/Scene"); - import NodeBase = require("awayjs-display/lib/partition/NodeBase"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); +declare module "awayjs-display/lib/prefabs/PrefabBase" { + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); /** - * @class away.traverse.ICollector + * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating */ - interface ICollector { + class PrefabBase extends NamedAssetBase { + _pObjects: DisplayObject[]; /** - * - */ - camera: Camera; - /** - * - */ - scene: Scene; - /** - * - */ - numEntities: number; - /** - * - */ - numInteractiveEntities: number; - /** - * - */ - clear(): any; - /** - * - */ - entityHead: any; - /** - * - * @param node - */ - enterNode(node: NodeBase): boolean; - /** - * - * @param entity - */ - applyDirectionalLight(entity: IEntity): any; - /** - * - * @param entity - */ - applyEntity(entity: IEntity): any; - /** - * - * @param entity - */ - applyLightProbe(entity: IEntity): any; - /** - * - * @param entity - */ - applyPointLight(entity: IEntity): any; - /** - * - * @param entity - */ - applySkybox(entity: IEntity): any; - } - export = ICollector; - -} -declare module "awayjs-display/lib/partition/NodeBase" { - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.partition.NodeBase - */ - class NodeBase { - private _boundsChildrenVisible; - private _explicitBoundsVisible; - private _implicitBoundsVisible; - _iParent: NodeBase; - _pChildNodes: NodeBase[]; - _pNumChildNodes: number; - _pBoundsPrimitive: IEntity; - _iNumEntities: number; - _iCollectionMark: number; - /** - * - */ - boundsVisible: boolean; - boundsChildrenVisible: boolean; - /** - * - */ - parent: NodeBase; - /** - * - * @protected - */ - _pNumEntities: number; - /** - * + * Creates a new PrefabBase object. */ constructor(); /** - * - * @param planes - * @param numPlanes - * @returns {boolean} - * @internal - */ - isInFrustum(planes: Plane3D[], numPlanes: number): boolean; - /** - * - * @param rayPosition - * @param rayDirection - * @returns {boolean} - */ - isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; - /** - * - * @returns {boolean} - */ - isCastingShadow(): boolean; - /** - * - * @param entity - * @returns {away.partition.NodeBase} - */ - findPartitionForEntity(entity: IEntity): NodeBase; - /** - * - * @param traverser - */ - acceptTraverser(traverser: ICollector): void; - /** - * - * @protected - */ - _pCreateBoundsPrimitive(): IEntity; - /** - * - * @param node - * @internal - */ - iAddNode(node: NodeBase): void; - /** - * - * @param node - * @internal - */ - iRemoveNode(node: NodeBase): void; - private _iUpdateImplicitBoundsVisible(value); - /** - * @internal - */ - _iIsBoundsVisible(): boolean; - _iUpdateEntityBounds(): void; - } - export = NodeBase; - -} -declare module "awayjs-display/lib/partition/EntityNode" { - import Plane3D = require("awayjs-core/lib/geom/Plane3D"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import NodeBase = require("awayjs-display/lib/partition/NodeBase"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - import IEntity = require("awayjs-display/lib/entities/IEntity"); - /** - * @class away.partition.EntityNode - */ - class EntityNode extends NodeBase { - private _entity; - _iUpdateQueueNext: EntityNode; - constructor(entity: IEntity); - entity: IEntity; - removeFromParent(): void; - /** - * - * @returns {boolean} - */ - isCastingShadow(): boolean; - /** - * - * @param planes - * @param numPlanes - * @returns {boolean} - */ - isInFrustum(planes: Plane3D[], numPlanes: number): boolean; - /** - * @inheritDoc - */ - acceptTraverser(traverser: ICollector): void; - /** - * @inheritDoc - */ - isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; - /** - * - * @protected + * Returns a display object generated from this prefab */ - _pCreateBoundsPrimitive(): IEntity; - } - export = EntityNode; - -} -declare module "awayjs-display/lib/partition/NullNode" { - /** - * @class away.partition.NullNode - */ - class NullNode { - constructor(); - } - export = NullNode; - -} -declare module "awayjs-display/lib/partition/Partition" { - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - import NodeBase = require("awayjs-display/lib/partition/NodeBase"); - import ICollector = require("awayjs-display/lib/traverse/ICollector"); - /** - * @class away.partition.Partition - */ - class Partition { - _rootNode: NodeBase; - private _updatesMade; - private _updateQueue; - constructor(rootNode: NodeBase); - rootNode: NodeBase; - traverse(traverser: ICollector): void; - iMarkForUpdate(entity: DisplayObject): void; - iRemoveEntity(entity: DisplayObject): void; - private updateEntities(); + getNewObject(): DisplayObject; + _pCreateObject(): DisplayObject; + _iValidate(): void; } - export = Partition; + export = PrefabBase; } -declare module "awayjs-display/lib/containers/DisplayObjectContainer" { +declare module "awayjs-display/lib/base/DisplayObject" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); import Point = require("awayjs-core/lib/geom/Point"); - import IAsset = require("awayjs-core/lib/library/IAsset"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - import Partition = require("awayjs-display/lib/partition/Partition"); + import Rectangle = require("awayjs-core/lib/geom/Rectangle"); + import Vector3D = require("awayjs-core/lib/geom/Vector3D"); + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); import Scene = require("awayjs-display/lib/containers/Scene"); + import ControllerBase = require("awayjs-display/lib/controllers/ControllerBase"); + import BlendMode = require("awayjs-display/lib/base/BlendMode"); + import LoaderInfo = require("awayjs-display/lib/base/LoaderInfo"); + import IBitmapDrawable = require("awayjs-display/lib/base/IBitmapDrawable"); + import Transform = require("awayjs-display/lib/base/Transform"); + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import Partition = require("awayjs-display/lib/partition/Partition"); + import IPickingCollider = require("awayjs-display/lib/pick/IPickingCollider"); + import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import Camera = require("awayjs-display/lib/entities/Camera"); + import PrefabBase = require("awayjs-display/lib/prefabs/PrefabBase"); /** - * The DisplayObjectContainer class is the base class for all objects that can - * serve as display object containers on the display list. The display list - * manages all objects displayed in the Flash runtimes. Use the - * DisplayObjectContainer class to arrange the display objects in the display - * list. Each DisplayObjectContainer object has its own child list for - * organizing the z-order of the objects. The z-order is the front-to-back - * order that determines which object is drawn in front, which is behind, and - * so on. - * - *

DisplayObject is an abstract base class; therefore, you cannot call - * DisplayObject directly. Invoking new DisplayObject() throws an - * ArgumentError exception.

- * The DisplayObjectContainer class is an abstract base class for all objects - * that can contain child objects. It cannot be instantiated directly; calling - * the new DisplayObjectContainer() constructor throws an - * ArgumentError exception. + * The DisplayObject class is the base class for all objects that can be + * placed on the display list. The display list manages all objects displayed + * in flash. Use the DisplayObjectContainer class to arrange the + * display objects in the display list. DisplayObjectContainer objects can + * have child display objects, while other display objects, such as Shape and + * TextField objects, are "leaf" nodes that have only parents and siblings, no + * children. + * + *

The DisplayObject class supports basic functionality like the x + * and y position of an object, as well as more advanced properties of + * the object such as its transformation matrix.

+ * + *

DisplayObject is an abstract base class; therefore, you cannot call + * DisplayObject directly. Invoking new DisplayObject() throws an + * ArgumentError exception.

+ * + *

All display objects inherit from the DisplayObject class.

+ * + *

The DisplayObject class itself does not include any APIs for rendering + * content onscreen. For that reason, if you want create a custom subclass of + * the DisplayObject class, you will want to extend one of its subclasses that + * do have APIs for rendering content onscreen, such as the Shape, Sprite, + * Bitmap, SimpleButton, TextField, or MovieClip class.

+ * + *

The DisplayObject class contains several broadcast events. Normally, the + * target of any particular event is a specific DisplayObject instance. For + * example, the target of an added event is the specific + * DisplayObject instance that was added to the display list. Having a single + * target restricts the placement of event listeners to that target and in + * some cases the target's ancestors on the display list. With broadcast + * events, however, the target is not a specific DisplayObject instance, but + * rather all DisplayObject instances, including those that are not on the + * display list. This means that you can add a listener to any DisplayObject + * instance to listen for broadcast events. In addition to the broadcast + * events listed in the DisplayObject class's Events table, the DisplayObject + * class also inherits two broadcast events from the EventDispatcher class: + * activate and deactivate.

+ * + *

Some properties previously used in the ActionScript 1.0 and 2.0 + * MovieClip, TextField, and Button classes(such as _alpha, + * _height, _name, _width, + * _x, _y, and others) have equivalents in the + * ActionScript 3.0 DisplayObject class that are renamed so that they no + * longer begin with the underscore(_) character.

* *

For more information, see the "Display Programming" chapter of the * ActionScript 3.0 Developer's Guide.

+ * + * @event added Dispatched when a display object is added to the + * display list. The following methods trigger this + * event: + * DisplayObjectContainer.addChild(), + * DisplayObjectContainer.addChildAt(). + * @event addedToStage Dispatched when a display object is added to the on + * stage display list, either directly or through the + * addition of a sub tree in which the display object + * is contained. The following methods trigger this + * event: + * DisplayObjectContainer.addChild(), + * DisplayObjectContainer.addChildAt(). + * @event enterFrame [broadcast event] Dispatched when the playhead is + * entering a new frame. If the playhead is not + * moving, or if there is only one frame, this event + * is dispatched continuously in conjunction with the + * frame rate. This event is a broadcast event, which + * means that it is dispatched by all display objects + * with a listener registered for this event. + * @event exitFrame [broadcast event] Dispatched when the playhead is + * exiting the current frame. All frame scripts have + * been run. If the playhead is not moving, or if + * there is only one frame, this event is dispatched + * continuously in conjunction with the frame rate. + * This event is a broadcast event, which means that + * it is dispatched by all display objects with a + * listener registered for this event. + * @event frameConstructed [broadcast event] Dispatched after the constructors + * of frame display objects have run but before frame + * scripts have run. If the playhead is not moving, or + * if there is only one frame, this event is + * dispatched continuously in conjunction with the + * frame rate. This event is a broadcast event, which + * means that it is dispatched by all display objects + * with a listener registered for this event. + * @event removed Dispatched when a display object is about to be + * removed from the display list. Two methods of the + * DisplayObjectContainer class generate this event: + * removeChild() and + * removeChildAt(). + * + *

The following methods of a + * DisplayObjectContainer object also generate this + * event if an object must be removed to make room for + * the new object: addChild(), + * addChildAt(), and + * setChildIndex().

+ * @event removedFromStage Dispatched when a display object is about to be + * removed from the display list, either directly or + * through the removal of a sub tree in which the + * display object is contained. Two methods of the + * DisplayObjectContainer class generate this event: + * removeChild() and + * removeChildAt(). + * + *

The following methods of a + * DisplayObjectContainer object also generate this + * event if an object must be removed to make room for + * the new object: addChild(), + * addChildAt(), and + * setChildIndex().

+ * @event render [broadcast event] Dispatched when the display list + * is about to be updated and rendered. This event + * provides the last opportunity for objects listening + * for this event to make changes before the display + * list is rendered. You must call the + * invalidate() method of the Stage + * object each time you want a render + * event to be dispatched. Render events + * are dispatched to an object only if there is mutual + * trust between it and the object that called + * Stage.invalidate(). This event is a + * broadcast event, which means that it is dispatched + * by all display objects with a listener registered + * for this event. + * + *

Note: This event is not dispatched if the + * display is not rendering. This is the case when the + * content is either minimized or obscured.

*/ - class DisplayObjectContainer extends DisplayObject implements IAsset { - private _mouseChildren; - private _children; - _iIsRoot: boolean; + class DisplayObject extends NamedAssetBase implements IBitmapDrawable { + private _loaderInfo; + private _mouseX; + private _mouseY; + private _root; + private _bounds; + private _boundsVisible; + private _depth; + private _height; + private _width; + _pScene: Scene; + _pParent: DisplayObjectContainer; + _pSceneTransform: Matrix3D; + _pSceneTransformDirty: boolean; + _pIsEntity: boolean; + private _explicitPartition; + _pImplicitPartition: Partition; + private _partitionNode; + private _sceneTransformChanged; + private _scenechanged; + private _transform; + private _matrix3D; + private _matrix3DDirty; + private _inverseSceneTransform; + private _inverseSceneTransformDirty; + private _scenePosition; + private _scenePositionDirty; + private _explicitVisibility; + _pImplicitVisibility: boolean; + private _explicitMouseEnabled; + _pImplicitMouseEnabled: boolean; + private _listenToSceneTransformChanged; + private _listenToSceneChanged; + private _positionDirty; + private _rotationDirty; + private _scaleDirty; + private _positionChanged; + private _rotationChanged; + private _scaleChanged; + private _rotationX; + private _rotationY; + private _rotationZ; + private _eulers; + private _flipY; + private _listenToPositionChanged; + private _listenToRotationChanged; + private _listenToScaleChanged; + private _zOffset; + _pScaleX: number; + _pScaleY: number; + _pScaleZ: number; + private _x; + private _y; + private _z; + private _pivot; + private _orientationMatrix; + private _pivotZero; + private _pivotDirty; + private _pos; + private _rot; + private _sca; + private _transformComponents; + _pIgnoreTransform: boolean; + private _shaderPickingDetails; + _pPickingCollisionVO: PickingCollisionVO; + _pBounds: BoundingVolumeBase; + _pBoundsInvalid: boolean; + private _worldBounds; + private _worldBoundsInvalid; + _pPickingCollider: IPickingCollider; + _pRenderables: IRenderable[]; + _iSourcePrefab: PrefabBase; /** * */ - assetType: string; + alignmentMode: string; /** - * Determines whether or not the children of the object are mouse, or user - * input device, enabled. If an object is enabled, a user can interact with - * it by using a mouse or user input device. The default is - * true. + * Indicates the alpha transparency value of the object specified. Valid + * values are 0(fully transparent) to 1(fully opaque). The default value is + * 1. Display objects with alpha set to 0 are active, + * even though they are invisible. + */ + alpha: number; + /** + * A value from the BlendMode class that specifies which blend mode to use. A + * bitmap can be drawn internally in two ways. If you have a blend mode + * enabled or an external clipping mask, the bitmap is drawn by adding a + * bitmap-filled square shape to the vector render. If you attempt to set + * this property to an invalid value, Flash runtimes set the value to + * BlendMode.NORMAL. * - *

This property is useful when you create a button with an instance of - * the Sprite class(instead of using the SimpleButton class). When you use a - * Sprite instance to create a button, you can choose to decorate the button - * by using the addChild() method to add additional Sprite - * instances. This process can cause unexpected behavior with mouse events - * because the Sprite instances you add as children can become the target - * object of a mouse event when you expect the parent instance to be the - * target object. To ensure that the parent instance serves as the target - * objects for mouse events, you can set the mouseChildren - * property of the parent instance to false.

+ *

The blendMode property affects each pixel of the display + * object. Each pixel is composed of three constituent colors(red, green, + * and blue), and each constituent color has a value between 0x00 and 0xFF. + * Flash Player or Adobe AIR compares each constituent color of one pixel in + * the movie clip with the corresponding color of the pixel in the + * background. For example, if blendMode is set to + * BlendMode.LIGHTEN, Flash Player or Adobe AIR compares the red + * value of the display object with the red value of the background, and uses + * the lighter of the two as the value for the red component of the displayed + * color.

* - *

No event is dispatched by setting this property. You must use the - * addEventListener() method to create interactive - * functionality.

+ *

The following table describes the blendMode settings. The + * BlendMode class defines string values you can use. The illustrations in + * the table show blendMode values applied to a circular display + * object(2) superimposed on another display object(1).

*/ - mouseChildren: boolean; + blendMode: BlendMode; /** - * Returns the number of children of this object. + * */ - numChildren: number; + bounds: BoundingVolumeBase; /** - * Determines whether the children of the object are tab enabled. Enables or - * disables tabbing for the children of the object. The default is - * true. + * If set to true, NME will use the software renderer to cache + * an internal bitmap representation of the display object. For native targets, + * this is often much slower than the default hardware renderer. When you + * are using the Flash target, this caching may increase performance for display + * objects that contain complex vector content. * - *

Note: Do not use the tabChildren property with - * Flex. Instead, use the - * mx.core.UIComponent.hasFocusableChildren property.

+ *

All vector data for a display object that has a cached bitmap is drawn + * to the bitmap instead of the main display. If + * cacheAsBitmapMatrix is null or unsupported, the bitmap is + * then copied to the main display as unstretched, unrotated pixels snapped + * to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent + * object. If the bounds of the bitmap change, the bitmap is recreated + * instead of being stretched.

+ * + *

If cacheAsBitmapMatrix is non-null and supported, the + * object is drawn to the off-screen bitmap using that matrix and the + * stretched and/or rotated results of that rendering are used to draw the + * object to the main display.

+ * + *

No internal bitmap is created unless the cacheAsBitmap + * property is set to true.

+ * + *

After you set the cacheAsBitmap property to + * true, the rendering does not change, however the display + * object performs pixel snapping automatically. The animation speed can be + * significantly faster depending on the complexity of the vector content. + *

+ * + *

The cacheAsBitmap property is automatically set to + * true whenever you apply a filter to a display object(when + * its filter array is not empty), and if a display object has a + * filter applied to it, cacheAsBitmap is reported as + * true for that display object, even if you set the property to + * false. If you clear all filters for a display object, the + * cacheAsBitmap setting changes to what it was last set to.

+ * + *

A display object does not use a bitmap even if the + * cacheAsBitmap property is set to true and + * instead renders from vector data in the following cases:

* - * @throws IllegalOperationError Calling this property of the Stage object - * throws an exception. The Stage object does - * not implement this property. - */ - tabChildren: boolean; - /** - * Calling the new DisplayObjectContainer() constructor throws - * an ArgumentError exception. You can, however, call - * constructors for the following subclasses of DisplayObjectContainer: * + * + *

The cacheAsBitmap property is best used with movie clips + * that have mostly static content and that do not scale and rotate + * frequently. With such movie clips, cacheAsBitmap can lead to + * performance increases when the movie clip is translated(when its x + * and y position is changed).

*/ - constructor(); + cacheAsBitmap: boolean; /** - * Adds a child DisplayObject instance to this DisplayObjectContainer - * instance. The child is added to the front(top) of all other children in - * this DisplayObjectContainer instance.(To add a child to a specific index - * position, use the addChildAt() method.) - * - *

If you add a child object that already has a different display object - * container as a parent, the object is removed from the child list of the - * other display object container.

* - *

Note: The command stage.addChild() can cause - * problems with a published SWF file, including security problems and - * conflicts with other loaded SWF files. There is only one Stage within a - * Flash runtime instance, no matter how many SWF files you load into the - * runtime. So, generally, objects should not be added to the Stage, - * directly, at all. The only object the Stage should contain is the root - * object. Create a DisplayObjectContainer to contain all of the items on the - * display list. Then, if necessary, add that DisplayObjectContainer instance - * to the Stage.

+ */ + castsShadows: boolean; + /** + * Indicates the depth of the display object, in pixels. The depth is + * calculated based on the bounds of the content of the display object. When + * you set the depth property, the scaleZ property + * is adjusted accordingly, as shown in the following code: * - * @param child The DisplayObject instance to add as a child of this - * DisplayObjectContainer instance. - * @return The DisplayObject instance that you pass in the child - * parameter. - * @throws ArgumentError Throws if the child is the same as the parent. Also - * throws if the caller is a child(or grandchild etc.) - * of the child being added. - * @event added Dispatched when a display object is added to the display - * list. + *

Except for TextField and Video objects, a display object with no + * content (such as an empty sprite) has a depth of 0, even if you try to + * set depth to a different value.

*/ - addChild(child: DisplayObject): DisplayObject; + depth: number; /** - * Adds a child DisplayObject instance to this DisplayObjectContainer - * instance. The child is added at the index position specified. An index of - * 0 represents the back(bottom) of the display list for this - * DisplayObjectContainer object. + * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis. + */ + eulers: Vector3D; + /** + * An object that can contain any extra data. + */ + extra: Object; + /** + * An indexed array that contains each filter object currently associated + * with the display object. The flash.filters package contains several + * classes that define specific filters you can use. * - *

For example, the following example shows three display objects, labeled - * a, b, and c, at index positions 0, 2, and 1, respectively:

+ *

Filters can be applied in Flash Professional at design time, or at run + * time by using ActionScript code. To apply a filter by using ActionScript, + * you must make a temporary copy of the entire filters array, + * modify the temporary array, then assign the value of the temporary array + * back to the filters array. You cannot directly add a new + * filter object to the filters array.

* - *

If you add a child object that already has a different display object - * container as a parent, the object is removed from the child list of the - * other display object container.

+ *

To add a filter by using ActionScript, perform the following steps + * (assume that the target display object is named + * myDisplayObject):

* - * @param child The DisplayObject instance to add as a child of this - * DisplayObjectContainer instance. - * @param index The index position to which the child is added. If you - * specify a currently occupied index position, the child object - * that exists at that position and all higher positions are - * moved up one position in the child list. - * @return The DisplayObject instance that you pass in the child - * parameter. - * @throws ArgumentError Throws if the child is the same as the parent. Also - * throws if the caller is a child(or grandchild etc.) - * of the child being added. - * @throws RangeError Throws if the index position does not exist in the - * child list. - * @event added Dispatched when a display object is added to the display - * list. + *
    + *
  1. Create a new filter object by using the constructor method of your + * chosen filter class.
  2. + *
  3. Assign the value of the myDisplayObject.filters array + * to a temporary array, such as one named myFilters.
  4. + *
  5. Add the new filter object to the myFilters temporary + * array.
  6. + *
  7. Assign the value of the temporary array to the + * myDisplayObject.filters array.
  8. + *
+ * + *

If the filters array is undefined, you do not need to use + * a temporary array. Instead, you can directly assign an array literal that + * contains one or more filter objects that you create. The first example in + * the Examples section adds a drop shadow filter by using code that handles + * both defined and undefined filters arrays.

+ * + *

To modify an existing filter object, you must use the technique of + * modifying a copy of the filters array:

+ * + *
    + *
  1. Assign the value of the filters array to a temporary + * array, such as one named myFilters.
  2. + *
  3. Modify the property by using the temporary array, + * myFilters. For example, to set the quality property of the + * first filter in the array, you could use the following code: + * myFilters[0].quality = 1;
  4. + *
  5. Assign the value of the temporary array to the filters + * array.
  6. + *
+ * + *

At load time, if a display object has an associated filter, it is + * marked to cache itself as a transparent bitmap. From this point forward, + * as long as the display object has a valid filter list, the player caches + * the display object as a bitmap. This source bitmap is used as a source + * image for the filter effects. Each display object usually has two bitmaps: + * one with the original unfiltered source display object and another for the + * final image after filtering. The final image is used when rendering. As + * long as the display object does not change, the final image does not need + * updating.

+ * + *

The flash.filters package includes classes for filters. For example, to + * create a DropShadow filter, you would write:

+ * + * @throws ArgumentError When filters includes a ShaderFilter + * and the shader output type is not compatible with + * this operation(the shader must specify a + * pixel4 output). + * @throws ArgumentError When filters includes a ShaderFilter + * and the shader doesn't specify any image input or + * the first input is not an image4 input. + * @throws ArgumentError When filters includes a ShaderFilter + * and the shader specifies an image input that isn't + * provided. + * @throws ArgumentError When filters includes a ShaderFilter, a + * ByteArray or Vector. instance as a shader + * input, and the width and + * height properties aren't specified for + * the ShaderInput object, or the specified values + * don't match the amount of data in the input data. + * See the ShaderInput.input property for + * more information. */ - addChildAt(child: DisplayObject, index: number): DisplayObject; - addChildren(...childarray: DisplayObject[]): void; /** + * Indicates the height of the display object, in pixels. The height is + * calculated based on the bounds of the content of the display object. When + * you set the height property, the scaleY property + * is adjusted accordingly, as shown in the following code: * + *

Except for TextField and Video objects, a display object with no + * content (such as an empty sprite) has a height of 0, even if you try to + * set height to a different value.

*/ - clone(): DisplayObject; + height: number; /** - * Determines whether the specified display object is a child of the - * DisplayObjectContainer instance or the instance itself. The search - * includes the entire display list including this DisplayObjectContainer - * instance. Grandchildren, great-grandchildren, and so on each return - * true. + * Indicates the instance container index of the DisplayObject. The object can be + * identified in the child list of its parent display object container by + * calling the getChildByIndex() method of the display object + * container. * - * @param child The child object to test. - * @return true if the child object is a child of - * the DisplayObjectContainer or the container itself; otherwise - * false. + *

If the DisplayObject has no parent container, index defaults to 0.

*/ - contains(child: DisplayObject): boolean; + index: number; /** * */ - disposeWithChildren(): void; + inverseSceneTransform: Matrix3D; /** - * Returns the child display object instance that exists at the specified - * index. * - * @param index The index position of the child object. - * @return The child display object at the specified index position. - * @throws RangeError Throws if the index does not exist in the child - * list. */ - getChildAt(index: number): DisplayObject; + ignoreTransform: boolean; /** - * Returns the child display object that exists with the specified name. If - * more that one child display object has the specified name, the method - * returns the first object in the child list. * - *

The getChildAt() method is faster than the - * getChildByName() method. The getChildAt() method - * accesses a child from a cached array, whereas the - * getChildByName() method has to traverse a linked list to - * access a child.

- * - * @param name The name of the child to return. - * @return The child display object with the specified name. */ - getChildByName(name: string): DisplayObject; + isEntity: boolean; /** - * Returns the index position of a child DisplayObject instance. + * Returns a LoaderInfo object containing information about loading the file + * to which this display object belongs. The loaderInfo property + * is defined only for the root display object of a SWF file or for a loaded + * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the + * loaderInfo object associated with the SWF file that contains + * a display object named myDisplayObject, use + * myDisplayObject.root.loaderInfo. * - * @param child The DisplayObject instance to identify. - * @return The index position of the child display object to identify. - * @throws ArgumentError Throws if the child parameter is not a child of this - * object. + *

A large SWF file can monitor its download by calling + * this.root.loaderInfo.addEventListener(Event.COMPLETE, + * func).

*/ - getChildIndex(child: DisplayObject): number; + loaderInfo: LoaderInfo; /** - * Returns an array of objects that lie under the specified point and are - * children(or grandchildren, and so on) of this DisplayObjectContainer - * instance. Any child objects that are inaccessible for security reasons are - * omitted from the returned array. To determine whether this security - * restriction affects the returned array, call the - * areInaccessibleObjectsUnderPoint() method. + * The calling display object is masked by the specified mask + * object. To ensure that masking works when the Stage is scaled, the + * mask display object must be in an active part of the display + * list. The mask object itself is not drawn. Set + * mask to null to remove the mask. * - *

The point parameter is in the coordinate space of the - * Stage, which may differ from the coordinate space of the display object - * container(unless the display object container is the Stage). You can use - * the globalToLocal() and the localToGlobal() - * methods to convert points between these coordinate spaces.

+ *

To be able to scale a mask object, it must be on the display list. To + * be able to drag a mask Sprite object(by calling its + * startDrag() method), it must be on the display list. To call + * the startDrag() method for a mask sprite based on a + * mouseDown event being dispatched by the sprite, set the + * sprite's buttonMode property to true.

* - * @param point The point under which to look. - * @return An array of objects that lie under the specified point and are - * children(or grandchildren, and so on) of this - * DisplayObjectContainer instance. + *

When display objects are cached by setting the + * cacheAsBitmap property to true an the + * cacheAsBitmapMatrix property to a Matrix object, both the + * mask and the display object being masked must be part of the same cached + * bitmap. Thus, if the display object is cached, then the mask must be a + * child of the display object. If an ancestor of the display object on the + * display list is cached, then the mask must be a child of that ancestor or + * one of its descendents. If more than one ancestor of the masked object is + * cached, then the mask must be a descendent of the cached container closest + * to the masked object in the display list.

+ * + *

Note: A single mask object cannot be used to mask + * more than one calling display object. When the mask is + * assigned to a second display object, it is removed as the mask of the + * first object, and that object's mask property becomes + * null.

*/ - getObjectsUnderPoint(point: Point): DisplayObject[]; + mask: DisplayObject; /** - * Removes the specified child DisplayObject instance from the - * child list of the DisplayObjectContainer instance. The parent - * property of the removed child is set to null , and the object - * is garbage collected if no other references to the child exist. The index - * positions of any display objects above the child in the - * DisplayObjectContainer are decreased by 1. - * - *

The garbage collector reallocates unused memory space. When a variable - * or object is no longer actively referenced or stored somewhere, the - * garbage collector sweeps through and wipes out the memory space it used to - * occupy if no other references to it exist.

+ * Specifies whether this object receives mouse, or other user input, + * messages. The default value is true, which means that by + * default any InteractiveObject instance that is on the display list + * receives mouse events or other user input events. If + * mouseEnabled is set to false, the instance does + * not receive any mouse events(or other user input events like keyboard + * events). Any children of this instance on the display list are not + * affected. To change the mouseEnabled behavior for all + * children of an object on the display list, use + * flash.display.DisplayObjectContainer.mouseChildren. * - * @param child The DisplayObject instance to remove. - * @return The DisplayObject instance that you pass in the child - * parameter. - * @throws ArgumentError Throws if the child parameter is not a child of this - * object. + *

No event is dispatched by setting this property. You must use the + * addEventListener() method to create interactive + * functionality.

*/ - removeChild(child: DisplayObject): DisplayObject; + mouseEnabled: boolean; /** - * Removes a child DisplayObject from the specified index - * position in the child list of the DisplayObjectContainer. The - * parent property of the removed child is set to - * null, and the object is garbage collected if no other - * references to the child exist. The index positions of any display objects - * above the child in the DisplayObjectContainer are decreased by 1. - * - *

The garbage collector reallocates unused memory space. When a variable - * or object is no longer actively referenced or stored somewhere, the - * garbage collector sweeps through and wipes out the memory space it used to - * occupy if no other references to it exist.

+ * Indicates the x coordinate of the mouse or user input device position, in + * pixels. * - * @param index The child index of the DisplayObject to remove. - * @return The DisplayObject instance that was removed. - * @throws RangeError Throws if the index does not exist in the child - * list. - * @throws SecurityError This child display object belongs to a sandbox to - * which the calling object does not have access. You - * can avoid this situation by having the child movie - * call the Security.allowDomain() method. + *

Note: For a DisplayObject that has been rotated, the returned x + * coordinate will reflect the non-rotated object.

*/ - removeChildAt(index: number): DisplayObject; + mouseX: number; /** - * Removes all child DisplayObject instances from the child list - * of the DisplayObjectContainer instance. The parent property - * of the removed children is set to null, and the objects are - * garbage collected if no other references to the children exist. + * Indicates the y coordinate of the mouse or user input device position, in + * pixels. * - * The garbage collector reallocates unused memory space. When a variable or - * object is no longer actively referenced or stored somewhere, the garbage - * collector sweeps through and wipes out the memory space it used to occupy - * if no other references to it exist. + *

Note: For a DisplayObject that has been rotated, the returned y + * coordinate will reflect the non-rotated object.

+ */ + mouseY: number; + /** + * Indicates the instance name of the DisplayObject. The object can be + * identified in the child list of its parent display object container by + * calling the getChildByName() method of the display object + * container. * - * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError. - * @param endIndex The ending position. A value smaller than 0 throws a RangeError. - * @throws RangeError Throws if the beginIndex or endIndex positions do - * not exist in the child list. + * @throws IllegalOperationError If you are attempting to set this property + * on an object that was placed on the timeline + * in the Flash authoring tool. */ - removeChildren(beginIndex?: number, endIndex?: number): void; + name: string; /** - * Changes the position of an existing child in the display object container. - * This affects the layering of child objects. For example, the following - * example shows three display objects, labeled a, b, and c, at index - * positions 0, 1, and 2, respectively: * - *

When you use the setChildIndex() method and specify an - * index position that is already occupied, the only positions that change - * are those in between the display object's former and new position. All - * others will stay the same. If a child is moved to an index LOWER than its - * current index, all children in between will INCREASE by 1 for their index - * reference. If a child is moved to an index HIGHER than its current index, - * all children in between will DECREASE by 1 for their index reference. For - * example, if the display object container in the previous example is named - * container, you can swap the position of the display objects - * labeled a and b by calling the following code:

+ */ + orientationMode: string; + /** + * Indicates the DisplayObjectContainer object that contains this display + * object. Use the parent property to specify a relative path to + * display objects that are above the current display object in the display + * list hierarchy. * - *

This code results in the following arrangement of objects:

+ *

You can use parent to move up multiple levels in the + * display list as in the following:

* - * @param child The child DisplayObject instance for which you want to change - * the index number. - * @param index The resulting index number for the child display - * object. - * @throws ArgumentError Throws if the child parameter is not a child of this - * object. - * @throws RangeError Throws if the index does not exist in the child - * list. + * @throws SecurityError The parent display object belongs to a security + * sandbox to which you do not have access. You can + * avoid this situation by having the parent movie call + * the Security.allowDomain() method. */ - setChildIndex(child: DisplayObject, index: number): void; + parent: DisplayObjectContainer; /** - * Swaps the z-order (front-to-back order) of the two specified child - * objects. All other child objects in the display object container remain in - * the same index positions. * - * @param child1 The first child object. - * @param child2 The second child object. - * @throws ArgumentError Throws if either child parameter is not a child of - * this object. */ - swapChildren(child1: DisplayObject, child2: DisplayObject): void; + partition: Partition; /** - * Swaps the z-order(front-to-back order) of the child objects at the two - * specified index positions in the child list. All other child objects in - * the display object container remain in the same index positions. * - * @param index1 The index position of the first child object. - * @param index2 The index position of the second child object. - * @throws RangeError If either index does not exist in the child list. */ - swapChildrenAt(index1: number, index2: number): void; + partitionNode: EntityNode; /** - * @protected + * */ - pInvalidateSceneTransform(): void; + pickingCollider: IPickingCollider; /** - * @protected + * Defines the local point around which the object rotates. */ - _pUpdateScene(value: Scene): void; + pivot: Vector3D; /** - * @protected + * For a display object in a loaded SWF file, the root property + * is the top-most display object in the portion of the display list's tree + * structure represented by that SWF file. For a Bitmap object representing a + * loaded image file, the root property is the Bitmap object + * itself. For the instance of the main class of the first SWF file loaded, + * the root property is the display object itself. The + * root property of the Stage object is the Stage object itself. + * The root property is set to null for any display + * object that has not been added to the display list, unless it has been + * added to a display object container that is off the display list but that + * is a child of the top-most display object in a loaded SWF file. + * + *

For example, if you create a new Sprite object by calling the + * Sprite() constructor method, its root property + * is null until you add it to the display list(or to a display + * object container that is off the display list but that is a child of the + * top-most display object in a SWF file).

+ * + *

For a loaded SWF file, even though the Loader object used to load the + * file may not be on the display list, the top-most display object in the + * SWF file has its root property set to itself. The Loader + * object does not have its root property set until it is added + * as a child of a display object for which the root property is + * set.

*/ - _pUpdateImplicitMouseEnabled(value: boolean): void; + root: DisplayObjectContainer; /** - * @protected + * Indicates the rotation of the DisplayObject instance, in degrees, from its + * original orientation. Values from 0 to 180 represent clockwise rotation; + * values from 0 to -180 represent counterclockwise rotation. Values outside + * this range are added to or subtracted from 360 to obtain a value within + * the range. For example, the statement my_video.rotation = 450 + * is the same as my_video.rotation = 90. */ - _pUpdateImplicitVisibility(value: boolean): void; + rotation: number; /** - * @protected - */ - _pUpdateImplicitPartition(value: Partition): void; - /** - * @private - * - * @param child - */ - private removeChildInternal(child); - } - export = DisplayObjectContainer; - -} -declare module "awayjs-display/lib/containers/Loader" { - import AssetLoaderContext = require("awayjs-core/lib/library/AssetLoaderContext"); - import AssetLoaderToken = require("awayjs-core/lib/library/AssetLoaderToken"); - import URLRequest = require("awayjs-core/lib/net/URLRequest"); - import ParserBase = require("awayjs-core/lib/parsers/ParserBase"); - import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - import LoaderInfo = require("awayjs-display/lib/base/LoaderInfo"); - /** - * The Loader class is used to load SWF files or image(JPG, PNG, or GIF) - * files. Use the load() method to initiate loading. The loaded - * display object is added as a child of the Loader object. - * - *

Use the URLLoader class to load text or binary data.

- * - *

The Loader class overrides the following methods that it inherits, - * because a Loader object can only have one child display object - the - * display object that it loads. Calling the following methods throws an - * exception: addChild(), addChildAt(), - * removeChild(), removeChildAt(), and - * setChildIndex(). To remove a loaded display object, you must - * remove the Loader object from its parent DisplayObjectContainer - * child array.

- * - *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes - * are not used in ActionScript 3.0. The Loader and URLLoader classes replace - * them.

- * - *

When you use the Loader class, consider the Flash Player and Adobe AIR - * security model:

- * - * - * - *

However, in AIR, content in the application security - * sandbox(content installed with the AIR application) are not restricted by - * these security limitations.

- * - *

For more information related to security, see the Flash Player Developer - * Center Topic: Security.

- * - *

When loading a SWF file from an untrusted source(such as a domain other - * than that of the Loader object's root SWF file), you may want to define a - * mask for the Loader object, to prevent the loaded content(which is a child - * of the Loader object) from drawing to portions of the Stage outside of that - * mask, as shown in the following code:

- */ - class Loader extends DisplayObjectContainer { - /** - * Dispatched when any asset finishes parsing. Also see specific events for each - * individual asset type (meshes, materials et c.) - * - * @eventType AssetEvent + * Indicates the x-axis rotation of the DisplayObject instance, in degrees, + * from its original orientation relative to the 3D parent container. Values + * from 0 to 180 represent clockwise rotation; values from 0 to -180 + * represent counterclockwise rotation. Values outside this range are added + * to or subtracted from 360 to obtain a value within the range. */ + rotationX: number; /** - * Dispatched when a full resource (including dependencies) finishes loading. - * - * @eventType LoaderEvent + * Indicates the y-axis rotation of the DisplayObject instance, in degrees, + * from its original orientation relative to the 3D parent container. Values + * from 0 to 180 represent clockwise rotation; values from 0 to -180 + * represent counterclockwise rotation. Values outside this range are added + * to or subtracted from 360 to obtain a value within the range. */ - private _loadingSessions; - private _useAssetLib; - private _assetLibId; - private _onResourceCompleteDelegate; - private _onAssetCompleteDelegate; - private _content; - private _contentLoaderInfo; + rotationY: number; /** - * Contains the root display object of the SWF file or image(JPG, PNG, or - * GIF) file that was loaded by using the load() or - * loadBytes() methods. - * - * @throws SecurityError The loaded SWF file or image file belongs to a - * security sandbox to which you do not have access. - * For a loaded SWF file, you can avoid this situation - * by having the file call the - * Security.allowDomain() method or by - * having the loading file specify a - * loaderContext parameter with its - * securityDomain property set to - * SecurityDomain.currentDomain when you - * call the load() or - * loadBytes() method. + * Indicates the z-axis rotation of the DisplayObject instance, in degrees, + * from its original orientation relative to the 3D parent container. Values + * from 0 to 180 represent clockwise rotation; values from 0 to -180 + * represent counterclockwise rotation. Values outside this range are added + * to or subtracted from 360 to obtain a value within the range. */ - content: DisplayObject; + rotationZ: number; /** - * Returns a LoaderInfo object corresponding to the object being loaded. - * LoaderInfo objects are shared between the Loader object and the loaded - * content object. The LoaderInfo object supplies loading progress - * information and statistics about the loaded file. - * - *

Events related to the load are dispatched by the LoaderInfo object - * referenced by the contentLoaderInfo property of the Loader - * object. The contentLoaderInfo property is set to a valid - * LoaderInfo object, even before the content is loaded, so that you can add - * event listeners to the object prior to the load.

+ * The current scaling grid that is in effect. If set to null, + * the entire display object is scaled normally when any scale transformation + * is applied. * - *

To detect uncaught errors that happen in a loaded SWF, use the - * Loader.uncaughtErrorEvents property, not the - * Loader.contentLoaderInfo.uncaughtErrorEvents property.

- */ - contentLoaderInfo: LoaderInfo; - /** - * Creates a Loader object that you can use to load files, such as SWF, JPEG, - * GIF, or PNG files. Call the load() method to load the asset - * as a child of the Loader instance. You can then add the Loader object to - * the display list(for instance, by using the addChild() - * method of a DisplayObjectContainer instance). The asset appears on the - * Stage as it loads. + *

When you define the scale9Grid property, the display + * object is divided into a grid with nine regions based on the + * scale9Grid rectangle, which defines the center region of the + * grid. The eight other regions of the grid are the following areas:

* - *

You can also use a Loader instance "offlist," that is without adding it - * to a display object container on the display list. In this mode, the - * Loader instance might be used to load a SWF file that contains additional - * modules of an application.

+ * * - *

To detect when the SWF file is finished loading, you can use the events - * of the LoaderInfo object associated with the - * contentLoaderInfo property of the Loader object. At that - * point, the code in the module SWF file can be executed to initialize and - * start the module. In the offlist mode, a Loader instance might also be - * used to load a SWF file that contains components or media assets. Again, - * you can use the LoaderInfo object event notifications to detect when the - * components are finished loading. At that point, the application can start - * using the components and media assets in the library of the SWF file by - * instantiating the ActionScript 3.0 classes that represent those components - * and assets.

+ *

You can think of the eight regions outside of the center(defined by + * the rectangle) as being like a picture frame that has special rules + * applied to it when scaled.

* - *

To determine the status of a Loader object, monitor the following - * events that the LoaderInfo object associated with the - * contentLoaderInfo property of the Loader object:

+ *

When the scale9Grid property is set and a display object + * is scaled, all text and gradients are scaled normally; however, for other + * types of objects the following rules apply:

* * + * + *

If a display object is rotated, all subsequent scaling is normal(and + * the scale9Grid property is ignored).

+ * + *

For example, consider the following display object and a rectangle that + * is applied as the display object's scale9Grid:

+ * + *

A common use for setting scale9Grid is to set up a display + * object to be used as a component, in which edge regions retain the same + * width when the component is scaled.

+ * + * @throws ArgumentError If you pass an invalid argument to the method. */ - constructor(useAssetLibrary?: boolean, assetLibraryId?: string); + scale9Grid: Rectangle; /** - * Cancels a load() method operation that is currently in - * progress for the Loader instance. + * Indicates the horizontal scale(percentage) of the object as applied from + * the registration point. The default registration point is(0,0). 1.0 + * equals 100% scale. * + *

Scaling the local coordinate system changes the x and + * y property values, which are defined in whole pixels.

*/ - close(): void; + scaleX: number; /** - * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an - * object that is a child of this Loader object. If you load an animated GIF - * file, only the first frame is displayed. As the Loader object can contain - * only a single child, issuing a subsequent load() request - * terminates the previous request, if still pending, and commences a new - * load. - * - *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a - * loaded image is 8,191 pixels in width or height, and the total number of - * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191 - * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and - * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height - * and 2,880 pixels in width.

+ * Indicates the vertical scale(percentage) of an object as applied from the + * registration point of the object. The default registration point is(0,0). + * 1.0 is 100% scale. * - *

A SWF file or image loaded into a Loader object inherits the position, - * rotation, and scale properties of the parent display objects of the Loader - * object.

- * - *

Use the unload() method to remove movies or images loaded - * with this method, or to cancel a load operation that is in progress.

- * - *

You can prevent a SWF file from using this method by setting the - * allowNetworking parameter of the the object and - * embed tags in the HTML page that contains the SWF - * content.

- * - *

When you use this method, consider the Flash Player security model, - * which is described in the Loader class description.

+ *

Scaling the local coordinate system changes the x and + * y property values, which are defined in whole pixels.

+ */ + scaleY: number; + /** + * Indicates the depth scale(percentage) of an object as applied from the + * registration point of the object. The default registration point is(0,0). + * 1.0 is 100% scale. * - *

In Flash Player 10 and later, if you use a multipart Content-Type(for - * example "multipart/form-data") that contains an upload(indicated by a - * "filename" parameter in a "content-disposition" header within the POST - * body), the POST operation is subject to the security rules applied to - * uploads:

+ *

Scaling the local coordinate system changes the x, + * y and z property values, which are defined in + * whole pixels.

+ */ + scaleZ: number; + /** * - * + */ + scene: Scene; + /** * - *

Also, for any multipart Content-Type, the syntax must be valid - * (according to the RFC2046 standard). If the syntax appears to be invalid, - * the POST operation is subject to the security rules applied to - * uploads.

+ */ + scenePosition: Vector3D; + sceneTransform: Matrix3D; + /** + * The scroll rectangle bounds of the display object. The display object is + * cropped to the size defined by the rectangle, and it scrolls within the + * rectangle when you change the x and y properties + * of the scrollRect object. * - *

For more information related to security, see the Flash Player - * Developer Center Topic: Security.

+ *

The properties of the scrollRect Rectangle object use the + * display object's coordinate space and are scaled just like the overall + * display object. The corner bounds of the cropped window on the scrolling + * display object are the origin of the display object(0,0) and the point + * defined by the width and height of the rectangle. They are not centered + * around the origin, but use the origin to define the upper-left corner of + * the area. A scrolled display object always scrolls in whole pixel + * increments.

* - * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG - * file to be loaded. A relative path must be relative to the - * main SWF file. Absolute URLs must include the protocol - * reference, such as http:// or file:///. Filenames cannot - * include disk drive specifications. - * @param context A LoaderContext object, which has properties that define - * the following: - * + *

You can scroll an object left and right by setting the x + * property of the scrollRect Rectangle object. You can scroll + * an object up and down by setting the y property of the + * scrollRect Rectangle object. If the display object is rotated + * 90° and you scroll it left and right, the display object actually scrolls + * up and down.

+ */ + scrollRect: Rectangle; + /** * - *

If the context parameter is not specified - * or refers to a null object, the loaded content remains in - * its own security domain.

+ */ + shaderPickingDetails: boolean; + /** * - *

For complete details, see the description of the - * properties in the LoaderContext - * class.

- * @param ns An optional namespace string under which the file is to be - * loaded, allowing the differentiation of two resources with - * identical assets. - * @param parser An optional parser object for translating the loaded data - * into a usable resource. If not provided, AssetLoader will - * attempt to auto-detect the file type. - * @throws IOError The digest property of the - * request object is not - * null. You should only set the - * digest property of a URLRequest - * object when calling the - * URLLoader.load() method when - * loading a SWZ file(an Adobe platform - * component). - * @throws IllegalOperationError If the requestedContentParent - * property of the context - * parameter is a Loader. - * @throws IllegalOperationError If the LoaderContext.parameters - * parameter is set to non-null and has some - * values which are not Strings. - * @throws SecurityError The value of - * LoaderContext.securityDomain - * must be either null or - * SecurityDomain.currentDomain. - * This reflects the fact that you can only - * place the loaded media in its natural - * security sandbox or your own(the latter - * requires a policy file). - * @throws SecurityError Local SWF files may not set - * LoaderContext.securityDomain to anything - * other than null. It is not - * permitted to import non-local media into a - * local sandbox, or to place other local media - * in anything other than its natural sandbox. - * @throws SecurityError You cannot connect to commonly reserved - * ports. For a complete list of blocked ports, - * see "Restricting Networking APIs" in the - * ActionScript 3.0 Developer's Guide. - * @throws SecurityError If the applicationDomain or - * securityDomain properties of - * the context parameter are from - * a disallowed domain. - * @throws SecurityError If a local SWF file is attempting to use the - * securityDomain property of the - * context parameter. - * @event asyncError Dispatched by the contentLoaderInfo - * object if the - * LoaderContext.requestedContentParent - * property has been specified and it is not possible to - * add the loaded content as a child to the specified - * DisplayObjectContainer. This could happen if the - * loaded content is a - * flash.display.AVM1Movie or if the - * addChild() call to the - * requestedContentParent throws an error. - * @event complete Dispatched by the contentLoaderInfo - * object when the file has completed loading. The - * complete event is always dispatched - * after the init event. - * @event httpStatus Dispatched by the contentLoaderInfo - * object when a network request is made over HTTP and - * Flash Player can detect the HTTP status code. - * @event init Dispatched by the contentLoaderInfo - * object when the properties and methods of the loaded - * SWF file are accessible. The init event - * always precedes the complete event. - * @event ioError Dispatched by the contentLoaderInfo - * object when an input or output error occurs that - * causes a load operation to fail. - * @event open Dispatched by the contentLoaderInfo - * object when the loading operation starts. - * @event progress Dispatched by the contentLoaderInfo - * object as data is received while load operation - * progresses. - * @event securityError Dispatched by the contentLoaderInfo - * object if a SWF file in the local-with-filesystem - * sandbox attempts to load content in the - * local-with-networking sandbox, or vice versa. - * @event securityError Dispatched by the contentLoaderInfo - * object if the - * LoaderContext.requestedContentParent - * property has been specified and the security sandbox - * of the - * LoaderContext.requestedContentParent - * does not have access to the loaded SWF. - * @event unload Dispatched by the contentLoaderInfo - * object when a loaded object is removed. */ - load(request: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken; + boundsVisible: boolean; /** - * Loads from binary data stored in a ByteArray object. + * An object with properties pertaining to a display object's matrix, color + * transform, and pixel bounds. The specific properties - matrix, + * colorTransform, and three read-only properties + * (concatenatedMatrix, concatenatedColorTransform, + * and pixelBounds) - are described in the entry for the + * Transform class. * - *

The loadBytes() method is asynchronous. You must wait for - * the "init" event before accessing the properties of a loaded object.

+ *

Each of the transform object's properties is itself an object. This + * concept is important because the only way to set new values for the matrix + * or colorTransform objects is to create a new object and copy that object + * into the transform.matrix or transform.colorTransform property.

* - *

When you use this method, consider the Flash Player security model, - * which is described in the Loader class description.

+ *

For example, to increase the tx value of a display + * object's matrix, you must make a copy of the entire matrix object, then + * copy the new object into the matrix property of the transform object:

+ *
 public myMatrix:Matrix =
+	     * myDisplayObject.transform.matrix; myMatrix.tx += 10;
+	     * myDisplayObject.transform.matrix = myMatrix; 
* - * @param bytes A ByteArray object. The contents of the ByteArray can be - * any of the file formats supported by the Loader class: SWF, - * GIF, JPEG, or PNG. - * @param context A LoaderContext object. Only the - * applicationDomain property of the - * LoaderContext object applies; the - * checkPolicyFile and - * securityDomain properties of the LoaderContext - * object do not apply. + *

You cannot directly set the tx property. The following + * code has no effect on myDisplayObject:

+ *
 myDisplayObject.transform.matrix.tx +=
+	     * 10; 
* - *

If the context parameter is not specified - * or refers to a null object, the content is loaded into the - * current security domain - a process referred to as "import - * loading" in Flash Player security documentation. - * Specifically, if the loading SWF file trusts the remote SWF - * by incorporating the remote SWF into its code, then the - * loading SWF can import it directly into its own security - * domain.

+ *

You can also copy an entire transform object and assign it to another + * display object's transform property. For example, the following code + * copies the entire transform object from myOldDisplayObj to + * myNewDisplayObj:

+ * myNewDisplayObj.transform = myOldDisplayObj.transform; * - *

For more information related to security, see the Flash - * Player Developer Center Topic: Security.

- * @throws ArgumentError If the length property of the - * ByteArray object is not greater than 0. - * @throws IllegalOperationError If the checkPolicyFile or - * securityDomain property of the - * context parameter are non-null. - * @throws IllegalOperationError If the requestedContentParent - * property of the context - * parameter is a Loader. - * @throws IllegalOperationError If the LoaderContext.parameters - * parameter is set to non-null and has some - * values which are not Strings. - * @throws SecurityError If the provided - * applicationDomain property of - * the context property is from a - * disallowed domain. - * @throws SecurityError You cannot connect to commonly reserved - * ports. For a complete list of blocked ports, - * see "Restricting Networking APIs" in the - * ActionScript 3.0 Developer's Guide. - * @event asyncError Dispatched by the contentLoaderInfo - * object if the - * LoaderContext.requestedContentParent - * property has been specified and it is not possible to - * add the loaded content as a child to the specified - * DisplayObjectContainer. This could happen if the - * loaded content is a - * flash.display.AVM1Movie or if the - * addChild() call to the - * requestedContentParent throws an error. - * @event complete Dispatched by the contentLoaderInfo - * object when the operation is complete. The - * complete event is always dispatched - * after the init event. - * @event init Dispatched by the contentLoaderInfo - * object when the properties and methods of the loaded - * data are accessible. The init event - * always precedes the complete event. - * @event ioError Dispatched by the contentLoaderInfo - * object when the runtime cannot parse the data in the - * byte array. - * @event open Dispatched by the contentLoaderInfo - * object when the operation starts. - * @event progress Dispatched by the contentLoaderInfo - * object as data is transfered in memory. - * @event securityError Dispatched by the contentLoaderInfo - * object if the - * LoaderContext.requestedContentParent - * property has been specified and the security sandbox - * of the - * LoaderContext.requestedContentParent - * does not have access to the loaded SWF. - * @event unload Dispatched by the contentLoaderInfo - * object when a loaded object is removed. + *

The resulting display object, myNewDisplayObj, now has the + * same values for its matrix, color transform, and pixel bounds as the old + * display object, myOldDisplayObj.

+ * + *

Note that AIR for TV devices use hardware acceleration, if it is + * available, for color transforms.

*/ - loadData(data: any, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken; + transform: Transform; /** - * Removes a child of this Loader object that was loaded by using the - * load() method. The property of the associated - * LoaderInfo object is reset to null. The child is not - * necessarily destroyed because other objects might have references to it; - * however, it is no longer a child of the Loader object. - * - *

As a best practice, before you unload a child SWF file, you should - * explicitly close any streams in the child SWF file's objects, such as - * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise, - * audio in the child SWF file might continue to play, even though the child - * SWF file was unloaded. To close streams in the child SWF file, add an - * event listener to the child that listens for the unload - * event. When the parent calls Loader.unload(), the - * unload event is dispatched to the child. The following code - * shows how you might do this:

- *
 public closeAllStreams(evt:Event) {
-	     * myNetStream.close(); mySound.close(); myNetConnection.close();
-	     * myLocalConnection.close(); }
-	     * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,
-	     * closeAllStreams);
- * + * Whether or not the display object is visible. Display objects that are not + * visible are disabled. For example, if visible=false for an + * InteractiveObject instance, it cannot be clicked. */ - unload(): void; + visible: boolean; /** - * Enables a specific parser. - * When no specific parser is set for a loading/parsing opperation, - * loader3d can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. + * Indicates the width of the display object, in pixels. The width is + * calculated based on the bounds of the content of the display object. When + * you set the width property, the scaleX property + * is adjusted accordingly, as shown in the following code: * - * @param parserClass The parser class to enable. - * @see away.parsers.Parsers + *

Except for TextField and Video objects, a display object with no + * content(such as an empty sprite) has a width of 0, even if you try to set + * width to a different value.

*/ - static enableParser(parserClass: Object): void; + width: number; /** - * Enables a list of parsers. - * When no specific parser is set for a loading/parsing opperation, - * loader3d can autoselect the correct parser to use. - * A parser must have been enabled, to be considered when autoselecting the parser. * - * @param parserClasses A Vector of parser classes to enable. - * @see away.parsers.Parsers */ - static enableParsers(parserClasses: Object[]): void; - private removeListeners(dispatcher); - private onAssetComplete(event); + worldBounds: BoundingVolumeBase; /** - * Called when an error occurs during loading + * Indicates the x coordinate of the DisplayObject instance relative + * to the local coordinates of the parent DisplayObjectContainer. If the + * object is inside a DisplayObjectContainer that has transformations, it is + * in the local coordinate system of the enclosing DisplayObjectContainer. + * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the + * DisplayObjectContainer's children inherit a coordinate system that is + * rotated 90° counterclockwise. The object's coordinates refer to the + * registration point position. */ - private onLoadError(event); + x: number; /** - * Called when a an error occurs during parsing + * Indicates the y coordinate of the DisplayObject instance relative + * to the local coordinates of the parent DisplayObjectContainer. If the + * object is inside a DisplayObjectContainer that has transformations, it is + * in the local coordinate system of the enclosing DisplayObjectContainer. + * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the + * DisplayObjectContainer's children inherit a coordinate system that is + * rotated 90° counterclockwise. The object's coordinates refer to the + * registration point position. */ - private onParseError(event); + y: number; /** - * Called when the resource and all of its dependencies was retrieved. + * Indicates the z coordinate position along the z-axis of the DisplayObject + * instance relative to the 3D parent container. The z property is used for + * 3D coordinates, not screen or pixel coordinates. + * + *

When you set a z property for a display object to + * something other than the default value of 0, a corresponding + * Matrix3D object is automatically created. for adjusting a display object's + * position and orientation in three dimensions. When working with the + * z-axis, the existing behavior of x and y properties changes from screen or + * pixel coordinates to positions relative to the 3D parent container.

+ * + *

For example, a child of the _root at position x = 100, y = + * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn + * wherever the 3D projection calculation puts it. The calculation is:

+ * + *

(x~~cameraFocalLength/cameraRelativeZPosition, + * y~~cameraFocalLength/cameraRelativeZPosition)

*/ - private onResourceComplete(event); - } - export = Loader; - -} -declare module "awayjs-display/lib/base/LoaderInfo" { - import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); - import ByteArray = require("awayjs-core/lib/utils/ByteArray"); - import Loader = require("awayjs-display/lib/containers/Loader"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - /** - * The LoaderInfo class provides information about a loaded SWF file or a - * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for - * any display object. The information provided includes load progress, the - * URLs of the loader and loaded content, the number of bytes total for the - * media, and the nominal height and width of the media. - * - *

You can access LoaderInfo objects in two ways:

- * - * - * - *

The contentLoaderInfo property of a Loader object provides - * information about the content that the Loader object is loading, whereas - * the loaderInfo property of a DisplayObject provides - * information about the root SWF file for that display object.

- * - *

When you use a Loader object to load a display object(such as a SWF - * file or a bitmap), the loaderInfo property of the display - * object is the same as the contentLoaderInfo property of the - * Loader object(DisplayObject.loaderInfo = - * Loader.contentLoaderInfo). Because the instance of the main class of - * the SWF file has no Loader object, the loaderInfo property is - * the only way to access the LoaderInfo for the instance of the main class of - * the SWF file.

- * - *

The following diagram shows the different uses of the LoaderInfo - * object - for the instance of the main class of the SWF file, for the - * contentLoaderInfo property of a Loader object, and for the - * loaderInfo property of a loaded object:

- * - *

When a loading operation is not complete, some properties of the - * contentLoaderInfo property of a Loader object are not - * available. You can obtain some properties, such as - * bytesLoaded, bytesTotal, url, - * loaderURL, and applicationDomain. When the - * loaderInfo object dispatches the init event, you - * can access all properties of the loaderInfo object and the - * loaded image or SWF file.

- * - *

Note: All properties of LoaderInfo objects are read-only.

- * - *

The EventDispatcher.dispatchEvent() method is not - * applicable to LoaderInfo objects. If you call dispatchEvent() - * on a LoaderInfo object, an IllegalOperationError exception is thrown.

- * - * @event complete Dispatched when data has loaded successfully. In other - * words, it is dispatched when all the content has been - * downloaded and the loading has finished. The - * complete event is always dispatched after - * the init event. The init event - * is dispatched when the object is ready to access, though - * the content may still be downloading. - * @event httpStatus Dispatched when a network request is made over HTTP and - * an HTTP status code can be detected. - * @event init Dispatched when the properties and methods of a loaded - * SWF file are accessible and ready for use. The content, - * however, can still be downloading. A LoaderInfo object - * dispatches the init event when the following - * conditions exist: - * - * - *

For example, an Event.INIT is dispatched - * when the first frame of a movie or animation is loaded. - * The movie is then accessible and can be added to the - * display list. The complete movie, however, can take - * longer to download. The Event.COMPLETE is - * only dispatched once the full movie is loaded.

- * - *

The init event always precedes the - * complete event.

- * @event ioError Dispatched when an input or output error occurs that - * causes a load operation to fail. - * @event open Dispatched when a load operation starts. - * @event progress Dispatched when data is received as the download - * operation progresses. - * @event unload Dispatched by a LoaderInfo object whenever a loaded - * object is removed by using the unload() - * method of the Loader object, or when a second load is - * performed by the same Loader object and the original - * content is removed prior to the load beginning. - */ - class LoaderInfo extends EventDispatcher { - private _bytes; - private _bytesLoaded; - private _bytesTotal; - private _content; - private _contentType; - private _loader; - private _url; + z: number; /** - * The bytes associated with a LoaderInfo object. * - * @throws SecurityError If the object accessing this API is prevented from - * accessing the loaded object due to security - * restrictions. This situation can occur, for - * instance, when a Loader object attempts to access - * the contentLoaderInfo.content property - * and it is not granted security permission to access - * the loaded content. - * - *

For more information related to security, see the - * Flash Player Developer Center Topic: Security.

*/ - bytes: ByteArray; + zOffset: number; /** - * The number of bytes that are loaded for the media. When this number equals - * the value of bytesTotal, all of the bytes are loaded. + * Creates a new DisplayObject instance. */ - bytesLoaded: number; + constructor(); /** - * The number of compressed bytes in the entire media file. * - *

Before the first progress event is dispatched by this - * LoaderInfo object's corresponding Loader object, bytesTotal - * is 0. After the first progress event from the Loader object, - * bytesTotal reflects the actual number of bytes to be - * downloaded.

*/ - bytesTotal: number; + addEventListener(type: string, listener: Function): void; /** - * The loaded object associated with this LoaderInfo object. * - * @throws SecurityError If the object accessing this API is prevented from - * accessing the loaded object due to security - * restrictions. This situation can occur, for - * instance, when a Loader object attempts to access - * the contentLoaderInfo.content property - * and it is not granted security permission to access - * the loaded content. + */ + clone(): DisplayObject; + /** * - *

For more information related to security, see the - * Flash Player Developer Center Topic: Security.

*/ - content: DisplayObject; + dispose(): void; /** - * The MIME type of the loaded file. The value is null if not - * enough of the file has loaded in order to determine the type. The - * following list gives the possible values: - * + * @inheritDoc */ - contentType: string; + disposeAsset(): void; /** - * The Loader object associated with this LoaderInfo object. If this - * LoaderInfo object is the loaderInfo property of the instance - * of the main class of the SWF file, no Loader object is associated. + * Returns a rectangle that defines the area of the display object relative + * to the coordinate system of the targetCoordinateSpace object. + * Consider the following code, which shows how the rectangle returned can + * vary depending on the targetCoordinateSpace parameter that + * you pass to the method: * - * @throws SecurityError If the object accessing this API is prevented from - * accessing the Loader object because of security - * restrictions. This can occur, for instance, when a - * loaded SWF file attempts to access its - * loaderInfo.loader property and it is - * not granted security permission to access the - * loading SWF file. + *

Note: Use the localToGlobal() and + * globalToLocal() methods to convert the display object's local + * coordinates to display coordinates, or display coordinates to local + * coordinates, respectively.

* - *

For more information related to security, see the - * Flash Player Developer Center Topic: Security.

+ *

The getBounds() method is similar to the + * getRect() method; however, the Rectangle returned by the + * getBounds() method includes any strokes on shapes, whereas + * the Rectangle returned by the getRect() method does not. For + * an example, see the description of the getRect() method.

+ * + * @param targetCoordinateSpace The display object that defines the + * coordinate system to use. + * @return The rectangle that defines the area of the display object relative + * to the targetCoordinateSpace object's coordinate + * system. */ - loader: Loader; + getBounds(targetCoordinateSpace: DisplayObject): Rectangle; /** - * The URL of the media being loaded. + * Returns a rectangle that defines the boundary of the display object, based + * on the coordinate system defined by the targetCoordinateSpace + * parameter, excluding any strokes on shapes. The values that the + * getRect() method returns are the same or smaller than those + * returned by the getBounds() method. * - *

Before the first progress event is dispatched by this - * LoaderInfo object's corresponding Loader object, the value of the - * url property might reflect only the initial URL specified in - * the call to the load() method of the Loader object. After the - * first progress event, the url property reflects - * the media's final URL, after any redirects and relative URLs are - * resolved.

+ *

Note: Use localToGlobal() and + * globalToLocal() methods to convert the display object's local + * coordinates to Stage coordinates, or Stage coordinates to local + * coordinates, respectively.

* - *

In some cases, the value of the url property is truncated; - * see the isURLInaccessible property for details.

+ * @param targetCoordinateSpace The display object that defines the + * coordinate system to use. + * @return The rectangle that defines the area of the display object relative + * to the targetCoordinateSpace object's coordinate + * system. */ - url: string; - } - export = LoaderInfo; - -} -declare module "awayjs-display/lib/base/OrientationMode" { - class OrientationMode { + getRect(targetCoordinateSpace: DisplayObject): Rectangle; /** + * Converts the point object from the Stage(global) coordinates + * to the display object's(local) coordinates. + * + *

To use this method, first create an instance of the Point class. The + * x and y values that you assign represent global coordinates + * because they relate to the origin(0,0) of the main display area. Then + * pass the Point instance as the parameter to the + * globalToLocal() method. The method returns a new Point object + * with x and y values that relate to the origin of the display + * object instead of the origin of the Stage.

* + * @param point An object created with the Point class. The Point object + * specifies the x and y coordinates as + * properties. + * @return A Point object with coordinates relative to the display object. */ - static DEFAULT: string; + globalToLocal(point: Point): Point; /** + * Converts a two-dimensional point from the Stage(global) coordinates to a + * three-dimensional display object's(local) coordinates. + * + *

To use this method, first create an instance of the Point class. The x + * and y values that you assign to the Point object represent global + * coordinates because they are relative to the origin(0,0) of the main + * display area. Then pass the Point object to the + * globalToLocal3D() method as the point parameter. + * The method returns three-dimensional coordinates as a Vector3D object + * containing x, y, and z values that + * are relative to the origin of the three-dimensional display object.

* + * @param point A two dimensional Point object representing global x and y + * coordinates. + * @return A Vector3D object with coordinates relative to the + * three-dimensional display object. */ - static CAMERA_PLANE: string; + globalToLocal3D(point: Point): Vector3D; /** + * Evaluates the bounding box of the display object to see if it overlaps or + * intersects with the bounding box of the obj display object. * + * @param obj The display object to test against. + * @return true if the bounding boxes of the display objects + * intersect; false if not. */ - static CAMERA_POSITION: string; - } - export = OrientationMode; - -} -declare module "awayjs-display/lib/base/IBitmapDrawable" { - /** - * The IBitmapDrawable interface is implemented by objects that can be passed as the - * source parameter of the draw() method of the BitmapData class. These - * objects are of type BitmapData or DisplayObject. - * - * @see away.base.BitmapData#draw() - * @see away.base.BitmapData - * @see away.base.DisplayObject - */ - interface IBitmapDrawable { - } - export = IBitmapDrawable; - -} -declare module "awayjs-display/lib/events/DisplayObjectEvent" { - import Event = require("awayjs-core/lib/events/Event"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - class DisplayObjectEvent extends Event { - static VISIBLITY_UPDATED: string; - static SCENETRANSFORM_CHANGED: string; - static SCENE_CHANGED: string; - static POSITION_CHANGED: string; - static ROTATION_CHANGED: string; - static SCALE_CHANGED: string; - object: DisplayObject; - constructor(type: string, object: DisplayObject); - } - export = DisplayObjectEvent; - -} -declare module "awayjs-display/lib/prefabs/PrefabBase" { - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); - /** - * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating - */ - class PrefabBase extends NamedAssetBase { - _pObjects: DisplayObject[]; + hitTestObject(obj: DisplayObject): boolean; /** - * Creates a new PrefabBase object. + * Evaluates the display object to see if it overlaps or intersects with the + * point specified by the x and y parameters. The + * x and y parameters specify a point in the + * coordinate space of the Stage, not the display object container that + * contains the display object(unless that display object container is the + * Stage). + * + * @param x The x coordinate to test against this object. + * @param y The y coordinate to test against this object. + * @param shapeFlag Whether to check against the actual pixels of the object + * (true) or the bounding box + * (false). + * @return true if the display object overlaps or intersects + * with the specified point; false otherwise. */ - constructor(); + hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean; /** - * Returns a display object generated from this prefab + * @inheritDoc */ - getNewObject(): DisplayObject; - _pCreateObject(): DisplayObject; - _iValidate(): void; - } - export = PrefabBase; - -} -declare module "awayjs-display/lib/base/DisplayObject" { - import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); - import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); - import Point = require("awayjs-core/lib/geom/Point"); - import Rectangle = require("awayjs-core/lib/geom/Rectangle"); - import Vector3D = require("awayjs-core/lib/geom/Vector3D"); - import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); - import DisplayObjectContainer = require("awayjs-display/lib/containers/DisplayObjectContainer"); - import Scene = require("awayjs-display/lib/containers/Scene"); - import ControllerBase = require("awayjs-display/lib/controllers/ControllerBase"); - import BlendMode = require("awayjs-display/lib/base/BlendMode"); - import LoaderInfo = require("awayjs-display/lib/base/LoaderInfo"); - import IBitmapDrawable = require("awayjs-display/lib/base/IBitmapDrawable"); - import Transform = require("awayjs-display/lib/base/Transform"); - import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import Partition = require("awayjs-display/lib/partition/Partition"); - import IPickingCollider = require("awayjs-display/lib/pick/IPickingCollider"); - import PickingCollisionVO = require("awayjs-display/lib/pick/PickingCollisionVO"); - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import Camera = require("awayjs-display/lib/entities/Camera"); - import PrefabBase = require("awayjs-display/lib/prefabs/PrefabBase"); - /** - * The DisplayObject class is the base class for all objects that can be - * placed on the display list. The display list manages all objects displayed - * in flash. Use the DisplayObjectContainer class to arrange the - * display objects in the display list. DisplayObjectContainer objects can - * have child display objects, while other display objects, such as Shape and - * TextField objects, are "leaf" nodes that have only parents and siblings, no - * children. - * - *

The DisplayObject class supports basic functionality like the x - * and y position of an object, as well as more advanced properties of - * the object such as its transformation matrix.

- * - *

DisplayObject is an abstract base class; therefore, you cannot call - * DisplayObject directly. Invoking new DisplayObject() throws an - * ArgumentError exception.

- * - *

All display objects inherit from the DisplayObject class.

- * - *

The DisplayObject class itself does not include any APIs for rendering - * content onscreen. For that reason, if you want create a custom subclass of - * the DisplayObject class, you will want to extend one of its subclasses that - * do have APIs for rendering content onscreen, such as the Shape, Sprite, - * Bitmap, SimpleButton, TextField, or MovieClip class.

- * - *

The DisplayObject class contains several broadcast events. Normally, the - * target of any particular event is a specific DisplayObject instance. For - * example, the target of an added event is the specific - * DisplayObject instance that was added to the display list. Having a single - * target restricts the placement of event listeners to that target and in - * some cases the target's ancestors on the display list. With broadcast - * events, however, the target is not a specific DisplayObject instance, but - * rather all DisplayObject instances, including those that are not on the - * display list. This means that you can add a listener to any DisplayObject - * instance to listen for broadcast events. In addition to the broadcast - * events listed in the DisplayObject class's Events table, the DisplayObject - * class also inherits two broadcast events from the EventDispatcher class: - * activate and deactivate.

- * - *

Some properties previously used in the ActionScript 1.0 and 2.0 - * MovieClip, TextField, and Button classes(such as _alpha, - * _height, _name, _width, - * _x, _y, and others) have equivalents in the - * ActionScript 3.0 DisplayObject class that are renamed so that they no - * longer begin with the underscore(_) character.

- * - *

For more information, see the "Display Programming" chapter of the - * ActionScript 3.0 Developer's Guide.

- * - * @event added Dispatched when a display object is added to the - * display list. The following methods trigger this - * event: - * DisplayObjectContainer.addChild(), - * DisplayObjectContainer.addChildAt(). - * @event addedToStage Dispatched when a display object is added to the on - * stage display list, either directly or through the - * addition of a sub tree in which the display object - * is contained. The following methods trigger this - * event: - * DisplayObjectContainer.addChild(), - * DisplayObjectContainer.addChildAt(). - * @event enterFrame [broadcast event] Dispatched when the playhead is - * entering a new frame. If the playhead is not - * moving, or if there is only one frame, this event - * is dispatched continuously in conjunction with the - * frame rate. This event is a broadcast event, which - * means that it is dispatched by all display objects - * with a listener registered for this event. - * @event exitFrame [broadcast event] Dispatched when the playhead is - * exiting the current frame. All frame scripts have - * been run. If the playhead is not moving, or if - * there is only one frame, this event is dispatched - * continuously in conjunction with the frame rate. - * This event is a broadcast event, which means that - * it is dispatched by all display objects with a - * listener registered for this event. - * @event frameConstructed [broadcast event] Dispatched after the constructors - * of frame display objects have run but before frame - * scripts have run. If the playhead is not moving, or - * if there is only one frame, this event is - * dispatched continuously in conjunction with the - * frame rate. This event is a broadcast event, which - * means that it is dispatched by all display objects - * with a listener registered for this event. - * @event removed Dispatched when a display object is about to be - * removed from the display list. Two methods of the - * DisplayObjectContainer class generate this event: - * removeChild() and - * removeChildAt(). - * - *

The following methods of a - * DisplayObjectContainer object also generate this - * event if an object must be removed to make room for - * the new object: addChild(), - * addChildAt(), and - * setChildIndex().

- * @event removedFromStage Dispatched when a display object is about to be - * removed from the display list, either directly or - * through the removal of a sub tree in which the - * display object is contained. Two methods of the - * DisplayObjectContainer class generate this event: - * removeChild() and - * removeChildAt(). - * - *

The following methods of a - * DisplayObjectContainer object also generate this - * event if an object must be removed to make room for - * the new object: addChild(), - * addChildAt(), and - * setChildIndex().

- * @event render [broadcast event] Dispatched when the display list - * is about to be updated and rendered. This event - * provides the last opportunity for objects listening - * for this event to make changes before the display - * list is rendered. You must call the - * invalidate() method of the Stage - * object each time you want a render - * event to be dispatched. Render events - * are dispatched to an object only if there is mutual - * trust between it and the object that called - * Stage.invalidate(). This event is a - * broadcast event, which means that it is dispatched - * by all display objects with a listener registered - * for this event. - * - *

Note: This event is not dispatched if the - * display is not rendering. This is the case when the - * content is either minimized or obscured.

- */ - class DisplayObject extends NamedAssetBase implements IBitmapDrawable { - private _loaderInfo; - private _mouseX; - private _mouseY; - private _root; - private _bounds; - private _boundsVisible; - private _depth; - private _height; - private _width; - _pScene: Scene; - _pParent: DisplayObjectContainer; - _pSceneTransform: Matrix3D; - _pSceneTransformDirty: boolean; - _pIsEntity: boolean; - private _explicitPartition; - _pImplicitPartition: Partition; - private _partitionNode; - private _sceneTransformChanged; - private _scenechanged; - private _transform; - private _matrix3D; - private _matrix3DDirty; - private _inverseSceneTransform; - private _inverseSceneTransformDirty; - private _scenePosition; - private _scenePositionDirty; - private _explicitVisibility; - _pImplicitVisibility: boolean; - private _explicitMouseEnabled; - _pImplicitMouseEnabled: boolean; - private _listenToSceneTransformChanged; - private _listenToSceneChanged; - private _positionDirty; - private _rotationDirty; - private _scaleDirty; - private _positionChanged; - private _rotationChanged; - private _scaleChanged; - private _rotationX; - private _rotationY; - private _rotationZ; - private _eulers; - private _flipY; - private _listenToPositionChanged; - private _listenToRotationChanged; - private _listenToScaleChanged; - private _zOffset; - _pScaleX: number; - _pScaleY: number; - _pScaleZ: number; - private _x; - private _y; - private _z; - private _pivot; - private _orientationMatrix; - private _pivotZero; - private _pivotDirty; - private _pos; - private _rot; - private _sca; - private _transformComponents; - _pIgnoreTransform: boolean; - private _shaderPickingDetails; - _pPickingCollisionVO: PickingCollisionVO; - _pBounds: BoundingVolumeBase; - _pBoundsInvalid: boolean; - private _worldBounds; - private _worldBoundsInvalid; - _pPickingCollider: IPickingCollider; - _pRenderables: IRenderable[]; - _iSourcePrefab: PrefabBase; + isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; + /** + * Converts a three-dimensional point of the three-dimensional display + * object's(local) coordinates to a two-dimensional point in the Stage + * (global) coordinates. + * + *

For example, you can only use two-dimensional coordinates(x,y) to draw + * with the display.Graphics methods. To draw a + * three-dimensional object, you need to map the three-dimensional + * coordinates of a display object to two-dimensional coordinates. First, + * create an instance of the Vector3D class that holds the x-, y-, and z- + * coordinates of the three-dimensional display object. Then pass the + * Vector3D object to the local3DToGlobal() method as the + * point3d parameter. The method returns a two-dimensional Point + * object that can be used with the Graphics API to draw the + * three-dimensional object.

+ * + * @param point3d A Vector3D object containing either a three-dimensional + * point or the coordinates of the three-dimensional display + * object. + * @return A two-dimensional point representing a three-dimensional point in + * two-dimensional space. + */ + local3DToGlobal(point3d: Vector3D): Point; + /** + * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D. + * + * @param target The vector defining the point to be looked at + * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred + */ + lookAt(target: Vector3D, upAxis?: Vector3D): void; + /** + * Converts the point object from the display object's(local) + * coordinates to the Stage(global) coordinates. + * + *

This method allows you to convert any given x and y + * coordinates from values that are relative to the origin(0,0) of a + * specific display object(local coordinates) to values that are relative to + * the origin of the Stage(global coordinates).

+ * + *

To use this method, first create an instance of the Point class. The + * x and y values that you assign represent local coordinates + * because they relate to the origin of the display object.

+ * + *

You then pass the Point instance that you created as the parameter to + * the localToGlobal() method. The method returns a new Point + * object with x and y values that relate to the origin of the + * Stage instead of the origin of the display object.

+ * + * @param point The name or identifier of a point created with the Point + * class, specifying the x and y coordinates as + * properties. + * @return A Point object with coordinates relative to the Stage. + */ + localToGlobal(point: Point): Point; + /** + * Moves the 3d object directly to a point in space + * + * @param dx The amount of movement along the local x axis. + * @param dy The amount of movement along the local y axis. + * @param dz The amount of movement along the local z axis. + */ + moveTo(dx: number, dy: number, dz: number): void; + /** + * Moves the local point around which the object rotates. + * + * @param dx The amount of movement along the local x axis. + * @param dy The amount of movement along the local y axis. + * @param dz The amount of movement along the local z axis. + */ + movePivot(dx: number, dy: number, dz: number): void; + /** + * Rotates the 3d object around it's local x-axis + * + * @param angle The amount of rotation in degrees + */ + pitch(angle: number): void; + /** + * + */ + getRenderSceneTransform(camera: Camera): Matrix3D; + /** + * Rotates the 3d object around it's local z-axis + * + * @param angle The amount of rotation in degrees + */ + roll(angle: number): void; + /** + * Rotates the 3d object around an axis by a defined angle + * + * @param axis The vector defining the axis of rotation + * @param angle The amount of rotation in degrees + */ + rotate(axis: Vector3D, angle: number): void; + /** + * Rotates the 3d object directly to a euler angle + * + * @param ax The angle in degrees of the rotation around the x axis. + * @param ay The angle in degrees of the rotation around the y axis. + * @param az The angle in degrees of the rotation around the z axis. + */ + rotateTo(ax: number, ay: number, az: number): void; + /** + * + */ + removeEventListener(type: string, listener: Function): void; + /** + * Moves the 3d object along a vector by a defined length + * + * @param axis The vector defining the axis of movement + * @param distance The length of the movement + */ + translate(axis: Vector3D, distance: number): void; + /** + * Moves the 3d object along a vector by a defined length + * + * @param axis The vector defining the axis of movement + * @param distance The length of the movement + */ + translateLocal(axis: Vector3D, distance: number): void; + /** + * Rotates the 3d object around it's local y-axis + * + * @param angle The amount of rotation in degrees + */ + yaw(angle: number): void; + /** + * @internal + */ + _iController: ControllerBase; + /** + * @internal + */ + _iAssignedPartition: Partition; + /** + * The transformation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D. + * + * @internal + */ + _iMatrix3D: Matrix3D; + /** + * @internal + */ + _iPickingCollisionVO: PickingCollisionVO; + /** + * @internal + */ + iSetParent(value: DisplayObjectContainer): void; + /** + * @protected + */ + pCreateDefaultBoundingVolume(): BoundingVolumeBase; + /** + * @protected + */ + pCreateEntityPartitionNode(): EntityNode; + /** + * @protected + */ + pInvalidateBounds(): void; + /** + * @protected + */ + pInvalidateSceneTransform(): void; + /** + * @protected + */ + pUpdateBounds(): void; + /** + * @protected + */ + _pUpdateImplicitMouseEnabled(value: boolean): void; + /** + * @protected + */ + _pUpdateImplicitPartition(value: Partition): void; + /** + * @protected + */ + _pUpdateImplicitVisibility(value: boolean): void; + /** + * @protected + */ + _pUpdateMatrix3D(): void; + /** + * @protected + */ + pUpdateSceneTransform(): void; + _iAddRenderable(renderable: IRenderable): IRenderable; + _iRemoveRenderable(renderable: IRenderable): IRenderable; + /** + * //TODO + * + * @param shortestCollisionDistance + * @param findClosest + * @returns {boolean} + * + * @internal + */ + _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean; + /** + * + */ + _iInternalUpdate(): void; + /** + * @internal + */ + _iIsVisible(): boolean; + /** + * @internal + */ + _iIsMouseEnabled(): boolean; + /** + * @internal + */ + _iSetScene(value: Scene): void; + /** + * @protected + */ + _pUpdateScene(value: Scene): void; + /** + * @private + */ + private notifyPositionChanged(); /** - * + * @private */ - alignmentMode: string; + private notifyRotationChanged(); /** - * Indicates the alpha transparency value of the object specified. Valid - * values are 0(fully transparent) to 1(fully opaque). The default value is - * 1. Display objects with alpha set to 0 are active, - * even though they are invisible. + * @private */ - alpha: number; + private notifyScaleChanged(); /** - * A value from the BlendMode class that specifies which blend mode to use. A - * bitmap can be drawn internally in two ways. If you have a blend mode - * enabled or an external clipping mask, the bitmap is drawn by adding a - * bitmap-filled square shape to the vector render. If you attempt to set - * this property to an invalid value, Flash runtimes set the value to - * BlendMode.NORMAL. - * - *

The blendMode property affects each pixel of the display - * object. Each pixel is composed of three constituent colors(red, green, - * and blue), and each constituent color has a value between 0x00 and 0xFF. - * Flash Player or Adobe AIR compares each constituent color of one pixel in - * the movie clip with the corresponding color of the pixel in the - * background. For example, if blendMode is set to - * BlendMode.LIGHTEN, Flash Player or Adobe AIR compares the red - * value of the display object with the red value of the background, and uses - * the lighter of the two as the value for the red component of the displayed - * color.

- * - *

The following table describes the blendMode settings. The - * BlendMode class defines string values you can use. The illustrations in - * the table show blendMode values applied to a circular display - * object(2) superimposed on another display object(1).

+ * @private */ - blendMode: BlendMode; + private notifySceneChange(); /** - * + * @private */ - bounds: BoundingVolumeBase; + private notifySceneTransformChange(); /** - * If set to true, NME will use the software renderer to cache - * an internal bitmap representation of the display object. For native targets, - * this is often much slower than the default hardware renderer. When you - * are using the Flash target, this caching may increase performance for display - * objects that contain complex vector content. - * - *

All vector data for a display object that has a cached bitmap is drawn - * to the bitmap instead of the main display. If - * cacheAsBitmapMatrix is null or unsupported, the bitmap is - * then copied to the main display as unstretched, unrotated pixels snapped - * to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent - * object. If the bounds of the bitmap change, the bitmap is recreated - * instead of being stretched.

- * - *

If cacheAsBitmapMatrix is non-null and supported, the - * object is drawn to the off-screen bitmap using that matrix and the - * stretched and/or rotated results of that rendering are used to draw the - * object to the main display.

- * - *

No internal bitmap is created unless the cacheAsBitmap - * property is set to true.

- * - *

After you set the cacheAsBitmap property to - * true, the rendering does not change, however the display - * object performs pixel snapping automatically. The animation speed can be - * significantly faster depending on the complexity of the vector content. - *

- * - *

The cacheAsBitmap property is automatically set to - * true whenever you apply a filter to a display object(when - * its filter array is not empty), and if a display object has a - * filter applied to it, cacheAsBitmap is reported as - * true for that display object, even if you set the property to - * false. If you clear all filters for a display object, the - * cacheAsBitmap setting changes to what it was last set to.

- * - *

A display object does not use a bitmap even if the - * cacheAsBitmap property is set to true and - * instead renders from vector data in the following cases:

- * - * + * Invalidates the 3D transformation matrix, causing it to be updated upon the next request * - *

The cacheAsBitmap property is best used with movie clips - * that have mostly static content and that do not scale and rotate - * frequently. With such movie clips, cacheAsBitmap can lead to - * performance increases when the movie clip is translated(when its x - * and y position is changed).

+ * @private */ - cacheAsBitmap: boolean; + private invalidateMatrix3D(); /** - * + * @private */ - castsShadows: boolean; + private invalidatePartition(); /** - * Indicates the depth of the display object, in pixels. The depth is - * calculated based on the bounds of the content of the display object. When - * you set the depth property, the scaleZ property - * is adjusted accordingly, as shown in the following code: - * - *

Except for TextField and Video objects, a display object with no - * content (such as an empty sprite) has a depth of 0, even if you try to - * set depth to a different value.

+ * @private */ - depth: number; + private invalidatePivot(); /** - * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis. + * @private */ - eulers: Vector3D; + private invalidatePosition(); /** - * An object that can contain any extra data. + * @private */ - extra: Object; + private invalidateRotation(); /** - * An indexed array that contains each filter object currently associated - * with the display object. The flash.filters package contains several - * classes that define specific filters you can use. - * - *

Filters can be applied in Flash Professional at design time, or at run - * time by using ActionScript code. To apply a filter by using ActionScript, - * you must make a temporary copy of the entire filters array, - * modify the temporary array, then assign the value of the temporary array - * back to the filters array. You cannot directly add a new - * filter object to the filters array.

- * - *

To add a filter by using ActionScript, perform the following steps - * (assume that the target display object is named - * myDisplayObject):

- * - *
    - *
  1. Create a new filter object by using the constructor method of your - * chosen filter class.
  2. - *
  3. Assign the value of the myDisplayObject.filters array - * to a temporary array, such as one named myFilters.
  4. - *
  5. Add the new filter object to the myFilters temporary - * array.
  6. - *
  7. Assign the value of the temporary array to the - * myDisplayObject.filters array.
  8. - *
- * - *

If the filters array is undefined, you do not need to use - * a temporary array. Instead, you can directly assign an array literal that - * contains one or more filter objects that you create. The first example in - * the Examples section adds a drop shadow filter by using code that handles - * both defined and undefined filters arrays.

- * - *

To modify an existing filter object, you must use the technique of - * modifying a copy of the filters array:

- * - *
    - *
  1. Assign the value of the filters array to a temporary - * array, such as one named myFilters.
  2. - *
  3. Modify the property by using the temporary array, - * myFilters. For example, to set the quality property of the - * first filter in the array, you could use the following code: - * myFilters[0].quality = 1;
  4. - *
  5. Assign the value of the temporary array to the filters - * array.
  6. - *
- * - *

At load time, if a display object has an associated filter, it is - * marked to cache itself as a transparent bitmap. From this point forward, - * as long as the display object has a valid filter list, the player caches - * the display object as a bitmap. This source bitmap is used as a source - * image for the filter effects. Each display object usually has two bitmaps: - * one with the original unfiltered source display object and another for the - * final image after filtering. The final image is used when rendering. As - * long as the display object does not change, the final image does not need - * updating.

- * - *

The flash.filters package includes classes for filters. For example, to - * create a DropShadow filter, you would write:

- * - * @throws ArgumentError When filters includes a ShaderFilter - * and the shader output type is not compatible with - * this operation(the shader must specify a - * pixel4 output). - * @throws ArgumentError When filters includes a ShaderFilter - * and the shader doesn't specify any image input or - * the first input is not an image4 input. - * @throws ArgumentError When filters includes a ShaderFilter - * and the shader specifies an image input that isn't - * provided. - * @throws ArgumentError When filters includes a ShaderFilter, a - * ByteArray or Vector. instance as a shader - * input, and the width and - * height properties aren't specified for - * the ShaderInput object, or the specified values - * don't match the amount of data in the input data. - * See the ShaderInput.input property for - * more information. + * @private */ + private invalidateScale(); + } + export = DisplayObject; + +} +declare module "awayjs-display/lib/partition/SkyboxNode" { + import Plane3D = require("awayjs-core/lib/geom/Plane3D"); + import EntityNode = require("awayjs-display/lib/partition/EntityNode"); + import ICollector = require("awayjs-display/lib/traverse/ICollector"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * SkyboxNode is a space partitioning leaf node that contains a Skybox object. + * + * @class away.partition.SkyboxNode + */ + class SkyboxNode extends EntityNode { + private _skyBox; /** - * Indicates the height of the display object, in pixels. The height is - * calculated based on the bounds of the content of the display object. When - * you set the height property, the scaleY property - * is adjusted accordingly, as shown in the following code: - * - *

Except for TextField and Video objects, a display object with no - * content (such as an empty sprite) has a height of 0, even if you try to - * set height to a different value.

+ * Creates a new SkyboxNode object. + * @param skyBox The Skybox to be contained in the node. */ - height: number; + constructor(skyBox: IEntity); + /** + * @inheritDoc + */ + acceptTraverser(traverser: ICollector): void; /** - * Indicates the instance container index of the DisplayObject. The object can be - * identified in the child list of its parent display object container by - * calling the getChildByIndex() method of the display object - * container. * - *

If the DisplayObject has no parent container, index defaults to 0.

+ * @param planes + * @param numPlanes + * @returns {boolean} */ - index: number; + isInFrustum(planes: Plane3D[], numPlanes: number): boolean; + } + export = SkyboxNode; + +} +declare module "awayjs-display/lib/materials/lightpickers/LightPickerBase" { + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import IAsset = require("awayjs-core/lib/library/IAsset"); + import LightBase = require("awayjs-display/lib/base/LightBase"); + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import DirectionalLight = require("awayjs-display/lib/entities/DirectionalLight"); + import LightProbe = require("awayjs-display/lib/entities/LightProbe"); + import PointLight = require("awayjs-display/lib/entities/PointLight"); + /** + * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for + * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be + * extended to provide more application-specific dynamic selection of lights. + * + * @see StaticLightPicker + */ + class LightPickerBase extends NamedAssetBase implements IAsset { + _pNumPointLights: number; + _pNumDirectionalLights: number; + _pNumCastingPointLights: number; + _pNumCastingDirectionalLights: number; + _pNumLightProbes: number; + _pAllPickedLights: LightBase[]; + _pPointLights: PointLight[]; + _pCastingPointLights: PointLight[]; + _pDirectionalLights: DirectionalLight[]; + _pCastingDirectionalLights: DirectionalLight[]; + _pLightProbes: LightProbe[]; + _pLightProbeWeights: number[]; /** - * + * Creates a new LightPickerBase object. */ - inverseSceneTransform: Matrix3D; + constructor(); /** - * + * Disposes resources used by the light picker. */ - ignoreTransform: boolean; + dispose(): void; /** - * + * @inheritDoc */ - isEntity: boolean; + assetType: string; /** - * Returns a LoaderInfo object containing information about loading the file - * to which this display object belongs. The loaderInfo property - * is defined only for the root display object of a SWF file or for a loaded - * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the - * loaderInfo object associated with the SWF file that contains - * a display object named myDisplayObject, use - * myDisplayObject.root.loaderInfo. - * - *

A large SWF file can monitor its download by calling - * this.root.loaderInfo.addEventListener(Event.COMPLETE, - * func).

+ * The maximum amount of directional lights that will be provided. */ - loaderInfo: LoaderInfo; + numDirectionalLights: number; /** - * The calling display object is masked by the specified mask - * object. To ensure that masking works when the Stage is scaled, the - * mask display object must be in an active part of the display - * list. The mask object itself is not drawn. Set - * mask to null to remove the mask. - * - *

To be able to scale a mask object, it must be on the display list. To - * be able to drag a mask Sprite object(by calling its - * startDrag() method), it must be on the display list. To call - * the startDrag() method for a mask sprite based on a - * mouseDown event being dispatched by the sprite, set the - * sprite's buttonMode property to true.

- * - *

When display objects are cached by setting the - * cacheAsBitmap property to true an the - * cacheAsBitmapMatrix property to a Matrix object, both the - * mask and the display object being masked must be part of the same cached - * bitmap. Thus, if the display object is cached, then the mask must be a - * child of the display object. If an ancestor of the display object on the - * display list is cached, then the mask must be a child of that ancestor or - * one of its descendents. If more than one ancestor of the masked object is - * cached, then the mask must be a descendent of the cached container closest - * to the masked object in the display list.

- * - *

Note: A single mask object cannot be used to mask - * more than one calling display object. When the mask is - * assigned to a second display object, it is removed as the mask of the - * first object, and that object's mask property becomes - * null.

+ * The maximum amount of point lights that will be provided. */ - mask: DisplayObject; + numPointLights: number; /** - * Specifies whether this object receives mouse, or other user input, - * messages. The default value is true, which means that by - * default any InteractiveObject instance that is on the display list - * receives mouse events or other user input events. If - * mouseEnabled is set to false, the instance does - * not receive any mouse events(or other user input events like keyboard - * events). Any children of this instance on the display list are not - * affected. To change the mouseEnabled behavior for all - * children of an object on the display list, use - * flash.display.DisplayObjectContainer.mouseChildren. - * - *

No event is dispatched by setting this property. You must use the - * addEventListener() method to create interactive - * functionality.

+ * The maximum amount of directional lights that cast shadows. */ - mouseEnabled: boolean; + numCastingDirectionalLights: number; /** - * Indicates the x coordinate of the mouse or user input device position, in - * pixels. - * - *

Note: For a DisplayObject that has been rotated, the returned x - * coordinate will reflect the non-rotated object.

+ * The amount of point lights that cast shadows. */ - mouseX: number; + numCastingPointLights: number; /** - * Indicates the y coordinate of the mouse or user input device position, in - * pixels. - * - *

Note: For a DisplayObject that has been rotated, the returned y - * coordinate will reflect the non-rotated object.

+ * The maximum amount of light probes that will be provided. */ - mouseY: number; + numLightProbes: number; /** - * Indicates the instance name of the DisplayObject. The object can be - * identified in the child list of its parent display object container by - * calling the getChildByName() method of the display object - * container. - * - * @throws IllegalOperationError If you are attempting to set this property - * on an object that was placed on the timeline - * in the Flash authoring tool. + * The collected point lights to be used for shading. */ - name: string; + pointLights: PointLight[]; /** - * + * The collected directional lights to be used for shading. */ - orientationMode: string; + directionalLights: DirectionalLight[]; /** - * Indicates the DisplayObjectContainer object that contains this display - * object. Use the parent property to specify a relative path to - * display objects that are above the current display object in the display - * list hierarchy. - * - *

You can use parent to move up multiple levels in the - * display list as in the following:

- * - * @throws SecurityError The parent display object belongs to a security - * sandbox to which you do not have access. You can - * avoid this situation by having the parent movie call - * the Security.allowDomain() method. + * The collected point lights that cast shadows to be used for shading. */ - parent: DisplayObjectContainer; + castingPointLights: PointLight[]; /** - * + * The collected directional lights that cast shadows to be used for shading. */ - partition: Partition; + castingDirectionalLights: DirectionalLight[]; /** - * + * The collected light probes to be used for shading. */ - partitionNode: EntityNode; + lightProbes: LightProbe[]; /** - * + * The weights for each light probe, defining their influence on the object. */ - pickingCollider: IPickingCollider; + lightProbeWeights: number[]; /** - * Defines the local point around which the object rotates. + * A collection of all the collected lights. */ - pivot: Vector3D; + allPickedLights: LightBase[]; /** - * For a display object in a loaded SWF file, the root property - * is the top-most display object in the portion of the display list's tree - * structure represented by that SWF file. For a Bitmap object representing a - * loaded image file, the root property is the Bitmap object - * itself. For the instance of the main class of the first SWF file loaded, - * the root property is the display object itself. The - * root property of the Stage object is the Stage object itself. - * The root property is set to null for any display - * object that has not been added to the display list, unless it has been - * added to a display object container that is off the display list but that - * is a child of the top-most display object in a loaded SWF file. - * - *

For example, if you create a new Sprite object by calling the - * Sprite() constructor method, its root property - * is null until you add it to the display list(or to a display - * object container that is off the display list but that is a child of the - * top-most display object in a SWF file).

- * - *

For a loaded SWF file, even though the Loader object used to load the - * file may not be on the display list, the top-most display object in the - * SWF file has its root property set to itself. The Loader - * object does not have its root property set until it is added - * as a child of a display object for which the root property is - * set.

+ * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code. */ - root: DisplayObjectContainer; + collectLights(renderable: IRenderable): void; /** - * Indicates the rotation of the DisplayObject instance, in degrees, from its - * original orientation. Values from 0 to 180 represent clockwise rotation; - * values from 0 to -180 represent counterclockwise rotation. Values outside - * this range are added to or subtracted from 360 to obtain a value within - * the range. For example, the statement my_video.rotation = 450 - * is the same as my_video.rotation = 90. + * Updates the weights for the light probes, based on the renderable's position relative to them. + * @param renderable The renderble for which to calculate the light probes' influence. */ - rotation: number; + private updateProbeWeights(renderable); + } + export = LightPickerBase; + +} +declare module "awayjs-display/lib/entities/Skybox" { + import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase"); + import UVTransform = require("awayjs-core/lib/geom/UVTransform"); + import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase"); + import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); + import IAnimator = require("awayjs-display/lib/animators/IAnimator"); + import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); + import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); + import SkyboxNode = require("awayjs-display/lib/partition/SkyboxNode"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); + /** + * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as + * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring + * the sky box is always as large as possible without being clipped. + */ + class Skybox extends DisplayObject implements IEntity, IRenderableOwner, IRenderObjectOwner { + private _cubeMap; + _pAlphaThreshold: number; + private _animationSet; + _pLightPicker: LightPickerBase; + _pBlendMode: string; + private _renderObjects; + private _renderables; + private _uvTransform; + private _owners; + private _mipmap; + private _smooth; + private _material; + private _animator; /** - * Indicates the x-axis rotation of the DisplayObject instance, in degrees, - * from its original orientation relative to the 3D parent container. Values - * from 0 to 180 represent clockwise rotation; values from 0 to -180 - * represent counterclockwise rotation. Values outside this range are added - * to or subtracted from 360 to obtain a value within the range. + * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either + * invisible or entirely opaque, often used with textures for foliage, etc. + * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). */ - rotationX: number; + alphaThreshold: number; /** - * Indicates the y-axis rotation of the DisplayObject instance, in degrees, - * from its original orientation relative to the 3D parent container. Values - * from 0 to 180 represent clockwise rotation; values from 0 to -180 - * represent counterclockwise rotation. Values outside this range are added - * to or subtracted from 360 to obtain a value within the range. + * Indicates whether or not any used textures should use mipmapping. Defaults to true. */ - rotationY: number; - /** - * Indicates the z-axis rotation of the DisplayObject instance, in degrees, - * from its original orientation relative to the 3D parent container. Values - * from 0 to 180 represent clockwise rotation; values from 0 to -180 - * represent counterclockwise rotation. Values outside this range are added - * to or subtracted from 360 to obtain a value within the range. + mipmap: boolean; + /** + * Indicates whether or not any used textures should use smoothing. */ - rotationZ: number; + smooth: boolean; /** - * The current scaling grid that is in effect. If set to null, - * the entire display object is scaled normally when any scale transformation - * is applied. - * - *

When you define the scale9Grid property, the display - * object is divided into a grid with nine regions based on the - * scale9Grid rectangle, which defines the center region of the - * grid. The eight other regions of the grid are the following areas:

- * - * - * - *

You can think of the eight regions outside of the center(defined by - * the rectangle) as being like a picture frame that has special rules - * applied to it when scaled.

+ * The light picker used by the material to provide lights to the material if it supports lighting. * - *

When the scale9Grid property is set and a display object - * is scaled, all text and gradients are scaled normally; however, for other - * types of objects the following rules apply:

+ * @see LightPickerBase + * @see StaticLightPicker + */ + lightPicker: LightPickerBase; + /** * + */ + animationSet: IAnimationSet; + /** + * The blend mode to use when drawing this renderable. The following blend modes are supported: * - * - *

If a display object is rotated, all subsequent scaling is normal(and - * the scale9Grid property is ignored).

- * - *

For example, consider the following display object and a rectangle that - * is applied as the display object's scale9Grid:

- * - *

A common use for setting scale9Grid is to set up a display - * object to be used as a component, in which edge regions retain the same - * width when the component is scaled.

- * - * @throws ArgumentError If you pass an invalid argument to the method. */ - scale9Grid: Rectangle; + blendMode: string; + _pInvalidateRenderObject(): void; /** - * Indicates the horizontal scale(percentage) of the object as applied from - * the registration point. The default registration point is(0,0). 1.0 - * equals 100% scale. + * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use. * - *

Scaling the local coordinate system changes the x and - * y property values, which are defined in whole pixels.

+ * @private */ - scaleX: number; + _pIinvalidatePasses(): void; /** - * Indicates the vertical scale(percentage) of an object as applied from the - * registration point of the object. The default registration point is(0,0). - * 1.0 is 100% scale. + * A list of the IRenderableOwners that use this material * - *

Scaling the local coordinate system changes the x and - * y property values, which are defined in whole pixels.

+ * @private */ - scaleY: number; + iOwners: IRenderableOwner[]; + animator: IAnimator; /** - * Indicates the depth scale(percentage) of an object as applied from the - * registration point of the object. The default registration point is(0,0). - * 1.0 is 100% scale. * - *

Scaling the local coordinate system changes the x, - * y and z property values, which are defined in - * whole pixels.

*/ - scaleZ: number; + uvTransform: UVTransform; /** - * - */ - scene: Scene; + * The cube texture to use as the skybox. + */ + cubeMap: CubeTextureBase; /** + * Create a new Skybox object. * + * @param material The material with which to render the Skybox. */ - scenePosition: Vector3D; - sceneTransform: Matrix3D; + constructor(cubeMap?: CubeTextureBase); + assetType: string; /** - * The scroll rectangle bounds of the display object. The display object is - * cropped to the size defined by the rectangle, and it scrolls within the - * rectangle when you change the x and y properties - * of the scrollRect object. - * - *

The properties of the scrollRect Rectangle object use the - * display object's coordinate space and are scaled just like the overall - * display object. The corner bounds of the cropped window on the scrolling - * display object are the origin of the display object(0,0) and the point - * defined by the width and height of the rectangle. They are not centered - * around the origin, but use the origin to define the upper-left corner of - * the area. A scrolled display object always scrolls in whole pixel - * increments.

- * - *

You can scroll an object left and right by setting the x - * property of the scrollRect Rectangle object. You can scroll - * an object up and down by setting the y property of the - * scrollRect Rectangle object. If the display object is rotated - * 90° and you scroll it left and right, the display object actually scrolls - * up and down.

+ * @protected */ - scrollRect: Rectangle; + pInvalidateBounds(): void; /** - * + * @protected */ - shaderPickingDetails: boolean; + pCreateEntityPartitionNode(): SkyboxNode; /** - * + * @protected */ - boundsVisible: boolean; + pCreateDefaultBoundingVolume(): BoundingVolumeBase; /** - * An object with properties pertaining to a display object's matrix, color - * transform, and pixel bounds. The specific properties - matrix, - * colorTransform, and three read-only properties - * (concatenatedMatrix, concatenatedColorTransform, - * and pixelBounds) - are described in the entry for the - * Transform class. - * - *

Each of the transform object's properties is itself an object. This - * concept is important because the only way to set new values for the matrix - * or colorTransform objects is to create a new object and copy that object - * into the transform.matrix or transform.colorTransform property.

- * - *

For example, to increase the tx value of a display - * object's matrix, you must make a copy of the entire matrix object, then - * copy the new object into the matrix property of the transform object:

- *
 public myMatrix:Matrix =
-	     * myDisplayObject.transform.matrix; myMatrix.tx += 10;
-	     * myDisplayObject.transform.matrix = myMatrix; 
- * - *

You cannot directly set the tx property. The following - * code has no effect on myDisplayObject:

- *
 myDisplayObject.transform.matrix.tx +=
-	     * 10; 
- * - *

You can also copy an entire transform object and assign it to another - * display object's transform property. For example, the following code - * copies the entire transform object from myOldDisplayObj to - * myNewDisplayObj:

- * myNewDisplayObj.transform = myOldDisplayObj.transform; - * - *

The resulting display object, myNewDisplayObj, now has the - * same values for its matrix, color transform, and pixel bounds as the old - * display object, myOldDisplayObj.

- * - *

Note that AIR for TV devices use hardware acceleration, if it is - * available, for color transforms.

+ * @protected */ - transform: Transform; + pUpdateBounds(): void; + castsShadows: boolean; /** - * Whether or not the display object is visible. Display objects that are not - * visible are disabled. For example, if visible=false for an - * InteractiveObject instance, it cannot be clicked. + * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they + * could be used by other materials and will not be disposed. */ - visible: boolean; + dispose(): void; + _iCollectRenderables(rendererPool: IRendererPool): void; + _iCollectRenderable(rendererPool: IRendererPool): void; + _iAddRenderObject(renderObject: IRenderObject): IRenderObject; + _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; + _iAddRenderable(renderable: IRenderable): IRenderable; + _iRemoveRenderable(renderable: IRenderable): IRenderable; /** - * Indicates the width of the display object, in pixels. The width is - * calculated based on the bounds of the content of the display object. When - * you set the width property, the scaleX property - * is adjusted accordingly, as shown in the following code: * - *

Except for TextField and Video objects, a display object with no - * content(such as an empty sprite) has a width of 0, even if you try to set - * width to a different value.

+ * @param renderer + * + * @internal */ - width: number; + getRenderObject(renderablePool: IRenderablePool): IRenderObject; + } + export = Skybox; + +} +declare module "awayjs-display/lib/pool/IRenderablePool" { + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); + import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); + import Skybox = require("awayjs-display/lib/entities/Skybox"); + /** + * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least + * a render call per required renderable. + */ + interface IRenderablePool { + getMaterialRenderObject(material: MaterialBase): IRenderObject; + getSkyboxRenderObject(skybox: Skybox): IRenderObject; + disposeItem(renderableOwner: IRenderableOwner): any; + } + export = IRenderablePool; + +} +declare module "awayjs-display/lib/base/IRenderObjectOwner" { + import IAsset = require("awayjs-core/lib/library/IAsset"); + import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); + import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); + import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); + /** + * IRenderObjectOwner provides an interface for objects that can use materials. + * + * @interface away.base.IRenderObjectOwner + */ + interface IRenderObjectOwner extends IAsset { + alphaThreshold: number; + mipmap: boolean; + smooth: boolean; + blendMode: string; + lightPicker: LightPickerBase; + animationSet: IAnimationSet; + iOwners: IRenderableOwner[]; + _iAddRenderObject(renderObject: IRenderObject): IRenderObject; + _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; /** * + * @param renderer + * + * @internal */ - worldBounds: BoundingVolumeBase; + getRenderObject(renderablePool: IRenderablePool): IRenderObject; + } + export = IRenderObjectOwner; + +} +declare module "awayjs-display/lib/events/RenderableOwnerEvent" { + import Event = require("awayjs-core/lib/events/Event"); + import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); + /** + * Dispatched to notify changes in a sub geometry object's state. + * + * @class away.events.RenderableOwnerEvent + * @see away.core.base.Geometry + */ + class RenderableOwnerEvent extends Event { /** - * Indicates the x coordinate of the DisplayObject instance relative - * to the local coordinates of the parent DisplayObjectContainer. If the - * object is inside a DisplayObjectContainer that has transformations, it is - * in the local coordinate system of the enclosing DisplayObjectContainer. - * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the - * DisplayObjectContainer's children inherit a coordinate system that is - * rotated 90° counterclockwise. The object's coordinates refer to the - * registration point position. + * Dispatched when a Renderable owners's render object owner has been updated. */ - x: number; + static RENDER_OBJECT_OWNER_UPDATED: string; + private _renderObjectOwner; /** - * Indicates the y coordinate of the DisplayObject instance relative - * to the local coordinates of the parent DisplayObjectContainer. If the - * object is inside a DisplayObjectContainer that has transformations, it is - * in the local coordinate system of the enclosing DisplayObjectContainer. - * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the - * DisplayObjectContainer's children inherit a coordinate system that is - * rotated 90° counterclockwise. The object's coordinates refer to the - * registration point position. + * Create a new GeometryEvent + * @param type The event type. + * @param dataType An optional data type of the vertex data being updated. */ - y: number; + constructor(type: string, renderObjectOwner: IRenderObjectOwner); /** - * Indicates the z coordinate position along the z-axis of the DisplayObject - * instance relative to the 3D parent container. The z property is used for - * 3D coordinates, not screen or pixel coordinates. - * - *

When you set a z property for a display object to - * something other than the default value of 0, a corresponding - * Matrix3D object is automatically created. for adjusting a display object's - * position and orientation in three dimensions. When working with the - * z-axis, the existing behavior of x and y properties changes from screen or - * pixel coordinates to positions relative to the 3D parent container.

- * - *

For example, a child of the _root at position x = 100, y = - * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn - * wherever the 3D projection calculation puts it. The calculation is:

- * - *

(x~~cameraFocalLength/cameraRelativeZPosition, - * y~~cameraFocalLength/cameraRelativeZPosition)

+ * The renderobject owner of the renderable owner. */ - z: number; + renderObjectOwner: IRenderObjectOwner; /** + * Clones the event. * + * @return An exact duplicate of the current object. */ - zOffset: number; + clone(): Event; + } + export = RenderableOwnerEvent; + +} +declare module "awayjs-display/lib/materials/MaterialBase" { + import ColorTransform = require("awayjs-core/lib/geom/ColorTransform"); + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase"); + import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); + import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); + import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); + import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); + /** + * MaterialBase forms an abstract base class for any material. + * A material consists of several passes, each of which constitutes at least one render call. Several passes could + * be used for special effects (render lighting for many lights in several passes, render an outline in a separate + * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space + * subsurface scattering, or rendering a depth map for specialized self-shadowing). + * + * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular + * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom + * shaders, or entire new material frameworks. + */ + class MaterialBase extends NamedAssetBase implements IRenderObjectOwner { + private _colorTransform; + private _alphaBlending; + private _alpha; + private _sizeChanged; + private _renderObjects; + _pAlphaThreshold: number; + _pAnimateUVs: boolean; + private _enableLightFallOff; + private _specularLightSources; + private _diffuseLightSources; /** - * Creates a new DisplayObject instance. + * An object to contain any extra data. */ - constructor(); + extra: Object; /** + * A value that can be used by materials that only work with a given type of renderer. The renderer can test the + * classification to choose which render path to use. For example, a deferred material could set this value so + * that the deferred renderer knows not to take the forward rendering path. * + * @private */ - addEventListener(type: string, listener: Function): void; + _iClassification: string; /** + * An id for this material used to sort the renderables by shader program, which reduces Program state changes. * + * @private */ - clone(): DisplayObject; + _iMaterialId: number; + _iBaseScreenPassIndex: number; + private _bothSides; + private _animationSet; + /** + * A list of material owners, renderables or custom Entities. + */ + private _owners; + private _alphaPremultiplied; + _pBlendMode: string; + private _mipmap; + private _smooth; + private _repeat; + private _color; + _pTexture: Texture2DBase; + _pLightPicker: LightPickerBase; + _pHeight: number; + _pWidth: number; + private _onLightChangeDelegate; /** * */ - dispose(): void; + assetType: string; /** - * @inheritDoc + * Creates a new MaterialBase object. */ - disposeAsset(): void; + constructor(); /** - * Returns a rectangle that defines the area of the display object relative - * to the coordinate system of the targetCoordinateSpace object. - * Consider the following code, which shows how the rectangle returned can - * vary depending on the targetCoordinateSpace parameter that - * you pass to the method: - * - *

Note: Use the localToGlobal() and - * globalToLocal() methods to convert the display object's local - * coordinates to display coordinates, or display coordinates to local - * coordinates, respectively.

- * - *

The getBounds() method is similar to the - * getRect() method; however, the Rectangle returned by the - * getBounds() method includes any strokes on shapes, whereas - * the Rectangle returned by the getRect() method does not. For - * an example, see the description of the getRect() method.

- * - * @param targetCoordinateSpace The display object that defines the - * coordinate system to use. - * @return The rectangle that defines the area of the display object relative - * to the targetCoordinateSpace object's coordinate - * system. + * The alpha of the surface. */ - getBounds(targetCoordinateSpace: DisplayObject): Rectangle; + alpha: number; /** - * Returns a rectangle that defines the boundary of the display object, based - * on the coordinate system defined by the targetCoordinateSpace - * parameter, excluding any strokes on shapes. The values that the - * getRect() method returns are the same or smaller than those - * returned by the getBounds() method. - * - *

Note: Use localToGlobal() and - * globalToLocal() methods to convert the display object's local - * coordinates to Stage coordinates, or Stage coordinates to local - * coordinates, respectively.

- * - * @param targetCoordinateSpace The display object that defines the - * coordinate system to use. - * @return The rectangle that defines the area of the display object relative - * to the targetCoordinateSpace object's coordinate - * system. + * The ColorTransform object to transform the colour of the material with. Defaults to null. */ - getRect(targetCoordinateSpace: DisplayObject): Rectangle; + colorTransform: ColorTransform; /** - * Converts the point object from the Stage(global) coordinates - * to the display object's(local) coordinates. - * - *

To use this method, first create an instance of the Point class. The - * x and y values that you assign represent global coordinates - * because they relate to the origin(0,0) of the main display area. Then - * pass the Point instance as the parameter to the - * globalToLocal() method. The method returns a new Point object - * with x and y values that relate to the origin of the display - * object instead of the origin of the Stage.

- * - * @param point An object created with the Point class. The Point object - * specifies the x and y coordinates as - * properties. - * @return A Point object with coordinates relative to the display object. + * Indicates whether or not the material has transparency. If binary transparency is sufficient, for + * example when using textures of foliage, consider using alphaThreshold instead. */ - globalToLocal(point: Point): Point; + alphaBlending: boolean; /** - * Converts a two-dimensional point from the Stage(global) coordinates to a - * three-dimensional display object's(local) coordinates. - * - *

To use this method, first create an instance of the Point class. The x - * and y values that you assign to the Point object represent global - * coordinates because they are relative to the origin(0,0) of the main - * display area. Then pass the Point object to the - * globalToLocal3D() method as the point parameter. - * The method returns three-dimensional coordinates as a Vector3D object - * containing x, y, and z values that - * are relative to the origin of the three-dimensional display object.

* - * @param point A two dimensional Point object representing global x and y - * coordinates. - * @return A Vector3D object with coordinates relative to the - * three-dimensional display object. */ - globalToLocal3D(point: Point): Vector3D; + height: number; /** - * Evaluates the bounding box of the display object to see if it overlaps or - * intersects with the bounding box of the obj display object. * - * @param obj The display object to test against. - * @return true if the bounding boxes of the display objects - * intersect; false if not. */ - hitTestObject(obj: DisplayObject): boolean; + animationSet: IAnimationSet; /** - * Evaluates the display object to see if it overlaps or intersects with the - * point specified by the x and y parameters. The - * x and y parameters specify a point in the - * coordinate space of the Stage, not the display object container that - * contains the display object(unless that display object container is the - * Stage). + * The light picker used by the material to provide lights to the material if it supports lighting. * - * @param x The x coordinate to test against this object. - * @param y The y coordinate to test against this object. - * @param shapeFlag Whether to check against the actual pixels of the object - * (true) or the bounding box - * (false). - * @return true if the display object overlaps or intersects - * with the specified point; false otherwise. + * @see LightPickerBase + * @see StaticLightPicker */ - hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean; + lightPicker: LightPickerBase; /** - * @inheritDoc + * Indicates whether or not any used textures should use mipmapping. Defaults to true. */ - isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean; + mipmap: boolean; /** - * Converts a three-dimensional point of the three-dimensional display - * object's(local) coordinates to a two-dimensional point in the Stage - * (global) coordinates. - * - *

For example, you can only use two-dimensional coordinates(x,y) to draw - * with the display.Graphics methods. To draw a - * three-dimensional object, you need to map the three-dimensional - * coordinates of a display object to two-dimensional coordinates. First, - * create an instance of the Vector3D class that holds the x-, y-, and z- - * coordinates of the three-dimensional display object. Then pass the - * Vector3D object to the local3DToGlobal() method as the - * point3d parameter. The method returns a two-dimensional Point - * object that can be used with the Graphics API to draw the - * three-dimensional object.

- * - * @param point3d A Vector3D object containing either a three-dimensional - * point or the coordinates of the three-dimensional display - * object. - * @return A two-dimensional point representing a three-dimensional point in - * two-dimensional space. + * Indicates whether or not any used textures should use smoothing. */ - local3DToGlobal(point3d: Vector3D): Point; + smooth: boolean; /** - * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D. - * - * @param target The vector defining the point to be looked at - * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred + * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to + * the texture's borders when the uv coordinates are outside the [0, 1] interval. + */ + repeat: boolean; + /** + * The diffuse reflectivity color of the surface. */ - lookAt(target: Vector3D, upAxis?: Vector3D): void; + color: number; /** - * Converts the point object from the display object's(local) - * coordinates to the Stage(global) coordinates. - * - *

This method allows you to convert any given x and y - * coordinates from values that are relative to the origin(0,0) of a - * specific display object(local coordinates) to values that are relative to - * the origin of the Stage(global coordinates).

- * - *

To use this method, first create an instance of the Point class. The - * x and y values that you assign represent local coordinates - * because they relate to the origin of the display object.

- * - *

You then pass the Point instance that you created as the parameter to - * the localToGlobal() method. The method returns a new Point - * object with x and y values that relate to the origin of the - * Stage instead of the origin of the display object.

- * - * @param point The name or identifier of a point created with the Point - * class, specifying the x and y coordinates as - * properties. - * @return A Point object with coordinates relative to the Stage. + * The texture object to use for the albedo colour. */ - localToGlobal(point: Point): Point; + texture: Texture2DBase; /** - * Moves the 3d object directly to a point in space - * - * @param dx The amount of movement along the local x axis. - * @param dy The amount of movement along the local y axis. - * @param dz The amount of movement along the local z axis. + * Specifies whether or not the UV coordinates should be animated using a transformation matrix. */ - moveTo(dx: number, dy: number, dz: number): void; + animateUVs: boolean; /** - * Moves the local point around which the object rotates. - * - * @param dx The amount of movement along the local x axis. - * @param dy The amount of movement along the local y axis. - * @param dz The amount of movement along the local z axis. + * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and + * compatibility for constrained mode. */ - movePivot(dx: number, dy: number, dz: number): void; + enableLightFallOff: boolean; /** - * Rotates the 3d object around it's local x-axis + * Define which light source types to use for diffuse reflections. This allows choosing between regular lights + * and/or light probes for diffuse reflections. * - * @param angle The amount of rotation in degrees + * @see away3d.materials.LightSources */ - pitch(angle: number): void; + diffuseLightSources: number; /** + * Define which light source types to use for specular reflections. This allows choosing between regular lights + * and/or light probes for specular reflections. * + * @see away3d.materials.LightSources */ - getRenderSceneTransform(camera: Camera): Matrix3D; + specularLightSources: number; /** - * Rotates the 3d object around it's local z-axis - * - * @param angle The amount of rotation in degrees + * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they + * could be used by other materials and will not be disposed. */ - roll(angle: number): void; + dispose(): void; /** - * Rotates the 3d object around an axis by a defined angle - * - * @param axis The vector defining the axis of rotation - * @param angle The amount of rotation in degrees + * Defines whether or not the material should cull triangles facing away from the camera. */ - rotate(axis: Vector3D, angle: number): void; + bothSides: boolean; /** - * Rotates the 3d object directly to a euler angle - * - * @param ax The angle in degrees of the rotation around the x axis. - * @param ay The angle in degrees of the rotation around the y axis. - * @param az The angle in degrees of the rotation around the z axis. + * The blend mode to use when drawing this renderable. The following blend modes are supported: + * */ - rotateTo(ax: number, ay: number, az: number): void; + blendMode: string; /** - * + * Indicates whether visible textures (or other pixels) used by this material have + * already been premultiplied. Toggle this if you are seeing black halos around your + * blended alpha edges. */ - removeEventListener(type: string, listener: Function): void; + alphaPremultiplied: boolean; /** - * Moves the 3d object along a vector by a defined length - * - * @param axis The vector defining the axis of movement - * @param distance The length of the movement + * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either + * invisible or entirely opaque, often used with textures for foliage, etc. + * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled). */ - translate(axis: Vector3D, distance: number): void; + alphaThreshold: number; /** - * Moves the 3d object along a vector by a defined length * - * @param axis The vector defining the axis of movement - * @param distance The length of the movement */ - translateLocal(axis: Vector3D, distance: number): void; + width: number; /** - * Rotates the 3d object around it's local y-axis + * Mark an IRenderableOwner as owner of this material. + * Assures we're not using the same material across renderables with different animations, since the + * Programs depend on animation. This method needs to be called when a material is assigned. * - * @param angle The amount of rotation in degrees + * @param owner The IRenderableOwner that had this material assigned + * + * @internal */ - yaw(angle: number): void; + iAddOwner(owner: IRenderableOwner): void; /** + * Removes an IRenderableOwner as owner. + * @param owner + * * @internal */ - _iController: ControllerBase; + iRemoveOwner(owner: IRenderableOwner): void; /** - * @internal + * A list of the IRenderableOwners that use this material + * + * @private */ - _iAssignedPartition: Partition; + iOwners: IRenderableOwner[]; /** - * The transformation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D. + * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use. * - * @internal + * @private */ - _iMatrix3D: Matrix3D; + _pInvalidatePasses(): void; + private invalidateAnimation(); + _pInvalidateRenderObject(): void; /** - * @internal + * Called when the light picker's configuration changed. */ - _iPickingCollisionVO: PickingCollisionVO; + private onLightsChange(event); + _pNotifySizeChanged(): void; + _iAddRenderObject(renderObject: IRenderObject): IRenderObject; + _iRemoveRenderObject(renderObject: IRenderObject): IRenderObject; /** + * + * @param renderer + * * @internal */ - iSetParent(value: DisplayObjectContainer): void; + getRenderObject(renderablePool: IRenderablePool): IRenderObject; + } + export = MaterialBase; + +} +declare module "awayjs-display/lib/base/IRenderableOwner" { + import UVTransform = require("awayjs-core/lib/geom/UVTransform"); + import IAsset = require("awayjs-core/lib/library/IAsset"); + import IAnimator = require("awayjs-display/lib/animators/IAnimator"); + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); + /** + * IRenderableOwner provides an interface for objects that can use materials. + * + * @interface away.base.IRenderableOwner + */ + interface IRenderableOwner extends IAsset { /** - * @protected + * The animation used by the material owner to assemble the vertex code. */ - pCreateDefaultBoundingVolume(): BoundingVolumeBase; + animator: IAnimator; /** - * @protected + * */ - pCreateEntityPartitionNode(): EntityNode; + uvTransform: UVTransform; /** - * @protected + * + * @param renderable + * @private */ - pInvalidateBounds(): void; + _iAddRenderable(renderable: IRenderable): IRenderable; /** - * @protected + * + * @param renderable + * @private */ - pInvalidateSceneTransform(): void; + _iRemoveRenderable(renderable: IRenderable): IRenderable; /** - * @protected + * + * @param renderer + * @private */ - pUpdateBounds(): void; + _iCollectRenderable(rendererPool: IRendererPool): any; + } + export = IRenderableOwner; + +} +declare module "awayjs-display/lib/base/ISubMesh" { + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); + import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); + import Mesh = require("awayjs-display/lib/entities/Mesh"); + /** + * ISubMesh is an interface for object SubMesh that is used to + * apply a material to a SubGeometry class + * + * @class away.base.ISubMesh + */ + interface ISubMesh extends IRenderableOwner { + subGeometry: SubGeometryBase; + parentMesh: Mesh; + material: MaterialBase; + _iIndex: number; + _iInvalidateRenderableGeometry(): any; + _iGetExplicitMaterial(): MaterialBase; + } + export = ISubMesh; + +} +declare module "awayjs-display/lib/base/ISubMeshClass" { + import ISubMesh = require("awayjs-display/lib/base/ISubMesh"); + import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); + import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); + import Mesh = require("awayjs-display/lib/entities/Mesh"); + /** + * ISubMeshClass is an interface for the constructable class definition ISubMesh that is used to + * apply a material to a SubGeometry class + * + * @class away.base.ISubMeshClass + */ + interface ISubMeshClass { /** - * @protected + * */ - _pUpdateImplicitMouseEnabled(value: boolean): void; + new (subGeometry: SubGeometryBase, parentMesh: Mesh, material?: MaterialBase): ISubMesh; + } + export = ISubMeshClass; + +} +declare module "awayjs-display/lib/base/SubGeometryBase" { + import NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); + import Matrix3D = require("awayjs-core/lib/geom/Matrix3D"); + import Geometry = require("awayjs-display/lib/base/Geometry"); + import ISubMeshClass = require("awayjs-display/lib/base/ISubMeshClass"); + /** + * @class away.base.TriangleSubGeometry + */ + class SubGeometryBase extends NamedAssetBase { + static VERTEX_DATA: string; + _pStrideOffsetDirty: boolean; + _pIndices: number[]; + _pVertices: number[]; + private _numIndices; + private _numTriangles; + _pNumVertices: number; + _pConcatenateArrays: boolean; + private _indicesUpdated; + _pStride: Object; + _pOffset: Object; + _pUpdateStrideOffset(): void; + _pSubMeshClass: ISubMeshClass; + subMeshClass: ISubMeshClass; /** - * @protected + * */ - _pUpdateImplicitPartition(value: Partition): void; + concatenateArrays: boolean; /** - * @protected + * The raw index data that define the faces. */ - _pUpdateImplicitVisibility(value: boolean): void; + indices: number[]; /** - * @protected + * */ - _pUpdateMatrix3D(): void; + vertices: number[]; /** - * @protected + * The total amount of triangles in the TriangleSubGeometry. */ - pUpdateSceneTransform(): void; - _iAddRenderable(renderable: IRenderable): IRenderable; - _iRemoveRenderable(renderable: IRenderable): IRenderable; + numTriangles: number; + numVertices: number; /** - * //TODO - * - * @param shortestCollisionDistance - * @param findClosest - * @returns {boolean} * - * @internal */ - _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean; + constructor(concatenatedArrays: boolean); /** * */ - _iInternalUpdate(): void; + getStride(dataType: string): any; /** - * @internal + * */ - _iIsVisible(): boolean; + getOffset(dataType: string): any; + updateVertices(): void; /** - * @internal + * */ - _iIsMouseEnabled(): boolean; + dispose(): void; /** - * @internal + * Updates the face indices of the TriangleSubGeometry. + * + * @param indices The face indices to upload. */ - _iSetScene(value: Scene): void; + updateIndices(indices: number[]): void; /** * @protected */ - _pUpdateScene(value: Scene): void; + pInvalidateBounds(): void; /** + * The Geometry object that 'owns' this TriangleSubGeometry object. + * * @private */ - private notifyPositionChanged(); + parentGeometry: Geometry; /** - * @private + * Clones the current object + * @return An exact duplicate of the current object. */ - private notifyRotationChanged(); + clone(): SubGeometryBase; + applyTransformation(transform: Matrix3D): void; /** - * @private + * Scales the geometry. + * @param scale The amount by which to scale. */ - private notifyScaleChanged(); + scale(scale: number): void; + scaleUV(scaleU?: number, scaleV?: number): void; + getBoundingPositions(): number[]; + private notifyIndicesUpdate(); + _pNotifyVerticesUpdate(): void; + } + export = SubGeometryBase; + +} +declare module "awayjs-display/lib/animators/IAnimator" { + import IAsset = require("awayjs-core/lib/library/IAsset"); + import IAnimationSet = require("awayjs-display/lib/animators/IAnimationSet"); + import SubGeometryBase = require("awayjs-display/lib/base/SubGeometryBase"); + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import IEntity = require("awayjs-display/lib/entities/IEntity"); + /** + * Provides an interface for animator classes that control animation output from a data set subtype of AnimationSetBase. + * + * @see away.animators.IAnimationSet + */ + interface IAnimator extends IAsset { /** - * @private + * */ - private notifySceneChange(); + animationSet: IAnimationSet; /** - * @private + * */ - private notifySceneTransformChange(); + clone(): IAnimator; /** - * Invalidates the 3D transformation matrix, causing it to be updated upon the next request * - * @private */ - private invalidateMatrix3D(); + dispose(): any; /** + * Used by the entity object to which the animator is applied, registers the owner for internal use. + * * @private */ - private invalidatePartition(); + addOwner(mesh: IEntity): any; /** + * Used by the mesh object from which the animator is removed, unregisters the owner for internal use. + * * @private */ - private invalidatePivot(); + removeOwner(mesh: IEntity): any; /** - * @private + * //TODO + * + * @param sourceSubGeometry */ - private invalidatePosition(); + getRenderableSubGeometry(renderable: IRenderable, sourceSubGeometry: SubGeometryBase): SubGeometryBase; + } + export = IAnimator; + +} +declare module "awayjs-display/lib/base/CapsStyle" { + /** + * The CapsStyle class is an enumeration of constant values that specify the + * caps style to use in drawing lines. The constants are provided for use as + * values in the caps parameter of the + * flash.display.Graphics.lineStyle() method. You can specify the + * following three types of caps: + */ + class CapsStyle { /** - * @private + * Used to specify round caps in the caps parameter of the + * flash.display.Graphics.lineStyle() method. */ - private invalidateRotation(); + static ROUND: string; /** - * @private + * Used to specify no caps in the caps parameter of the + * flash.display.Graphics.lineStyle() method. */ - private invalidateScale(); + static NONE: string; + /** + * Used to specify square caps in the caps parameter of the + * flash.display.Graphics.lineStyle() method. + */ + static SQUARE: string; } - export = DisplayObject; + export = CapsStyle; } declare module "awayjs-display/lib/base/GradientType" { @@ -7260,33 +7328,6 @@ declare module "awayjs-display/lib/controllers/SpringController" { } export = SpringController; -} -declare module "awayjs-display/lib/display/ContextMode" { - class ContextMode { - static AUTO: string; - static WEBGL: string; - static FLASH: string; - static NATIVE: string; - } - export = ContextMode; - -} -declare module "awayjs-display/lib/display/IContext" { - import Rectangle = require("awayjs-core/lib/geom/Rectangle"); - /** - * - * @class away.base.IContext - */ - interface IContext { - container: HTMLElement; - clear(red?: number, green?: number, blue?: number, alpha?: number, depth?: number, stencil?: number, mask?: number): any; - configureBackBuffer(width: number, height: number, antiAlias: number, enableDepthAndStencil?: boolean): any; - dispose(): any; - present(): any; - setScissorRectangle(rect: Rectangle): any; - } - export = IContext; - } declare module "awayjs-display/lib/pick/IPicker" { import Vector3D = require("awayjs-core/lib/geom/Vector3D"); @@ -7518,7 +7559,7 @@ declare module "awayjs-display/lib/entities/LineSegment" { import DisplayObject = require("awayjs-display/lib/base/DisplayObject"); import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); import EntityNode = require("awayjs-display/lib/partition/EntityNode"); - import IRenderer = require("awayjs-display/lib/render/IRenderer"); + import IRendererPool = require("awayjs-display/lib/pool/IRendererPool"); import IEntity = require("awayjs-display/lib/entities/IEntity"); import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); /** @@ -7586,8 +7627,8 @@ declare module "awayjs-display/lib/entities/LineSegment" { * @private */ private notifyRenderableUpdate(); - _iCollectRenderables(renderer: IRenderer): void; - _iCollectRenderable(renderer: IRenderer): void; + _iCollectRenderables(rendererPool: IRendererPool): void; + _iCollectRenderable(rendererPool: IRendererPool): void; } export = LineSegment; @@ -8130,169 +8171,78 @@ declare module "awayjs-display/lib/containers/View" { /** * */ - y: number; - /** - * - */ - visible: boolean; - /** - * - * @returns {number} - */ - renderedFacesCount: number; - /** - * Renders the view. - */ - render(): void; - /** - * - */ - pUpdateTime(): void; - /** - * - */ - dispose(): void; - /** - * - */ - iEntityCollector: ICollector; - /** - * - */ - private onProjectionChanged(event); - /** - * - */ - private onViewportUpdated(event); - /** - * - */ - private onScissorUpdated(event); - project(point3d: Vector3D): Vector3D; - unproject(sX: number, sY: number, sZ: number): Vector3D; - getRay(sX: number, sY: number, sZ: number): Vector3D; - forceMouseMove: boolean; - updateCollider(): void; - } - export = View; - -} -declare module "awayjs-display/lib/errors/CastError" { - import Error = require("awayjs-core/lib/errors/Error"); - class CastError extends Error { - constructor(message: string); - } - export = CastError; - -} -declare module "awayjs-display/lib/events/ResizeEvent" { - import Event = require("awayjs-core/lib/events/Event"); - class ResizeEvent extends Event { - static RESIZE: string; - private _oldHeight; - private _oldWidth; - constructor(type: string, oldHeight?: number, oldWidth?: number); - oldHeight: number; - oldWidth: number; - } - export = ResizeEvent; - -} -declare module "awayjs-display/lib/events/StageEvent" { - import Event = require("awayjs-core/lib/events/Event"); - class StageEvent extends Event { - static CONTEXT_CREATED: string; - static CONTEXT_DISPOSED: string; - static CONTEXT_RECREATED: string; - static VIEWPORT_UPDATED: string; - constructor(type: string); - } - export = StageEvent; - -} -declare module "awayjs-display/lib/materials/BasicMaterial" { - import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase"); - import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); - /** - * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage, - * using material methods to define their appearance. - */ - class BasicMaterial extends MaterialBase { - private _alphaBlending; - private _alpha; - /** - * Creates a new BasicMaterial object. - * - * @param texture The texture used for the material's albedo color. - * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true. - * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to false. - * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to false. - */ - constructor(texture?: Texture2DBase, smooth?: boolean, repeat?: boolean, mipmap?: boolean); - constructor(color?: number, alpha?: number); + y: number; /** - * The alpha of the surface. + * */ - alpha: number; + visible: boolean; /** - * Indicates whether or not the material has transparency. If binary transparency is sufficient, for - * example when using textures of foliage, consider using alphaThreshold instead. + * + * @returns {number} */ - alphaBlending: boolean; + renderedFacesCount: number; + /** + * Renders the view. + */ + render(): void; + /** + * + */ + pUpdateTime(): void; + /** + * + */ + dispose(): void; + /** + * + */ + iEntityCollector: ICollector; + /** + * + */ + private onProjectionChanged(event); + /** + * + */ + private onViewportUpdated(event); + /** + * + */ + private onScissorUpdated(event); + project(point3d: Vector3D): Vector3D; + unproject(sX: number, sY: number, sZ: number): Vector3D; + getRay(sX: number, sY: number, sZ: number): Vector3D; + forceMouseMove: boolean; + updateCollider(): void; } - export = BasicMaterial; + export = View; } -declare module "awayjs-display/lib/managers/DefaultMaterialManager" { - import BitmapData = require("awayjs-core/lib/base/BitmapData"); - import BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture"); - import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); - import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); - class DefaultMaterialManager { - private static _defaultBitmapData; - private static _defaultTriangleMaterial; - private static _defaultLineMaterial; - private static _defaultTexture; - static getDefaultMaterial(renderableOwner?: IRenderableOwner): MaterialBase; - static getDefaultTexture(renderableOwner?: IRenderableOwner): BitmapTexture; - private static createDefaultTexture(); - static createCheckeredBitmapData(): BitmapData; - private static createDefaultTriangleMaterial(); - private static createDefaultLineMaterial(); +declare module "awayjs-display/lib/display/ContextMode" { + class ContextMode { + static AUTO: string; + static WEBGL: string; + static FLASH: string; + static NATIVE: string; } - export = DefaultMaterialManager; + export = ContextMode; } -declare module "awayjs-display/lib/materials/LightSources" { +declare module "awayjs-display/lib/display/IContext" { + import Rectangle = require("awayjs-core/lib/geom/Rectangle"); /** - * Enumeration class for defining which lighting types affect the specific material - * lighting component (diffuse and specular). This can be useful if, for example, you - * want to use light probes for diffuse global lighting, but want specular reflections from - * traditional light sources without those affecting the diffuse light. * - * @see away.materials.ColorMaterial.diffuseLightSources - * @see away.materials.ColorMaterial.specularLightSources - * @see away.materials.TextureMaterial.diffuseLightSources - * @see away.materials.TextureMaterial.specularLightSources + * @class away.base.IContext */ - class LightSources { - /** - * Defines normal lights are to be used as the source for the lighting - * component. - */ - static LIGHTS: number; - /** - * Defines that global lighting probes are to be used as the source for the - * lighting component. - */ - static PROBES: number; - /** - * Defines that both normal and global lighting probes are to be used as the - * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES. - */ - static ALL: number; + interface IContext { + container: HTMLElement; + clear(red?: number, green?: number, blue?: number, alpha?: number, depth?: number, stencil?: number, mask?: number): any; + configureBackBuffer(width: number, height: number, antiAlias: number, enableDepthAndStencil?: boolean): any; + dispose(): any; + present(): any; + setScissorRectangle(rect: Rectangle): any; } - export = LightSources; + export = IContext; } declare module "awayjs-display/lib/entities/Shape" { @@ -9813,6 +9763,123 @@ declare module "awayjs-display/lib/entities/TimeLine" { } export = TimeLine; +} +declare module "awayjs-display/lib/events/ResizeEvent" { + import Event = require("awayjs-core/lib/events/Event"); + class ResizeEvent extends Event { + static RESIZE: string; + private _oldHeight; + private _oldWidth; + constructor(type: string, oldHeight?: number, oldWidth?: number); + oldHeight: number; + oldWidth: number; + } + export = ResizeEvent; + +} +declare module "awayjs-display/lib/events/StageEvent" { + import Event = require("awayjs-core/lib/events/Event"); + class StageEvent extends Event { + static CONTEXT_CREATED: string; + static CONTEXT_DISPOSED: string; + static CONTEXT_RECREATED: string; + static VIEWPORT_UPDATED: string; + constructor(type: string); + } + export = StageEvent; + +} +declare module "awayjs-display/lib/errors/CastError" { + import Error = require("awayjs-core/lib/errors/Error"); + class CastError extends Error { + constructor(message: string); + } + export = CastError; + +} +declare module "awayjs-display/lib/materials/BasicMaterial" { + import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase"); + import IRenderObjectOwner = require("awayjs-display/lib/base/IRenderObjectOwner"); + import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); + import IRenderablePool = require("awayjs-display/lib/pool/IRenderablePool"); + import IRenderObject = require("awayjs-display/lib/pool/IRenderObject"); + /** + * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage, + * using material methods to define their appearance. + */ + class BasicMaterial extends MaterialBase implements IRenderObjectOwner { + /** + * Creates a new BasicMaterial object. + * + * @param texture The texture used for the material's albedo color. + * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true. + * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to false. + * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to false. + */ + constructor(texture?: Texture2DBase, smooth?: boolean, repeat?: boolean, mipmap?: boolean); + constructor(color?: number, alpha?: number); + /** + * + * @param renderer + * + * @internal + */ + getRenderObject(renderablePool: IRenderablePool): IRenderObject; + } + export = BasicMaterial; + +} +declare module "awayjs-display/lib/managers/DefaultMaterialManager" { + import BitmapData = require("awayjs-core/lib/base/BitmapData"); + import BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture"); + import IRenderableOwner = require("awayjs-display/lib/base/IRenderableOwner"); + import MaterialBase = require("awayjs-display/lib/materials/MaterialBase"); + class DefaultMaterialManager { + private static _defaultBitmapData; + private static _defaultTriangleMaterial; + private static _defaultLineMaterial; + private static _defaultTexture; + static getDefaultMaterial(renderableOwner?: IRenderableOwner): MaterialBase; + static getDefaultTexture(renderableOwner?: IRenderableOwner): BitmapTexture; + private static createDefaultTexture(); + static createCheckeredBitmapData(): BitmapData; + private static createDefaultTriangleMaterial(); + private static createDefaultLineMaterial(); + } + export = DefaultMaterialManager; + +} +declare module "awayjs-display/lib/materials/LightSources" { + /** + * Enumeration class for defining which lighting types affect the specific material + * lighting component (diffuse and specular). This can be useful if, for example, you + * want to use light probes for diffuse global lighting, but want specular reflections from + * traditional light sources without those affecting the diffuse light. + * + * @see away.materials.ColorMaterial.diffuseLightSources + * @see away.materials.ColorMaterial.specularLightSources + * @see away.materials.TextureMaterial.diffuseLightSources + * @see away.materials.TextureMaterial.specularLightSources + */ + class LightSources { + /** + * Defines normal lights are to be used as the source for the lighting + * component. + */ + static LIGHTS: number; + /** + * Defines that global lighting probes are to be used as the source for the + * lighting component. + */ + static PROBES: number; + /** + * Defines that both normal and global lighting probes are to be used as the + * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES. + */ + static ALL: number; + } + export = LightSources; + } declare module "awayjs-display/lib/pool/CSSSkyboxRenderable" { import CSSRenderableBase = require("awayjs-display/lib/pool/CSSRenderableBase"); @@ -10377,6 +10444,19 @@ declare module "awayjs-display/lib/render/CSSDefaultRenderer" { } export = CSSDefaultRenderer; +} +declare module "awayjs-display/lib/sort/RenderableMergeSort" { + import IRenderable = require("awayjs-display/lib/pool/IRenderable"); + import IEntitySorter = require("awayjs-display/lib/sort/IEntitySorter"); + /** + * @class away.sort.RenderableMergeSort + */ + class RenderableMergeSort implements IEntitySorter { + sortBlendedRenderables(head: IRenderable): IRenderable; + sortOpaqueRenderables(head: IRenderable): IRenderable; + } + export = RenderableMergeSort; + } declare module "awayjs-display/lib/text/TextFormatAlign" { /** @@ -10431,19 +10511,6 @@ declare module "awayjs-display/lib/utils/Cast" { } export = Cast; -} -declare module "awayjs-display/lib/sort/RenderableMergeSort" { - import IRenderable = require("awayjs-display/lib/pool/IRenderable"); - import IEntitySorter = require("awayjs-display/lib/sort/IEntitySorter"); - /** - * @class away.sort.RenderableMergeSort - */ - class RenderableMergeSort implements IEntitySorter { - sortBlendedRenderables(head: IRenderable): IRenderable; - sortOpaqueRenderables(head: IRenderable): IRenderable; - } - export = RenderableMergeSort; - } declare module "awayjs-display/lib/materials/lightpickers/StaticLightPicker" { import LightPickerBase = require("awayjs-display/lib/materials/lightpickers/LightPickerBase"); diff --git a/build/awayjs-display.js b/build/awayjs-display.js index a038896d4..6c24cc9a2 100755 --- a/build/awayjs-display.js +++ b/build/awayjs-display.js @@ -3855,8 +3855,8 @@ var LineSubMesh = (function (_super) { this.material = null; _super.prototype.dispose.call(this); }; - LineSubMesh.prototype._iCollectRenderable = function (renderer) { - renderer.applyLineSubMesh(this); + LineSubMesh.prototype._iCollectRenderable = function (rendererPool) { + rendererPool.applyLineSubMesh(this); }; return LineSubMesh; })(SubMeshBase); @@ -4498,7 +4498,7 @@ var SubMeshBase = (function (_super) { for (var i = 0; i < len; i++) this._renderables[i].invalidateGeometry(); }; - SubMeshBase.prototype._iCollectRenderable = function (renderer) { + SubMeshBase.prototype._iCollectRenderable = function (rendererPool) { throw new AbstractMethodError(); }; SubMeshBase.prototype._iGetExplicitMaterial = function () { @@ -6114,8 +6114,8 @@ var TriangleSubMesh = (function (_super) { TriangleSubMesh.prototype.dispose = function () { _super.prototype.dispose.call(this); }; - TriangleSubMesh.prototype._iCollectRenderable = function (renderer) { - renderer.applyTriangleSubMesh(this); + TriangleSubMesh.prototype._iCollectRenderable = function (rendererPool) { + rendererPool.applyTriangleSubMesh(this); }; return TriangleSubMesh; })(SubMeshBase); @@ -8751,16 +8751,16 @@ var Billboard = (function (_super) { for (var i = 0; i < len; i++) this._pRenderables[i].invalidateVertexData("vertices"); }; - Billboard.prototype._iCollectRenderables = function (renderer) { + Billboard.prototype._iCollectRenderables = function (rendererPool) { // Since this getter is invoked every iteration of the render loop, and // the prefab construct could affect the sub-meshes, the prefab is // validated here to give it a chance to rebuild. if (this._iSourcePrefab) this._iSourcePrefab._iValidate(); - this._iCollectRenderable(renderer); + this._iCollectRenderable(rendererPool); }; - Billboard.prototype._iCollectRenderable = function (renderer) { - renderer.applyBillboard(this); + Billboard.prototype._iCollectRenderable = function (rendererPool) { + rendererPool.applyBillboard(this); }; return Billboard; })(DisplayObject); @@ -9003,15 +9003,15 @@ var Camera = (function (_super) { Camera.prototype.unproject = function (nX, nY, sZ) { return this.sceneTransform.transformVector(this._projection.unproject(nX, nY, sZ)); }; - Camera.prototype._iCollectRenderables = function (renderer) { + Camera.prototype._iCollectRenderables = function (rendererPool) { // Since this getter is invoked every iteration of the render loop, and // the prefab construct could affect the sub-meshes, the prefab is // validated here to give it a chance to rebuild. if (this._iSourcePrefab) this._iSourcePrefab._iValidate(); - this._iCollectRenderable(renderer); + this._iCollectRenderable(rendererPool); }; - Camera.prototype._iCollectRenderable = function (renderer) { + Camera.prototype._iCollectRenderable = function (rendererPool) { //nothing to do here }; return Camera; @@ -9146,7 +9146,7 @@ var DirectionalLight = (function (_super) { target.prepend(m); return target; }; - DirectionalLight.prototype._iCollectRenderables = function (renderer) { + DirectionalLight.prototype._iCollectRenderables = function (rendererPool) { //nothing to do here }; return DirectionalLight; @@ -9217,7 +9217,7 @@ var LightProbe = (function (_super) { if (target === void 0) { target = null; } throw new Error("Object projection matrices are not supported for LightProbe objects!"); }; - LightProbe.prototype._iCollectRenderables = function (renderer) { + LightProbe.prototype._iCollectRenderables = function (rendererPool) { //nothing to do here }; return LightProbe; @@ -9398,15 +9398,15 @@ var LineSegment = (function (_super) { for (var i = 0; i < len; i++) this._pRenderables[i].invalidateVertexData("vertices"); }; - LineSegment.prototype._iCollectRenderables = function (renderer) { + LineSegment.prototype._iCollectRenderables = function (rendererPool) { // Since this getter is invoked every iteration of the render loop, and // the prefab construct could affect the sub-meshes, the prefab is // validated here to give it a chance to rebuild. if (this._iSourcePrefab) this._iSourcePrefab._iValidate(); - this._iCollectRenderable(renderer); + this._iCollectRenderable(rendererPool); }; - LineSegment.prototype._iCollectRenderable = function (renderer) { + LineSegment.prototype._iCollectRenderable = function (rendererPool) { //TODO }; return LineSegment; @@ -9805,7 +9805,7 @@ var Mesh = (function (_super) { * * @internal */ - Mesh.prototype._iCollectRenderables = function (renderer) { + Mesh.prototype._iCollectRenderables = function (rendererPool) { // Since this getter is invoked every iteration of the render loop, and // the prefab construct could affect the sub-meshes, the prefab is // validated here to give it a chance to rebuild. @@ -9813,7 +9813,7 @@ var Mesh = (function (_super) { this._iSourcePrefab._iValidate(); var len = this._subMeshes.length; for (var i = 0; i < len; i++) - this._subMeshes[i]._iCollectRenderable(renderer); + this._subMeshes[i]._iCollectRenderable(rendererPool); }; Mesh.prototype._iInvalidateRenderableGeometries = function () { var len = this._subMeshes.length; @@ -9934,7 +9934,7 @@ var PointLight = (function (_super) { target.prepend(m); return target; }; - PointLight.prototype._iCollectRenderables = function (renderer) { + PointLight.prototype._iCollectRenderables = function (rendererPool) { //nothing to do here }; return PointLight; @@ -10042,7 +10042,7 @@ var Skybox = (function (_super) { if (this._pAlphaThreshold == value) return; this._pAlphaThreshold = value; - this._pInvalidateProperties(); + this._pIinvalidatePasses(); }, enumerable: true, configurable: true @@ -10058,7 +10058,7 @@ var Skybox = (function (_super) { if (this._mipmap == value) return; this._mipmap = value; - this._pInvalidateProperties(); + this._pIinvalidatePasses(); }, enumerable: true, configurable: true @@ -10074,7 +10074,7 @@ var Skybox = (function (_super) { if (this._smooth == value) return; this._smooth = value; - this._pInvalidateProperties(); + this._pIinvalidatePasses(); }, enumerable: true, configurable: true @@ -10135,10 +10135,10 @@ var Skybox = (function (_super) { * * @private */ - Skybox.prototype._pInvalidateProperties = function () { + Skybox.prototype._pIinvalidatePasses = function () { var len = this._renderObjects.length; for (var i = 0; i < len; i++) - this._renderObjects[i].invalidateProperties(); + this._renderObjects[i].invalidatePasses(); }; Object.defineProperty(Skybox.prototype, "iOwners", { /** @@ -10241,10 +10241,10 @@ var Skybox = (function (_super) { this._renderables[i].dispose(); this._renderables = new Array(); }; - Skybox.prototype._iCollectRenderables = function (renderer) { + Skybox.prototype._iCollectRenderables = function (rendererPool) { //skybox do not get collected in the standard entity list }; - Skybox.prototype._iCollectRenderable = function (renderer) { + Skybox.prototype._iCollectRenderable = function (rendererPool) { }; Skybox.prototype._iAddRenderObject = function (renderObject) { this._renderObjects.push(renderObject); @@ -11876,6 +11876,58 @@ var MouseEvent = (function (_super) { module.exports = MouseEvent; +},{"awayjs-core/lib/events/Event":undefined}],"awayjs-display/lib/events/RenderableOwnerEvent":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var Event = require("awayjs-core/lib/events/Event"); +/** + * Dispatched to notify changes in a sub geometry object's state. + * + * @class away.events.RenderableOwnerEvent + * @see away.core.base.Geometry + */ +var RenderableOwnerEvent = (function (_super) { + __extends(RenderableOwnerEvent, _super); + /** + * Create a new GeometryEvent + * @param type The event type. + * @param dataType An optional data type of the vertex data being updated. + */ + function RenderableOwnerEvent(type, renderObjectOwner) { + _super.call(this, type); + this._renderObjectOwner = renderObjectOwner; + } + Object.defineProperty(RenderableOwnerEvent.prototype, "renderObjectOwner", { + /** + * The renderobject owner of the renderable owner. + */ + get: function () { + return this._renderObjectOwner; + }, + enumerable: true, + configurable: true + }); + /** + * Clones the event. + * + * @return An exact duplicate of the current object. + */ + RenderableOwnerEvent.prototype.clone = function () { + return new RenderableOwnerEvent(this.type, this._renderObjectOwner); + }; + /** + * Dispatched when a Renderable owners's render object owner has been updated. + */ + RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED = "renderObjectOwnerUpdated"; + return RenderableOwnerEvent; +})(Event); +module.exports = RenderableOwnerEvent; + + },{"awayjs-core/lib/events/Event":undefined}],"awayjs-display/lib/events/RendererEvent":[function(require,module,exports){ var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; @@ -12346,8 +12398,6 @@ var BasicMaterial = (function (_super) { if (repeat === void 0) { repeat = false; } if (mipmap === void 0) { mipmap = false; } _super.call(this); - this._alphaBlending = false; - this._alpha = 1; if (textureColor instanceof Texture2DBase) { this.texture = textureColor; this.smooth = (smoothAlpha == null) ? true : false; @@ -12359,43 +12409,15 @@ var BasicMaterial = (function (_super) { this.alpha = (smoothAlpha == null) ? 1 : Number(smoothAlpha); } } - Object.defineProperty(BasicMaterial.prototype, "alpha", { - /** - * The alpha of the surface. - */ - get: function () { - return this._alpha; - }, - set: function (value) { - if (value > 1) - value = 1; - else if (value < 0) - value = 0; - if (this._alpha == value) - return; - this._alpha = value; - this._pInvalidateProperties(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BasicMaterial.prototype, "alphaBlending", { - /** - * Indicates whether or not the material has transparency. If binary transparency is sufficient, for - * example when using textures of foliage, consider using alphaThreshold instead. - */ - get: function () { - return this._alphaBlending; - }, - set: function (value) { - if (this._alphaBlending == value) - return; - this._alphaBlending = value; - this._pInvalidateProperties(); - }, - enumerable: true, - configurable: true - }); + /** + * + * @param renderer + * + * @internal + */ + BasicMaterial.prototype.getRenderObject = function (renderablePool) { + return renderablePool.getMaterialRenderObject(this); + }; return BasicMaterial; })(MaterialBase); module.exports = BasicMaterial; @@ -12530,10 +12552,14 @@ var __extends = this.__extends || function (d, b) { __.prototype = b.prototype; d.prototype = new __(); }; +var ColorTransform = require("awayjs-core/lib/geom/ColorTransform"); +var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError"); var Event = require("awayjs-core/lib/events/Event"); +var AssetType = require("awayjs-core/lib/library/AssetType"); var NamedAssetBase = require("awayjs-core/lib/library/NamedAssetBase"); var BlendMode = require("awayjs-display/lib/base/BlendMode"); var MaterialEvent = require("awayjs-display/lib/events/MaterialEvent"); +var RenderableOwnerEvent = require("awayjs-display/lib/events/RenderableOwnerEvent"); /** * MaterialBase forms an abstract base class for any material. * A material consists of several passes, each of which constitutes at least one render call. Several passes could @@ -12553,6 +12579,8 @@ var MaterialBase = (function (_super) { function MaterialBase() { var _this = this; _super.call(this); + this._alphaBlending = false; + this._alpha = 1; this._renderObjects = new Array(); this._pAlphaThreshold = 0; this._pAnimateUVs = false; @@ -12579,6 +12607,71 @@ var MaterialBase = (function (_super) { this._onLightChangeDelegate = function (event) { return _this.onLightsChange(event); }; this.alphaPremultiplied = false; //TODO: work out why this is different for WebGL } + Object.defineProperty(MaterialBase.prototype, "assetType", { + /** + * + */ + get: function () { + return AssetType.MATERIAL; + ; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MaterialBase.prototype, "alpha", { + /** + * The alpha of the surface. + */ + get: function () { + return this._alpha; + }, + set: function (value) { + if (value > 1) + value = 1; + else if (value < 0) + value = 0; + if (this._alpha == value) + return; + this._alpha = value; + if (this._colorTransform == null) + this._colorTransform = new ColorTransform(); + this._colorTransform.alphaMultiplier = value; + this._pInvalidateRenderObject(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MaterialBase.prototype, "colorTransform", { + /** + * The ColorTransform object to transform the colour of the material with. Defaults to null. + */ + get: function () { + return this._colorTransform; + }, + set: function (value) { + this._colorTransform = value; + this._pInvalidateRenderObject(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MaterialBase.prototype, "alphaBlending", { + /** + * Indicates whether or not the material has transparency. If binary transparency is sufficient, for + * example when using textures of foliage, consider using alphaThreshold instead. + */ + get: function () { + return this._alphaBlending; + }, + set: function (value) { + if (this._alphaBlending == value) + return; + this._alphaBlending = value; + this._pInvalidateRenderObject(); + }, + enumerable: true, + configurable: true + }); Object.defineProperty(MaterialBase.prototype, "height", { /** * @@ -12633,7 +12726,7 @@ var MaterialBase = (function (_super) { if (this._mipmap == value) return; this._mipmap = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12649,7 +12742,7 @@ var MaterialBase = (function (_super) { if (this._smooth == value) return; this._smooth = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12666,7 +12759,7 @@ var MaterialBase = (function (_super) { if (this._repeat == value) return; this._repeat = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12682,7 +12775,7 @@ var MaterialBase = (function (_super) { if (this._color == value) return; this._color = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12698,7 +12791,7 @@ var MaterialBase = (function (_super) { if (this._pTexture == value) return; this._pTexture = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); this._pHeight = this._pTexture.height; this._pWidth = this._pTexture.width; this._pNotifySizeChanged(); @@ -12717,7 +12810,7 @@ var MaterialBase = (function (_super) { if (this._pAnimateUVs == value) return; this._pAnimateUVs = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12734,7 +12827,7 @@ var MaterialBase = (function (_super) { if (this._enableLightFallOff == value) return; this._enableLightFallOff = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12753,7 +12846,7 @@ var MaterialBase = (function (_super) { if (this._diffuseLightSources == value) return; this._diffuseLightSources = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12772,7 +12865,7 @@ var MaterialBase = (function (_super) { if (this._specularLightSources == value) return; this._specularLightSources = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12800,7 +12893,7 @@ var MaterialBase = (function (_super) { if (this._bothSides = value) return; this._bothSides = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12841,7 +12934,7 @@ var MaterialBase = (function (_super) { if (this._alphaPremultiplied == value) return; this._alphaPremultiplied = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12863,7 +12956,7 @@ var MaterialBase = (function (_super) { if (this._pAlphaThreshold == value) return; this._pAlphaThreshold = value; - this._pInvalidateProperties(); + this._pInvalidatePasses(); }, enumerable: true, configurable: true @@ -12907,6 +13000,7 @@ var MaterialBase = (function (_super) { } } } + owner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this)); }; /** * Removes an IRenderableOwner as owner. @@ -12920,6 +13014,7 @@ var MaterialBase = (function (_super) { this._animationSet = null; this.invalidateAnimation(); } + owner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this)); }; Object.defineProperty(MaterialBase.prototype, "iOwners", { /** @@ -12938,10 +13033,10 @@ var MaterialBase = (function (_super) { * * @private */ - MaterialBase.prototype._pInvalidateProperties = function () { + MaterialBase.prototype._pInvalidatePasses = function () { var len = this._renderObjects.length; for (var i = 0; i < len; i++) - this._renderObjects[i].invalidateProperties(); + this._renderObjects[i].invalidatePasses(); }; MaterialBase.prototype.invalidateAnimation = function () { var len = this._renderObjects.length; @@ -12979,14 +13074,14 @@ var MaterialBase = (function (_super) { * @internal */ MaterialBase.prototype.getRenderObject = function (renderablePool) { - return renderablePool.getMaterialRenderObject(this); + throw new AbstractMethodError(); }; return MaterialBase; })(NamedAssetBase); module.exports = MaterialBase; -},{"awayjs-core/lib/events/Event":undefined,"awayjs-core/lib/library/NamedAssetBase":undefined,"awayjs-display/lib/base/BlendMode":undefined,"awayjs-display/lib/events/MaterialEvent":undefined}],"awayjs-display/lib/materials/lightpickers/LightPickerBase":[function(require,module,exports){ +},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/Event":undefined,"awayjs-core/lib/geom/ColorTransform":undefined,"awayjs-core/lib/library/AssetType":undefined,"awayjs-core/lib/library/NamedAssetBase":undefined,"awayjs-display/lib/base/BlendMode":undefined,"awayjs-display/lib/events/MaterialEvent":undefined,"awayjs-display/lib/events/RenderableOwnerEvent":undefined}],"awayjs-display/lib/materials/lightpickers/LightPickerBase":[function(require,module,exports){ var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; function __() { this.constructor = d; } @@ -14886,6 +14981,10 @@ module.exports = EntityListItem; +},{}],"awayjs-display/lib/pool/IRendererPool":[function(require,module,exports){ + + + },{}],"awayjs-display/lib/prefabs/PrefabBase":[function(require,module,exports){ var __extends = this.__extends || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; diff --git a/build/awayjs-display.js.map b/build/awayjs-display.js.map index edd931164..3f248235c 100644 --- a/build/awayjs-display.js.map +++ b/build/awayjs-display.js.map @@ -73,6 +73,7 @@ "awayjs-display/lib/events/lightevent.ts", "awayjs-display/lib/events/materialevent.ts", "awayjs-display/lib/events/mouseevent.ts", + "awayjs-display/lib/events/renderableownerevent.ts", "awayjs-display/lib/events/rendererevent.ts", "awayjs-display/lib/events/resizeevent.ts", "awayjs-display/lib/events/sceneevent.ts", @@ -113,6 +114,7 @@ "awayjs-display/lib/pool/irenderobject.ts", "awayjs-display/lib/pool/irenderablepool.ts", "awayjs-display/lib/pool/irenderable.ts", + "awayjs-display/lib/pool/irendererpool.ts", "awayjs-display/lib/prefabs/prefabbase.ts", "awayjs-display/lib/prefabs/primitivecapsuleprefab.ts", "awayjs-display/lib/prefabs/primitiveconeprefab.ts", @@ -145,7 +147,7 @@ "awayjs-display/lib/utils/cast.ts" ], "names": [], - "mappings": "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", + "mappings": "AAAA;ACiDuB;;;;ACEJ;;;;;;;;;;ACnDnB,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAEnE,IAAO,cAAc,WAAa,wCAAwC,CAAC,CAAC;AAE5E,AAGA;;GADG;IACG,iBAAiB;IAAS,UAA1B,iBAAiB,UAAuB;IAS7C;;OAEG;IACH,SAZK,iBAAiB;QAcrB,iBAAO,CAAC;IACT,CAAC;IAXD,sBAAW,yCAAU;aAArB;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAUD;;OAEG;IACI,mCAAO,GAAd;IAEA,CAAC;IAKD,sBAAW,wCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;QACjC,CAAC;;;OAAA;IACF,wBAAC;AAAD,CA/BA,AA+BC,EA/B+B,cAAc,EA+B7C;AAED,AAA2B,iBAAlB,iBAAiB,CAAC;;;;ACxC3B,AAGA;;GADG;IACG,aAAa;IAAnB,SAAM,aAAa;IAWnB,CAAC;IATA;;OAEG;IACW,gCAAkB,GAAU,mBAAmB,CAAC;IAE9D;;OAEG;IACW,yBAAW,GAAU,OAAO,CAAC;IAC5C,oBAAC;AAAD,CAXA,AAWC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;AChBvB,AAUA;;;;;;;;;GADG;IACG,SAAS;IAAf,SAAM,SAAS;IAiLf,CAAC;IA/KA;;;;;;;;;OASG;IACW,aAAG,GAAU,KAAK,CAAC;IAEjC;;;;;;;OAOG;IACW,eAAK,GAAU,OAAO,CAAC;IAErC;;;;;;;;;;;OAWG;IACW,gBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;;;OAUG;IACW,oBAAU,GAAU,YAAY,CAAC;IAE/C;;;;;;OAMG;IACW,eAAK,GAAU,OAAO,CAAC;IAErC;;;;;;;;;OASG;IACW,mBAAS,GAAU,WAAW,CAAC;IAE7C;;OAEG;IACW,gBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;;OASG;IACW,eAAK,GAAU,OAAO,CAAC;IAErC;;;;;;;;;;;OAWG;IACW,iBAAO,GAAU,SAAS,CAAC;IAEzC;;;;;;;;;;;;OAYG;IACW,kBAAQ,GAAU,UAAU,CAAC;IAE3C;;;;OAIG;IACW,gBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;;OASG;IACW,iBAAO,GAAU,SAAS,CAAC;IAEzC;;;;;OAKG;IACW,gBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;;;;;;;;;;;OAkBG;IACW,gBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;;OASG;IACW,kBAAQ,GAAU,UAAU,CAAC;IAC5C,gBAAC;AAAD,CAjLA,AAiLC,IAAA;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;AC7LnB,AAOA;;;;;;GADG;IACG,SAAS;IAAf,SAAM,SAAS;IAmBf,CAAC;IAjBA;;;OAGG;IACW,eAAK,GAAU,OAAO,CAAC;IAErC;;;OAGG;IACW,cAAI,GAAU,MAAM,CAAC;IAEnC;;;OAGG;IACW,gBAAM,GAAU,QAAQ,CAAC;IACxC,gBAAC;AAAD,CAnBA,AAmBC,IAAA;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;;;;;;;AC5BnB,IAAO,sBAAsB,WAAW,+CAA+C,CAAC,CAAC;AAEzF,IAAO,UAAU,WAAc,iCAAiC,CAAC,CAAC;AAClE,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAC/D,IAAO,aAAa,WAAa,oCAAoC,CAAC,CAAC;AACvE,IAAO,KAAK,WAAe,4BAA4B,CAAC,CAAC;AAEzD,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAC/D,IAAO,cAAc,WAAa,wCAAwC,CAAC,CAAC;AAC5E,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAKpF,IAAO,aAAa,WAAa,uCAAuC,CAAC,CAAC;AAG1E,IAAO,eAAe,WAAa,yCAAyC,CAAC,CAAC;AAE9E,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAInE,IAAO,kBAAkB,WAAY,4CAA4C,CAAC,CAAC;AAGnF,IAAO,kBAAkB,WAAY,8CAA8C,CAAC,CAAC;AACrF,IAAO,UAAU,WAAc,sCAAsC,CAAC,CAAC;AAGvE,AAiIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,aAAa;IAAS,UAAtB,aAAa,UAAuB;IAupCzC;;OAEG;IACH,SA1pCK,aAAa;QA4pCjB,iBAAO,CAAC;QA9oCF,qBAAgB,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC3C,0BAAqB,GAAW,IAAI,CAAC;QAUpC,cAAS,GAAY,IAAI,QAAQ,EAAE,CAAC;QACpC,mBAAc,GAAW,IAAI,CAAC;QAE9B,2BAAsB,GAAY,IAAI,QAAQ,EAAE,CAAC;QACjD,gCAA2B,GAAW,IAAI,CAAC;QAC3C,mBAAc,GAAY,IAAI,QAAQ,EAAE,CAAC;QACzC,wBAAmB,GAAW,IAAI,CAAC;QACnC,wBAAmB,GAAW,IAAI,CAAC;QACpC,yBAAoB,GAAW,IAAI,CAAC;QACnC,0BAAqB,GAAW,IAAI,CAAC;QACtC,2BAAsB,GAAW,IAAI,CAAC;QAIrC,mBAAc,GAAW,IAAI,CAAC;QAC9B,mBAAc,GAAW,IAAI,CAAC;QAC9B,gBAAW,GAAW,IAAI,CAAC;QAM3B,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QACtB,YAAO,GAAY,IAAI,QAAQ,EAAE,CAAC;QAClC,WAAM,GAAY,IAAI,QAAQ,EAAE,CAAC;QAKjC,aAAQ,GAAU,CAAC,CAAC;QAErB,aAAQ,GAAU,CAAC,CAAC;QACpB,aAAQ,GAAU,CAAC,CAAC;QACpB,aAAQ,GAAU,CAAC,CAAC;QACnB,OAAE,GAAU,CAAC,CAAC;QACd,OAAE,GAAU,CAAC,CAAC;QACd,OAAE,GAAU,CAAC,CAAC;QACd,WAAM,GAAY,IAAI,QAAQ,EAAE,CAAC;QACjC,uBAAkB,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC7C,eAAU,GAAW,IAAI,CAAC;QAC1B,gBAAW,GAAW,IAAI,CAAC;QAC3B,SAAI,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC/B,SAAI,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC/B,SAAI,GAAY,IAAI,QAAQ,EAAE,CAAC;QAGhC,sBAAiB,GAAW,KAAK,CAAC;QAOlC,oBAAe,GAAW,IAAI,CAAC;QAE9B,wBAAmB,GAAW,IAAI,CAAC;QAIpC,kBAAa,GAAsB,IAAI,KAAK,EAAe,CAAC;QAInE;;WAEG;QACI,kBAAa,GAAU,aAAa,CAAC,kBAAkB,CAAC;QAyH/D;;WAEG;QACI,iBAAY,GAAW,IAAI,CAAC;QA2VnC;;WAEG;QACI,oBAAe,GAAU,eAAe,CAAC,OAAO,CAAC;QAumBvD,AAGA,uDAHuD;QACvD,wDAAwD;QAExD,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,CAAW,CAAC,CAAC,EAAC,wDAAwD;QAE3G,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAEzC,AACA,yCADyC;QACzC,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAE1B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACzD,CAAC;IA7iCD,sBAAW,iCAAM;QAHjB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,KAAwB;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;gBAC1B,MAAM,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAElC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC7C,CAAC;;;OAfA;IA2FD,sBAAW,gCAAK;QAVhB;;;;;;;;;WASG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,GAAU;YAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAE3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAZA;IAiBD,sBAAW,iCAAM;QAHjB;;WAEG;aACH;YAEC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAE/D,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAc;YAE/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAC,UAAU,CAAC,kBAAkB,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAC,UAAU,CAAC,kBAAkB,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAExD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OATA;IA2GD,sBAAW,iCAAM;QA3FjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8EG;QACJ,kCAAkC;QAEjC;;;;;;;;;WASG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,GAAU;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC;gBACvB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC;YAEpB,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAE5C,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAZA;IAsBD,sBAAW,gCAAK;QARhB;;;;;;;WAOG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,CAAC,CAAC,CAAC;QACV,CAAC;;;OAAA;IAKD,sBAAW,gDAAqB;QAHhC;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBACtC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1D,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC;gBACrC,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;YAC1C,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACpC,CAAC;;;OAAA;IAKD,sBAAW,0CAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;aAED,UAA2B,KAAa;YAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC;gBACnC,MAAM,CAAC;YAER,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAE/B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAClC,CAAC;;;OAfA;IAoBD,sBAAW,mCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAcD,sBAAW,qCAAU;QAbrB;;;;;;;;;;;;WAYG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IAmDD,sBAAW,uCAAY;QAhBvB;;;;;;;;;;;;;;;WAeG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACnC,CAAC;aAED,UAAwB,KAAa;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC;gBACvC,MAAM,CAAC;YAER,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAEnC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QACtF,CAAC;;;OAVA;IAoBD,sBAAW,iCAAM;QAPjB;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IASD,sBAAW,iCAAM;QAPjB;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAiCD,sBAAW,iCAAM;QAdjB;;;;;;;;;;;;;WAaG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAKD,sBAAW,oCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;aAED,UAAqB,KAAe;YAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;gBACpC,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE5D,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAExC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;QACzF,CAAC;;;OAhBA;IAqBD,sBAAW,wCAAa;QAHxB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAEzD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,0CAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;aAED,UAA2B,KAAsB;YAEhD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAChC,CAAC;;;OALA;IAUD,sBAAW,gCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAGD,UAAiB,KAAc;YAE9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAE5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAoCD,sBAAW,+BAAI;QA1Bf;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;;;OAAA;IAmBD,sBAAW,oCAAS;QAPpB;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;QACtD,CAAC;aAED,UAAqB,GAAU;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,GAAG,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAEpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAmBD,sBAAW,oCAAS;QAPpB;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;QACtD,CAAC;aAED,UAAqB,GAAU;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,GAAG,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAEpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAmBD,sBAAW,oCAAS;QAPpB;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAC,UAAU,CAAC,kBAAkB,CAAC;QACtD,CAAC;aAED,UAAqB,GAAU;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,GAAG,GAAC,UAAU,CAAC,kBAAkB,CAAC;YAEpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAwED,sBAAW,iCAAM;QARjB;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,GAAU;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAVA;IAoBD,sBAAW,iCAAM;QARjB;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,GAAU;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAVA;IAqBD,sBAAW,iCAAM;QATjB;;;;;;;;WAQG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,GAAU;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAVA;IAeD,sBAAW,gCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAKD,sBAAW,wCAAa;QAHxB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;oBACzE,IAAI,UAAU,GAAY,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAC5H,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBAExE,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAED,sBAAW,yCAAc;aAAzB;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;gBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE9B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;;;OAAA;IA6BD,sBAAW,+CAAoB;QAH/B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACnC,CAAC;;;OAAA;IAKD,sBAAW,wCAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAyB,KAAa;YAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3C,CAAC;;;OAVA;IAkDD,sBAAW,oCAAS;QAtCpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqCG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAOD,sBAAW,kCAAO;QALlB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;aAED,UAAmB,KAAa;YAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;gBACrC,MAAM,CAAC;YAER,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;QACpF,CAAC;;;OAVA;IAsBD,sBAAW,gCAAK;QAVhB;;;;;;;;;WASG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,GAAU;YAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAE3C,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAZA;IAiBD,sBAAW,sCAAW;QAHtB;;WAEG;aACH;YAEC,AAGA,uEAHuE;YACvE,4EAA4E;YAC5E,iDAAiD;YACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAYD,sBAAW,4BAAC;QAVZ;;;;;;;;;WASG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,CAAC;aAED,UAAa,GAAU;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;gBAClB,MAAM,CAAC;YAER,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YAEd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAsBD,sBAAW,4BAAC;QAVZ;;;;;;;;;WASG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,CAAC;aAED,UAAa,GAAU;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;gBAClB,MAAM,CAAC;YAER,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YAEd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IA+BD,sBAAW,4BAAC;QAnBZ;;;;;;;;;;;;;;;;;;WAkBG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,CAAC;aAED,UAAa,GAAU;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;gBAClB,MAAM,CAAC;YAER,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YAEd,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAeD,sBAAW,kCAAO;QAHlB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAmB,KAAY;YAE9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,CAAC;;;OALA;IAmCD;;OAEG;IACI,wCAAgB,GAAvB,UAAwB,IAAW,EAAE,QAAiB;QAErD,gBAAK,CAAC,gBAAgB,YAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEvC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACd,KAAK,kBAAkB,CAAC,gBAAgB;gBACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBACrC,KAAK,CAAC;YACP,KAAK,kBAAkB,CAAC,gBAAgB;gBACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBACrC,KAAK,CAAC;YACP,KAAK,kBAAkB,CAAC,aAAa;gBACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,KAAK,CAAC;QACR,CAAC;IACF,CAAC;IAED;;OAEG;IACI,6BAAK,GAAZ;QAEC,IAAI,KAAK,GAAiB,IAAI,aAAa,EAAE,CAAC;QAC9C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,AACA,mCADmC;QACnC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;OAEG;IACI,+BAAO,GAAd;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM;YAC/B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,oCAAY,GAAnB;QAEC,IAAI,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,iCAAS,GAAhB,UAAiB,qBAAmC;QAEnD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAC5B,CAAC,GADoB;IAGrB;;;;;;;;;;;;;;;;;OAiBG;IACI,+BAAO,GAAd,UAAe,qBAAmC;QAEjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAC5B,CAAC,GADoB;IAGrB;;;;;;;;;;;;;;;;OAgBG;IACI,qCAAa,GAApB,UAAqB,KAAW;QAE/B,MAAM,CAAC,KAAK,EAAE,MAAM;IACrB,CAAC,GADa;IAGd;;;;;;;;;;;;;;;;;OAiBG;IACI,uCAAe,GAAtB,UAAuB,KAAW;QAEjC,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAE,MAAM;IAC9B,CAAC,GADsB;IAGvB;;;;;;;OAOG;IACI,qCAAa,GAApB,UAAqB,GAAiB;QAErC,MAAM,CAAC,KAAK,EAAE,MAAM;IACrB,CAAC,GADa;IAGd;;;;;;;;;;;;;;;OAeG;IACI,oCAAY,GAAnB,UAAoB,CAAQ,EAAE,CAAQ,EAAE,SAAyB;QAAzB,yBAAyB,GAAzB,iBAAyB;QAEhE,MAAM,CAAC,KAAK,EAAE,MAAM;IACrB,CAAC,GADa;IAGd;;OAEG;IACI,yCAAiB,GAAxB,UAAyB,WAAoB,EAAE,YAAqB;QAEnE,IAAI,gBAAgB,GAAY,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACxF,IAAI,iBAAiB,GAAY,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC/F,IAAI,kBAAkB,GAAsB,IAAI,CAAC,oBAAoB,CAAC;QAEtE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACnC,kBAAkB,CAAC,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEjD,IAAI,gBAAgB,GAAU,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE/H,EAAE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC;QAEd,kBAAkB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACvD,kBAAkB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACvD,kBAAkB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QACzD,kBAAkB,CAAC,WAAW,GAAG,WAAW,CAAC;QAC7C,kBAAkB,CAAC,YAAY,GAAG,YAAY,CAAC;QAC/C,kBAAkB,CAAC,uBAAuB,GAAG,gBAAgB,IAAI,CAAC,CAAC;QAEnE,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,uCAAe,GAAtB,UAAuB,OAAgB;QAEtC,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,MAAM;IAC3B,CAAC,GADmB;IAGpB;;;;;OAKG;IACI,8BAAM,GAAb,UAAc,MAAe,EAAE,MAAsB;QAAtB,sBAAsB,GAAtB,aAAsB;QAGpD,IAAI,KAAc,CAAC;QACnB,IAAI,KAAc,CAAC;QACnB,IAAI,KAAc,CAAC;QACnB,IAAI,GAAiB,CAAC;QAEtB,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAClB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1B,IAAI;YACH,MAAM,CAAC,SAAS,EAAE,CAAC;QAEpB,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,CAAC,SAAS,EAAE,CAAC;QAElB,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,SAAS,EAAE,CAAC;QAElB,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACnB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,KAAK,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;QAED,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAElC,GAAG,GAAG,aAAa,CAAC,kBAAkB,CAAC;QAEvC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEX,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEX,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAClB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEZ,IAAI,CAAC,GAAY,IAAI,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,GAAG,GAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,qCAAa,GAApB,UAAqB,KAAW;QAE/B,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE,MAAM;IAC3B,CAAC,GADmB;IAGpB;;;;;;OAMG;IAEI,8BAAM,GAAb,UAAc,EAAS,EAAE,EAAS,EAAE,EAAS;QAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;YACnD,MAAM,CAAC;QAER,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,iCAAS,GAAhB,UAAiB,EAAS,EAAE,EAAS,EAAE,EAAS;QAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpB,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,6BAAK,GAAZ,UAAa,KAAY;QAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,+CAAuB,GAA9B,UAA+B,MAAa;QAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1D,IAAI,KAAK,GAAmB,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAC9D,IAAI,KAAK,GAAY,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9B,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEzC,AACA,sBADsB;YACtB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC;gBACvE,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,4BAAI,GAAX,UAAY,KAAY;QAEvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,8BAAM,GAAb,UAAc,IAAa,EAAE,KAAY;QAExC,IAAI,CAAC,GAAY,IAAI,QAAQ,EAAE,CAAC;QAChC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE/B,IAAI,GAAG,GAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;QAEzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,gCAAQ,GAAf,UAAgB,EAAS,EAAE,EAAS,EAAE,EAAS;QAE9C,IAAI,CAAC,UAAU,GAAG,EAAE,GAAC,UAAU,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,EAAE,GAAC,UAAU,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,EAAE,GAAC,UAAU,CAAC,kBAAkB,CAAC;QAEnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,2CAAmB,GAA1B,UAA2B,IAAW,EAAE,QAAiB;QAExD,gBAAK,CAAC,mBAAmB,YAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC;QAER,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACd,KAAK,kBAAkB,CAAC,gBAAgB;gBACvC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBACtC,KAAK,CAAC;YAEP,KAAK,kBAAkB,CAAC,gBAAgB;gBACvC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBACtC,KAAK,CAAC;YAEP,KAAK,kBAAkB,CAAC,aAAa;gBACpC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;gBACnC,KAAK,CAAC;QACR,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACI,iCAAS,GAAhB,UAAiB,IAAa,EAAE,QAAe;QAE9C,IAAI,CAAC,GAAU,IAAI,CAAC,CAAC,EAAE,CAAC,GAAU,IAAI,CAAC,CAAC,EAAE,CAAC,GAAU,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAU,QAAQ,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,EAAE,IAAI,CAAC,GAAC,GAAG,CAAC;QACjB,IAAI,CAAC,EAAE,IAAI,CAAC,GAAC,GAAG,CAAC;QACjB,IAAI,CAAC,EAAE,IAAI,CAAC,GAAC,GAAG,CAAC;QAEjB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,sCAAc,GAArB,UAAsB,IAAa,EAAE,QAAe;QAEnD,IAAI,CAAC,GAAU,IAAI,CAAC,CAAC,EAAE,CAAC,GAAU,IAAI,CAAC,CAAC,EAAE,CAAC,GAAU,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAU,QAAQ,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,GAAC,GAAG,EAAE,CAAC,GAAC,GAAG,EAAE,CAAC,GAAC,GAAG,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,2BAAG,GAAV,UAAW,KAAY;QAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAUD,sBAAW,8CAAmB;QAH9B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;;;OAAA;IAOD,sBAAW,qCAAU;QALrB;;;;WAIG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAEzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAsB,GAAY;YAGjC,AAWA,iDAXiD;YACjD,yBAAyB;YACzB;;;;;;;;gBAQI;gBACA,QAAQ,GAAmB,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/C,IAAI,GAAY,CAAC;YAEjB,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAElB,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;gBAEhB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,CAAC;YAED,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAElB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtF,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;gBAExB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,CAAC;YAED,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAElB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;gBAEtB,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;QACF,CAAC;;;OAhDA;IAqDD,sBAAW,+CAAoB;QAH/B;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;;;OAAA;IAED;;OAEG;IACI,kCAAU,GAAjB,UAAkB,KAA4B;QAE7C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACvD,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED;;OAEG;IACI,oDAA4B,GAAnC;QAEC,AAEA,6CAF6C;QAC7C,iDAAiD;QACjD,MAAM,CAAC,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,kDAA0B,GAAjC;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,yCAAiB,GAAxB;QAEC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAGhC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,iDAAyB,GAAhC;QAEC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC3D,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAEnD,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAEnD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC;YACvC,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,qCAAa,GAApB;QAEC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC,QAAQ,CAAC;QAErD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,oDAA4B,GAAnC,UAAoC,KAAa;QAEhD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC;QAElE,AACA,2GAD2G;QAC3G,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC3E,IAAI,CAAC,iBAAiB,GAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,iDAAyB,GAAhC,UAAiC,KAAe;QAE/C,AACA,+DAD+D;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,kDAA0B,GAAjC,UAAkC,KAAa;QAE9C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,wCAAgB,GAAvB;QAGC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEpD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5H,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC;gBACnD,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,6CAAqB,GAA5B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACpC,CAAC;IAEM,uCAAe,GAAtB,UAAuB,UAAsB;QAE5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAGM,0CAAkB,GAAzB,UAA0B,UAAsB;QAE/C,IAAI,KAAK,GAAU,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE1D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACI,uCAAe,GAAtB,UAAuB,yBAAgC,EAAE,WAAmB;QAE3E,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;OAEG;IACI,wCAAgB,GAAvB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,mCAAW,GAAlB;QAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,wCAAgB,GAAvB;QAEC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,kCAAU,GAAjB,UAAkB,KAAW;QAE5B,mFAAmF;QACnF;;;;;;;;;;;YAWI;QAEJ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;YACzB,MAAM,CAAC;QAER,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,qCAAa,GAApB,UAAqB,KAAW;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;YAEhF,AACA,sCADsC;YACtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACX,KAAK,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;YAErE,AACA,gCADgC;YAChC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,6CAAqB,GAA7B;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAE3F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,6CAAqB,GAA7B;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAE3F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,0CAAkB,GAA1B;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAErF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,yCAAiB,GAAzB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAErF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;IAED;;OAEG;IACK,kDAA0B,GAAlC;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QAEvG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACK,0CAAkB,GAA1B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,2CAAmB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,uCAAe,GAAvB;QAEC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvF,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,MAAM,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,0CAAkB,GAA1B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,0CAAkB,GAA1B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,uCAAe,GAAvB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,MAAM,CAAC;QAER,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IACF,oBAAC;AAAD,CA/qEA,AA+qEC,EA/qE2B,cAAc,EA+qEzC;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;AC/0EvB,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAEnE,IAAO,cAAc,WAAa,wCAAwC,CAAC,CAAC;AAG5E,IAAO,aAAa,WAAa,yCAAyC,CAAC,CAAC;AAE5E,AAcA;;;;;;;;;;;;;GADG;IACG,QAAQ;IAAS,UAAjB,QAAQ,UAAuB;IAsBpC;;OAEG;IACH,SAzBK,QAAQ;QA2BZ,iBAAO,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAmB,CAAC;IACpD,CAAC;IA1BD,sBAAW,+BAAS;aAApB;YAEC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,mCAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAEM,mCAAgB,GAAvB;QAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAYM,sCAAmB,GAA1B,UAA2B,SAAkB;QAE5C,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACI,iCAAc,GAArB,UAAsB,WAA2B;QAEhD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEtC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,oCAAiB,GAAxB,UAAyB,WAA2B;QAEnD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAExE,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,CAAC;QAExF,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,wBAAK,GAAZ;QAEC,IAAI,KAAK,GAAY,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAE5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,wBAAK,GAAZ,UAAa,KAAY;QAExB,IAAI,WAAW,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACpD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,0BAAO,GAAd;QAEC,IAAI,WAAW,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAEpD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,IAAI,OAAO,GAAmB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,0BAAO,GAAd,UAAe,MAAiB,EAAE,MAAiB;QAApC,sBAAiB,GAAjB,UAAiB;QAAE,sBAAiB,GAAjB,UAAiB;QAElD,IAAI,WAAW,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAEpD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEM,oCAAiB,GAAxB,UAAyB,OAAuB;QAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,CAAC;IACF,eAAC;AAAD,CAjIA,AAiIC,EAjIsB,cAAc,EAiIpC;AAED,AAAkB,iBAAT,QAAQ,CAAC;;;;ACzJlB,AAMA;;;;;GADG;IACG,YAAY;IAAlB,SAAM,YAAY;IAWlB,CAAC;IATA;;OAEG;IACW,mBAAM,GAAU,QAAQ,CAAC;IAEvC;;OAEG;IACW,mBAAM,GAAU,QAAQ,CAAC;IACxC,mBAAC;AAAD,CAXA,AAWC,IAAA;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;ACnBtB,AAUA;;;;;;;;;GADG;IACG,mBAAmB;IAAzB,SAAM,mBAAmB;IAIzB,CAAC;IAFc,4BAAQ,GAAU,SAAS,CAAC;IAC5B,4BAAQ,GAAU,SAAS,CAAC;IAC3C,0BAAC;AAAD,CAJA,AAIC,IAAA;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;ACH7B,AAcA;;;;;;;;;;;;;GADG;IACG,QAAQ;IAAd,SAAM,QAAQ;IAw0Bd,CAAC;IAt0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,kCAAe,GAAtB,UAAuB,MAAiB,EAAE,MAAoB,EAAE,MAAqB,EAAE,MAAsB;QAAnE,sBAAoB,GAApB,aAAoB;QAAE,sBAAqB,GAArB,aAAqB;QAAE,sBAAsB,GAAtB,cAAsB;IAG7G,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,4BAAS,GAAhB,UAAiB,KAAK,CAAQ,OAAD,AAAQ,EAAE,KAAgB;QAAhB,qBAAgB,GAAhB,SAAgB;IAGvD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkFG;IACI,oCAAiB,GAAxB,UAAyB,IAAiB,EAAE,MAA4B,EAAE,MAAoB,EAAE,MAA4B,EAAE,MAAoB,EAAE,YAA2B,EAAE,mBAAkC,EAAE,eAA0B;QAAjH,sBAAoB,GAApB,aAAoB;QAAE,4BAA2B,GAA3B,oBAA2B;QAAE,mCAAkC,GAAlC,2BAAkC;QAAE,+BAA0B,GAA1B,mBAA0B;IAG/O,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACJ,+DAA+D;IAC/D,KAAK;IACL,EAAE;IACF,KAAK;IAEJ;;;;OAIG;IACI,wBAAK,GAAZ;IAGA,CAAC;IAED;;;;;;OAMG;IACI,2BAAQ,GAAf,UAAgB,cAAuB;IAGvC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACI,+BAAY,GAAnB,UAAoB,SAAgB,EAAE,SAAgB,EAAE,SAAgB,EAAE,SAAgB,EAAE,OAAc,EAAE,OAAc;IAG1H,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,0BAAO,GAAd,UAAe,QAAe,EAAE,QAAe,EAAE,OAAc,EAAE,OAAc;IAG/E,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,6BAAU,GAAjB,UAAkB,CAAQ,EAAE,CAAQ,EAAE,MAAa;IAGnD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,8BAAW,GAAlB,UAAmB,CAAQ,EAAE,CAAQ,EAAE,KAAY,EAAE,MAAa;IAGlE,CAAC;IAED;;;;;;;;;;;OAWG;IACI,mCAAgB,GAAvB,UAAwB,YAAiC;IAGzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACI,2BAAQ,GAAf,UAAgB,QAA8B,EAAE,IAAkB,EAAE,OAA2B;IAG/F,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,2BAAQ,GAAf,UAAgB,CAAQ,EAAE,CAAQ,EAAE,KAAY,EAAE,MAAa;IAG/D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,gCAAa,GAApB,UAAqB,CAAQ,EAAE,CAAQ,EAAE,KAAY,EAAE,MAAa,EAAE,YAAmB,EAAE,aAA0B;QAA1B,6BAA0B,GAA1B,mBAA0B;IAGrH,CAAC;IAED,4KAA4K;IAE5K;;;;;;;;;;;;;;;;;OAiBG;IACI,gCAAa,GAApB,UAAqB,QAAsB,EAAE,OAAoC,EAAE,OAA4B,EAAE,OAA8B;QAAlG,uBAAoC,GAApC,cAAoC;QAAE,uBAA4B,GAA5B,cAA4B;QAAE,uBAA8B,GAA9B,cAA8B;IAG/I,CAAC;IAED;;;;;;;;;;OAUG;IACI,0BAAO,GAAd;IAGA,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACI,kCAAe,GAAtB,UAAuB,MAAiB,EAAE,MAAoB,EAAE,MAAqB,EAAE,MAAsB;QAAnE,sBAAoB,GAApB,aAAoB;QAAE,sBAAqB,GAArB,aAAqB;QAAE,sBAAsB,GAAtB,cAAsB;IAG7G,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqEG;IACI,oCAAiB,GAAxB,UAAyB,IAAiB,EAAE,MAA4B,EAAE,MAAoB,EAAE,MAAoB,EAAE,MAAoB,EAAE,YAAgC,EAAE,mBAA8C,EAAE,eAA0B;QAAlI,sBAAoB,GAApB,aAAoB;QAAE,4BAAgC,GAAhC,mBAAgC;QAAE,mCAA8C,GAA9C,0BAA8C;QAAE,+BAA0B,GAA1B,mBAA0B;IAGxP,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACJ,+DAA+D;IAC/D,KAAK;IACL,EAAE;IACF,KAAK;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0IG;IACI,4BAAS,GAAhB,UAAiB,SAAoB,EAAE,KAAwB,EAAE,KAAgB,EAAE,YAA4B,EAAE,SAA8B,EAAE,IAAqB,EAAE,MAAwB,EAAE,UAAqB;QAAtM,yBAAoB,GAApB,aAAoB;QAAE,qBAAwB,GAAxB,SAAwB;QAAE,qBAAgB,GAAhB,SAAgB;QAAE,4BAA4B,GAA5B,oBAA4B;QAAE,yBAA8B,GAA9B,gBAA8B;QAAE,oBAAqB,GAArB,WAAqB;QAAE,sBAAwB,GAAxB,aAAwB;QAAE,0BAAqB,GAArB,cAAqB;IAGvN,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,yBAAM,GAAb,UAAc,CAAQ,EAAE,CAAQ;IAGhC,CAAC;IAED;;;;;;;;;OASG;IACI,yBAAM,GAAb,UAAc,CAAQ,EAAE,CAAQ;IAGhC,CAAC;IACF,eAAC;AAAD,CAx0BA,AAw0BC,IAAA;AAED,AAAkB,iBAAT,QAAQ,CAAC;;;;ACv1BO;;;;ACCF;;;;ACuCC;;;;ACZI;;;;ACOF;;;;AC9BH;;;;ACOL;;;;AC1BlB,AAOA;;;;;;GADG;IACG,mBAAmB;IAAzB,SAAM,mBAAmB;IA8BzB,CAAC;IA3BA;;;;;;;;;;;OAWG;IACW,8BAAU,GAAU,WAAW,CAAC;IAE9C;;;;;;;;;;;OAWG;IACW,uBAAG,GAAU,KAAK,CAAC;IAClC,0BAAC;AAAD,CA9BA,AA8BC,IAAA;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;ACvC7B,AAQA;;;;;;;GADG;IACG,UAAU;IAAhB,SAAM,UAAU;IAmBhB,CAAC;IAjBA;;;OAGG;IACW,gBAAK,GAAU,OAAO,CAAC;IAErC;;;OAGG;IACW,gBAAK,GAAU,OAAO,CAAC;IAErC;;;OAGG;IACW,gBAAK,GAAU,OAAO,CAAC;IACtC,iBAAC;AAAD,CAnBA,AAmBC,IAAA;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AC7BpB,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAEnE,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAEpF,IAAO,sBAAsB,WAAW,sDAAsD,CAAC,CAAC;AAGhG,IAAO,UAAU,WAAc,sCAAsC,CAAC,CAAC;AAGvE,IAAM,SAAS;IAAS,UAAlB,SAAS,UAA+B;IA2B7C,SA3BK,SAAS;QA6Bb,iBAAO,CAAC;QA3BD,WAAM,GAAU,QAAQ,CAAC;QACzB,YAAO,GAAU,CAAC,CAAC;QACnB,YAAO,GAAU,CAAC,CAAC;QACnB,YAAO,GAAU,CAAC,CAAC;QAEnB,kBAAa,GAAU,QAAQ,CAAC;QAChC,aAAQ,GAAU,CAAC,CAAC;QACrB,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QAErB,cAAS,GAAU,CAAC,CAAC;QACtB,gBAAW,GAAU,CAAC,CAAC;QACvB,gBAAW,GAAU,CAAC,CAAC;QACvB,gBAAW,GAAU,CAAC,CAAC;QAEtB,aAAQ,GAAU,CAAC,CAAC;QACrB,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QACtB,eAAU,GAAU,CAAC,CAAC;QAErB,kBAAa,GAAW,KAAK,CAAC;IAOtC,CAAC;IAED,sBAAW,mCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAa;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;gBAC/B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACX,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;oBAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAEjD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;YACjC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,CAAC;YACD,AACA,IADI;YACJ,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpE,CAAC;;;OApBA;IAsBM,uCAAmB,GAA1B;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED,sBAAW,+BAAQ;aAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAY;YAE/B,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YAEX,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;;;OATA;IAWD,sBAAW,8BAAO;aAAlB;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAmB,KAAY;YAE9B,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YAEX,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OATA;IAWD,sBAAW,4BAAK;aAAhB;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YACjD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAEzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC;;;OAXA;IAaD,sBAAW,8BAAO;aAAlB;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAmB,KAAY;YAE9B,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YAEX,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAXA;IAaD,sBAAW,mCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAY;YAEnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OANA;IAQO,iCAAa,GAArB;QAEC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAC,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC;IAClE,CAAC;IAEM,8CAA0B,GAAjC,UAAkC,MAAc,EAAE,MAAa,EAAE,MAAsB;QAAtB,sBAAsB,GAAtB,aAAsB;QAEtF,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAGD,sBAAW,gCAAS;QADpB,WAAW;aACX;YAEC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,CAAC;;;OAAA;IAEO,kCAAc,GAAtB;QAEC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,SAAS,CAAC;IAChD,CAAC;IAEO,iCAAa,GAArB;QAEC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAED,sBAAW,mCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAsB;YAE7C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;QACjC,CAAC;;;OANA;IAOF,gBAAC;AAAD,CA/KA,AA+KC,EA/KuB,sBAAsB,EA+K7C;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;AC3LnB,AAIA;;;GADG;IACG,aAAa;IAAnB,SAAM,aAAa;IAoCnB,CAAC;IAlCA;;;;;;;;OAQG;IACW,wBAAU,GAAU,YAAY,CAAC;IAE/C;;;OAGG;IACW,kBAAI,GAAU,MAAM,CAAC;IAEnC;;;;OAIG;IACW,oBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;OAQG;IACW,sBAAQ,GAAU,UAAU,CAAC;IAC5C,oBAAC;AAAD,CApCA,AAoCC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACxCvB,IAAO,WAAW,WAAc,qCAAqC,CAAC,CAAC;AACvE,IAAO,eAAe,WAAa,yCAAyC,CAAC,CAAC;AAC9E,IAAO,mBAAmB,WAAY,6CAA6C,CAAC,CAAC;AACrF,IAAO,gBAAgB,WAAa,4CAA4C,CAAC,CAAC;AAElF,AAGA;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAwB;IAgJ5C;;OAEG;IACH,SAnJK,eAAe;QAqJnB,kBAAM,IAAI,CAAC,CAAC;QAxIL,oBAAe,GAAW,IAAI,CAAC;QAC/B,2BAAsB,GAAG,IAAI,CAAC;QAC9B,oBAAe,GAAW,IAAI,CAAC;QAC/B,iBAAY,GAAW,IAAI,CAAC;QAuInC,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;IACnC,CAAC;IAzHM,8CAAoB,GAA3B;QAEC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE/C,IAAI,MAAM,GAAU,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC;QAC5D,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;QAC1D,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;QACvD,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QACnD,MAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QAEnD,IAAI,GAAG,GAAU,IAAI,CAAC,aAAa,GAAC,MAAM,CAAC;QAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;QAE9B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClC,CAAC;IAKD,sBAAW,qCAAQ;QAHnB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEhE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,2CAAc;QAHzB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;;;OAAA;IAKD,sBAAW,yCAAY;QAHvB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEhE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,sCAAS;QAHpB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,sCAAS;QAHpB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAYM,8CAAoB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,yCAAe,GAAtB,UAAuB,WAAyB,EAAE,SAAuB;QAExE,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,MAAoB,CAAA;QACxB,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAE1B,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAU,CAAC;QAE5C,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAU,CAAC;QAE1C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAC,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC;QAEzC,IAAI,IAAI,GAAU,IAAI,CAAC,aAAa,GAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEjF,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;QAE/B,CAAC,GAAG,CAAC,CAAC;QACN,CAAC,GAAG,CAAC,CAAC;QACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC5D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC7D,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;QAEtB,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC,KAAK,GAAC,MAAM,GAAG,CAAC,CAAC,GAAE,SAAS,GAAG,WAAW,CAAC;YACrD,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAErC,MAAM,GAAG,CAAC,KAAK,GAAC,MAAM,GAAG,CAAC,CAAC,GAAE,WAAW,GAAG,SAAS,CAAC;YACrD,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAErC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,GAAU,KAAK,GAAC,MAAM,GAAG,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnD,CAAC,GAAG,CAAC,CAAC;gBACN,CAAC,IAAI,CAAC,CAAC;YACR,CAAC;YAED,KAAK,IAAI,MAAM,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,yCAAe,GAAtB,UAAuB,MAAoB;QAE1C,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,SAAuB,CAAC;QAE5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAEzB,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YACxD,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAE5B,KAAK,GAAG,MAAM,CAAA;YACd,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1B,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAE/F,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACd,CAAC,GAAG,CAAC,CAAC;oBACN,CAAC,EAAE,CAAC;gBACL,CAAC;gBACD,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,sCAAY,GAAnB,UAAoB,WAAyB,EAAE,SAAuB;QAErE,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,MAAoB,CAAA;QACxB,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAoB,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,AACA,kBADkB;QAClB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAEnD,CAAC,GAAG,CAAC,CAAC;YACN,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;gBAClC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAEjD,CAAC,GAAG,CAAC,CAAC;YACN,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;gBAChC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,CAAC,GAAG,CAAC,CAAC;QACN,CAAC,GAAG,CAAC,CAAC;QACN,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAEzB,KAAK,GAAG,MAAM,CAAC;QAEf,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAElC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,GAAG,CAAC,CAAC;gBACN,CAAC,IAAI,CAAC,CAAC;YACR,CAAC;YAED,KAAK,IAAI,MAAM,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,iCAAO,GAAd;QAEC,gBAAK,CAAC,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,2CAAiB,GAAxB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IASD;;;OAGG;IACI,+BAAK,GAAZ;QAEC,IAAI,KAAK,GAAmB,IAAI,eAAe,EAAE,CAAC;QAClD,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAElF,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEM,gDAAsB,GAA7B;QAEC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAEO,+CAAqB,GAA7B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACxB,MAAM,CAAC;QAER,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAErH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAEO,+CAAqB,GAA7B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACxB,MAAM,CAAC;QAER,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;QAElH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAEO,4CAAkB,GAA1B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACrB,MAAM,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;QAE1G,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAxaa,2BAAW,GAAU,UAAU,CAAC;IAChC,mCAAmB,GAAU,gBAAgB,CAAC;IAC9C,iCAAiB,GAAU,cAAc,CAAC;IAC1C,8BAAc,GAAU,WAAW,CAAC;IACpC,0BAAU,GAAU,QAAQ,CAAC;IAE3C,8BAA8B;IAChB,+BAAe,GAAU,QAAQ,CAAC;IAClC,4BAAY,GAAU,QAAQ,CAAC;IAC/B,gCAAgB,GAAU,QAAQ,CAAC;IAgalD,sBAAC;AAAD,CA3aA,AA2aC,EA3a6B,eAAe,EA2a5C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;ACvbzB,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAInE,IAAO,WAAW,WAAc,qCAAqC,CAAC,CAAC;AAKvE,AASA;;;;;;;;GADG;IACG,WAAW;IAAS,UAApB,WAAW,UAAoB;IAoBpC;;;;;OAKG;IACH,SA1BK,WAAW,CA0BJ,WAA2B,EAAE,UAAe,EAAE,QAA4B;QAA5B,wBAA4B,GAA5B,eAA4B;QAErF,iBAAO,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IA1BD,sBAAW,kCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,CAAC;;;OAAA;IAKD,sBAAW,oCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAiBD;;OAEG;IACI,6BAAO,GAAd;QAEC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,gBAAK,CAAC,OAAO,WAAE,CAAC;IACjB,CAAC;IAEM,yCAAmB,GAA1B,UAA2B,YAA0B;QAEpD,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACF,kBAAC;AAAD,CAjDA,AAiDC,EAjDyB,WAAW,EAiDpC;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;;;;;;;ACrErB,IAAO,eAAe,WAAa,wCAAwC,CAAC,CAAC;AAM7E,AAiGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAwB;IAAxC,SAAM,UAAU;QAAS,8BAAe;IAmIxC,CAAC;IA1GA,sBAAW,6BAAK;QAhBhB;;;;;;;;;;;;;;;WAeG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;;;OAAA;IAMD,sBAAW,mCAAW;QAJtB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAWD,sBAAW,kCAAU;QATrB;;;;;;;;WAQG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IAkBD,sBAAW,+BAAO;QAhBlB;;;;;;;;;;;;;;;WAeG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAaD,sBAAW,mCAAW;QAXtB;;;;;;;;;;WAUG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAoBD,sBAAW,8BAAM;QAlBjB;;;;;;;;;;;;;;;;;WAiBG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAgBD,sBAAW,2BAAG;QAdd;;;;;;;;;;;;;WAaG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;;;OAAA;IACF,iBAAC;AAAD,CAnIA,AAmIC,EAnIwB,eAAe,EAmIvC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;AC5OpB,IAAM,eAAe;IAArB,SAAM,eAAe;IAgBrB,CAAC;IAdA;;OAEG;IACW,uBAAO,GAAU,SAAS,CAAC;IAEzC;;OAEG;IACW,4BAAY,GAAU,aAAa,CAAC;IAElD;;OAEG;IACW,+BAAe,GAAU,gBAAgB,CAAC;IACzD,sBAAC;AAAD,CAhBA,AAgBC,IAAA;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;AClBzB,AAKA;;;;GADG;IACG,aAAa;IAAnB,SAAM,aAAa;IAyBnB,CAAC;IAvBA;;;;OAIG;IACW,oBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;;;;;OAQG;IACW,kBAAI,GAAU,MAAM,CAAC;IAEnC;;;OAGG;IACW,mBAAK,GAAU,OAAO,CAAC;IACtC,oBAAC;AAAD,CAzBA,AAyBC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;AChCvB,AAQA;;;;;;;GADG;IACG,YAAY;IAAlB,SAAM,YAAY;IAgBlB,CAAC;IAdA;;OAEG;IACW,gBAAG,GAAU,KAAK,CAAC;IAEjC;;OAEG;IACW,oBAAO,GAAU,SAAS,CAAC;IAEzC;;OAEG;IACW,mBAAM,GAAU,QAAQ,CAAC;IACxC,mBAAC;AAAD,CAhBA,AAgBC,IAAA;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;;;;;;;AC1BtB,IAAO,cAAc,WAAa,wCAAwC,CAAC,CAAC;AAG5E,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAIpF,IAAO,gBAAgB,WAAa,4CAA4C,CAAC,CAAC;AAElF,AAGA;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAuB;IAoF3C;;OAEG;IACH,SAvFK,eAAe,CAuFR,kBAA0B;QAErC,iBAAO,CAAC;QArFF,wBAAmB,GAAW,IAAI,CAAC;QASnC,wBAAmB,GAAW,IAAI,CAAC;QAInC,aAAQ,GAAU,IAAI,MAAM,EAAE,CAAC;QAC/B,aAAQ,GAAU,IAAI,MAAM,EAAE,CAAC;QAyErC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAxEM,8CAAoB,GAA3B;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAID,sBAAW,yCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,8CAAiB;QAH5B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;aAED,UAA6B,KAAa;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;gBACrC,MAAM,CAAC;YAER,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAEhC,EAAE,CAAC,CAAC,KAAK,CAAC;gBACT,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;;;OAbA;IAkBD,sBAAW,oCAAO;QAHlB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,qCAAQ;QAHnB;;WAEG;aACH;YAEC,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,yCAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAED,sBAAW,wCAAW;aAAtB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAYD;;OAEG;IACI,mCAAS,GAAhB,UAAiB,QAAe;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,mCAAS,GAAhB,UAAiB,QAAe;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEM,wCAAc,GAArB;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,iCAAO,GAAd;QAEC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,uCAAa,GAApB,UAAqB,OAAqB;QAEzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;QAElC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAC,CAAC,CAAC;QAExC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,2CAAiB,GAAxB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IASD;;;OAGG;IACI,+BAAK,GAAZ;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEM,6CAAmB,GAA1B,UAA2B,SAAkB;IAG7C,CAAC;IAED;;;OAGG;IACI,+BAAK,GAAZ,UAAa,KAAY;IAGzB,CAAC;IAEM,iCAAO,GAAd,UAAe,MAAiB,EAAE,MAAiB;QAApC,sBAAiB,GAAjB,UAAiB;QAAE,sBAAiB,GAAjB,UAAiB;IAGnD,CAAC;IAEM,8CAAoB,GAA3B;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEO,6CAAmB,GAA3B;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAE/E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAEM,gDAAsB,GAA7B;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IA3Ma,2BAAW,GAAU,UAAU,CAAC;IA4M/C,sBAAC;AAAD,CA9MA,AA8MC,EA9M6B,cAAc,EA8M3C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;AC5NzB,IAAO,mBAAmB,WAAa,4CAA4C,CAAC,CAAC;AAGrF,IAAO,cAAc,WAAc,wCAAwC,CAAC,CAAC;AAS7E,AASA;;;;;;;;GADG;IACG,WAAW;IAAS,UAApB,WAAW,UAAuB;IAyEvC;;OAEG;IACH,SA5EK,WAAW;QA8Ef,iBAAO,CAAC;QAzEF,YAAO,GAAU,CAAC,CAAC;QAGlB,iBAAY,GAAsB,IAAI,KAAK,EAAe,CAAC;IAuEnE,CAAC;IA3DD,sBAAW,iCAAQ;QAVnB,0BAA0B;QAC3B,6CAA6C;QAC7C,KAAK;QACL,EAAE;QACF,mDAAmD;QACnD,KAAK;QAEJ;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QACnC,CAAC;;;OAAA;IAKD,sBAAW,iCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QACrD,CAAC;aAED,UAAoB,KAAkB;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;;;OAXA;IAgBD,sBAAW,uCAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QACzC,CAAC;;;OAAA;IAKD,sBAAW,mCAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,oCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAC3D,CAAC;aAED,UAAuB,KAAiB;YAEvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IAeD;;OAEG;IACI,6BAAO,GAAd;QAEC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,GAAG,GAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAe,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,6CAAuB,GAA9B,UAA+B,MAAa;QAE3C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAEM,qCAAe,GAAtB,UAAuB,UAAsB;QAE5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAGM,wCAAkB,GAAzB,UAA0B,UAAsB;QAE/C,IAAI,KAAK,GAAU,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAEM,oDAA8B,GAArC;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAEM,yCAAmB,GAA1B,UAA2B,YAA0B;QAEpD,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEM,2CAAqB,GAA5B;QAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACF,kBAAC;AAAD,CA1IA,AA0IC,EA1IyB,cAAc,EA0IvC;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;AC/JrB,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAC/D,IAAO,aAAa,WAAa,oCAAoC,CAAC,CAAC;AAEvE,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAK/D,AAsDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,SAAS;IA0Md,SA1MK,SAAS,CA0MF,aAA2B;QApMhC,cAAS,GAAY,IAAI,QAAQ,EAAE,CAAC;QAsM1C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAlMD,sBAAW,iCAAU;QAHrB;;WAEG;aACH;YAEC,IAAI,QAAQ,GAAY,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACjF,QAAQ,CAAC,MAAM,EAAE,CAAC;YAElB,MAAM,CAAC,QAAQ,CAAC;QACjB,CAAC;;;OAAA;IAiBD,sBAAW,iDAA0B;QAPrC;;;;;;WAMG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM;QAChD,CAAC,GADwC;;;OACxC;IAaD,sBAAW,yCAAkB;QAX7B;;;;;;;;;;WAUG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM;QACxC,CAAC,GADgC;;;OAChC;IAKD,sBAAW,iCAAU;QAHrB;;WAEG;aACH;YAEC,IAAI,QAAQ,GAAY,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC;YAElB,MAAM,CAAC,QAAQ,CAAC;QACjB,CAAC;;;OAAA;IAKD,sBAAW,oCAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;;;OAAA;IAKD,sBAAW,iCAAU;QAHrB;;WAEG;aACH;YAEC,IAAI,QAAQ,GAAY,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/E,QAAQ,CAAC,MAAM,EAAE,CAAC;YAElB,MAAM,CAAC,QAAQ,CAAC;QACjB,CAAC;;;OAAA;IA4BD,sBAAW,+BAAQ;QAZnB;;;;;;;;;;;WAWG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QACvC,CAAC;aAED,UAAoB,GAAY;YAE/B,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC;QACtC,CAAC;;;OALA;IAsBD,sBAAW,kCAAW;QAJtB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,+BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAA;QAC/C,CAAC;aAED,UAAoB,KAAc;YAEjC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC;;;OAPA;IAYD,sBAAW,kCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;;;OAAA;IAKD,sBAAW,+BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAClH,CAAC;aAED,UAAoB,KAAc;YAEjC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;;;OAPA;IAYD,sBAAW,4BAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzG,CAAC;aAED,UAAiB,KAAc;YAE9B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;;;OAPA;IAYD,sBAAW,+BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;;;OAAA;IAOD;;;;;;;;;;;;;;;;;OAiBG;IACI,uCAAmB,GAA1B,UAA2B,UAAwB;QAElD,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAE,MAAM;IAC9B,CAAC,GADsB;IAIvB;;;;OAIG;IACI,+BAAW,GAAlB,UAAmB,QAAe;QAEjC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,gCAAY,GAAnB,UAAoB,QAAe;QAElC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IAEI,4BAAQ,GAAf,UAAgB,QAAe;QAE9B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACI,6BAAS,GAAhB,UAAiB,QAAe;QAE/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,0BAAM,GAAb,UAAc,QAAe;QAE5B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,4BAAQ,GAAf,UAAgB,QAAe;QAE9B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IACF,gBAAC;AAAD,CAnSA,AAmSC,IAAA;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;ACrWnB,AAqBA;;;;;;;;;;;;;;;;;;;;GADG;IACG,eAAe;IAArB,SAAM,eAAe;IAiBrB,CAAC;IAfA;;OAEG;IACW,wBAAQ,GAAU,UAAU,CAAC;IAE3C;;OAEG;IACW,oBAAI,GAAU,MAAM,CAAC;IAEnC;;;OAGG;IACW,wBAAQ,GAAU,UAAU,CAAC;IAC5C,sBAAC;AAAD,CAjBA,AAiBC,IAAA;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;ACvCzB,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAE/D,IAAO,eAAe,WAAa,yCAAyC,CAAC,CAAC;AAC9E,IAAO,eAAe,WAAa,yCAAyC,CAAC,CAAC;AAC9E,IAAO,gBAAgB,WAAa,4CAA4C,CAAC,CAAC;AAElF,AAGA;;GADG;IACG,mBAAmB;IAAS,UAA5B,mBAAmB,UAAwB;IA4ahD;;OAEG;IACH,SA/aK,mBAAmB,CA+aZ,kBAA0B;QAErC,kBAAM,kBAAkB,CAAC,CAAC;QAhanB,oBAAe,GAAW,IAAI,CAAC;QAC/B,sBAAiB,GAAW,IAAI,CAAC;QACjC,uBAAkB,GAAW,IAAI,CAAC;QAClC,wBAAmB,GAAW,IAAI,CAAC;QACnC,yBAAoB,GAAW,IAAI,CAAC;QACpC,cAAS,GAAW,IAAI,CAAC;QACzB,uBAAkB,GAAW,IAAI,CAAC;QAClC,uBAAkB,GAAW,IAAI,CAAC;QAClC,uBAAkB,GAAW,IAAI,CAAC;QAiBlC,uBAAkB,GAAW,IAAI,CAAC;QAClC,uBAAkB,GAAW,IAAI,CAAC;QAClC,wBAAmB,GAAW,IAAI,CAAC;QACnC,mBAAc,GAAW,KAAK,CAAC;QAC/B,oBAAe,GAAW,KAAK,CAAC;QAMhC,YAAO,GAAU,CAAC,CAAC;QACnB,YAAO,GAAU,CAAC,CAAC;QA8X1B,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;IACvC,CAAC;IAlXD,sBAAW,uCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAKD,sBAAW,uCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAOD,sBAAW,oDAAmB;QAL9B;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;aAED,UAA+B,KAAa;YAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC;gBACtC,MAAM,CAAC;YAER,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAElC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAVA;IAYM,kDAAoB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAEnD,AACA,uBADuB;YACvB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,MAAM,GAAU,CAAC,CAAC;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;gBACxD,MAAM,IAAI,CAAC,CAAC;YACb,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;gBACzD,MAAM,IAAI,CAAC,CAAC;YACb,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;gBACpD,MAAM,IAAI,CAAC,CAAC;YACb,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;gBAC9D,MAAM,IAAI,CAAC,CAAC;YACb,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;gBAC7D,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC;YACjC,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;gBAC9D,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC;YACjC,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;YAE9D,IAAI,GAAG,GAAU,IAAI,CAAC,aAAa,GAAC,MAAM,CAAC;YAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;QAE/B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAEzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC5E,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9E,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClC,CAAC;IAKD,sBAAW,gDAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA2B,KAAY;YAEtC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;;;OAbA;IAoBD,sBAAW,8CAAa;QALxB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAyB,KAAa;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,EAAE,CAAC,CAAC,KAAK,CAAC;gBACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;;;OAXA;IAiBD,sBAAW,kDAAiB;QAJ5B;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;aAED,UAA6B,KAAa;YAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC;gBACpC,MAAM,CAAC;YAER,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAEhC,EAAE,CAAC,CAAC,KAAK,CAAC;gBACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;;;OAXA;IAiBD,sBAAW,mDAAkB;QAJ7B;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;aAED,UAA8B,KAAa;YAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;gBACrC,MAAM,CAAC;YAER,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,EAAE,CAAC,CAAC,KAAK,CAAC;gBACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;;;OAXA;IAgBD,sBAAW,yCAAQ;QAHnB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEjD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,0CAAS;QAHpB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEvC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,8CAAa;QAHxB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE/C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,+CAAc;QAHzB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;;;OAAA;IAKD,sBAAW,4CAAW;QAHtB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE1B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,6CAAY;QAHvB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,oCAAG;QAHd;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;;;OAAA;IAKD,sBAAW,6CAAY;QAHvB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,6CAAY;QAHvB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAEpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,6CAAY;QAHvB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,+CAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;aAED,UAA0B,KAAa;YAEtC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC;gBACjC,MAAM,CAAC;YAER,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAE7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC/B,CAAC;;;OAhBA;IAkBD,sBAAW,mDAAkB;aAA7B;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;;;OAAA;IAED,sBAAW,qDAAoB;aAA/B;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACnC,CAAC;;;OAAA;IAYM,kDAAoB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,6CAAe,GAAtB,UAAuB,MAAoB;QAE1C,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,SAAuB,CAAC;QAE5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAU,CAAC;QAEvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC;QAE9C,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,GAAU,IAAI,CAAC,aAAa,GAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEpF,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;YAE9B,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAC1D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAC3D,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1B,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnC,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAA;QAEvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,iDAAmB,GAA1B,UAA2B,MAAoB;QAE9C,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,OAAqB,CAAC;QAE1B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxG,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAE7B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC/C,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACxD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACzD,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;gBAE1B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjC,KAAK,IAAI,MAAM,CAAC;gBACjB,CAAC;YACF,CAAC;QACF,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEhE,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE1B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACzD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEzD,AACA,qBADqB;YACrB,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;YAEzE,IAAI,EAAE,GAAU,CAAC,CAAC;YAClB,IAAI,EAAE,GAAU,CAAC,CAAC;YAClB,IAAI,EAAE,GAAU,CAAC,CAAC;YAElB,KAAK,GAAG,MAAM,CAAC;YAEf,AACA,qBADqB;gBACjB,IAAI,GAAU,OAAO,CAAC,MAAM,CAAC;YACjC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,GAAU,CAAC,CAAC;YACjB,IAAI,IAAI,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACxC,IAAI,MAAa,CAAC;YAElB,CAAC,GAAG,CAAC,CAAC;YAGN,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,CAAC,eAAe,GAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1D,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC/C,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC/C,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC/C,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,EAAE,IAAI,CAAC,CAAC;gBACR,EAAE,IAAI,CAAC,CAAC;gBACR,EAAE,IAAI,CAAC,CAAC;YACT,CAAC;YAED,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,MAAM,CAAC;YAGf,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,IAAI,EAAE,GAAU,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,EAAE,GAAU,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACnC,IAAI,EAAE,GAAU,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAU,GAAG,GAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;gBAEpD,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;gBACtD,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACtB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBAC1B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;gBAC3B,CAAC;gBAED,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,kDAAoB,GAA3B,UAA4B,MAAoB;QAE/C,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,QAAsB,CAAC;QAE3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1G,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAGD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;YAE9B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC/C,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACzD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAC1D,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;gBAE3B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,KAAK,IAAI,MAAM,CAAC;gBACjB,CAAC;YACF,CAAC;QACF,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEjE,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE3B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAE1D,AACA,sBADsB;YACtB,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;YAE3E,KAAK,GAAG,MAAM,CAAC;YAEf,AACA,sBADsB;gBAClB,IAAI,GAAU,QAAQ,CAAC,MAAM,CAAC;YAClC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAExB,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,GAAU,CAAC,CAAC;YACjB,IAAI,MAAa,CAAC;YAClB,IAAI,EAAE,GAAU,CAAC,CAAC;YAClB,IAAI,EAAE,GAAU,CAAC,CAAC;YAClB,IAAI,EAAE,GAAU,CAAC,CAAC;YAElB,CAAC,GAAG,CAAC,CAAC;YAEN,AACA,uBADuB;gBACnB,IAAI,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACxC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,CAAC,eAAe,GAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1D,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACjD,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACjD,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACnD,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAC,MAAM,CAAC;gBACjD,EAAE,IAAI,CAAC,CAAC;gBACR,EAAE,IAAI,CAAC,CAAC;gBACR,EAAE,IAAI,CAAC,CAAC;YACT,CAAC;YAED,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,MAAM,CAAC;YAGf,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,IAAI,EAAE,GAAU,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,EAAE,GAAU,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACpC,IAAI,EAAE,GAAU,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,GAAU,GAAG,GAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;gBAEpD,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACnD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACvD,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;gBACxD,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBACvB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;oBAC3B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;gBAC5B,CAAC;gBAED,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,uCAAS,GAAhB,UAAiB,MAAoB;QAEpC,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,GAAiB,CAAC;QAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpF,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;YAEnB,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC/C,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACrD,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;gBAEtB,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7B,KAAK,IAAI,MAAM,CAAC;gBACjB,CAAC;YACF,CAAC;QAEF,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC;gBAE1D,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC/B,IAAI;oBACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAErD,AACA,iBADiB;YACjB,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAE3D,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,MAAM,CAAC;YACf,IAAI,KAAK,GAAU,CAAC,CAAC;YAErB,AACA,iBADiB;gBACb,IAAI,GAAU,GAAG,CAAC,MAAM,CAAC;YAC7B,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC;gBAED,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;oBAChB,KAAK,GAAG,CAAC,CAAC;gBAEX,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,gDAAkB,GAAzB,UAA0B,MAAoB;QAE7C,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,GAAiB,CAAC;QAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;YAC/H,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAE/D,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,MAAM,CAAC;YACf,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;YAEtB,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC7B,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,gDAAkB,GAAzB,UAA0B,MAAoB;QAE7C,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,YAA0B,CAAC;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;YAC/H,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC9D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC9D,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC/B,CAAC,GAAG,CAAC,CAAC;gBACN,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,MAAM,CAAC;gBACf,YAAY,GAAG,IAAI,CAAC,kBAAkB,GAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBACtF,IAAI,QAAe,CAAC;gBACpB,IAAI,QAAQ,GAAU,CAAC,CAAC;gBACxB,IAAI,GAAG,GAAU,IAAI,MAAM,EAAE,CAAC;gBAE9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,CAAS,MAAM,CAAC,MAAM,CAAC,CAAC;gBAEhE,IAAI,CAAC,qBAAqB,GAAG,IAAI,KAAK,EAAU,CAAC;gBAEjD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5C,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;wBAEvB,AACA,+DAD+D;wBAC/D,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;4BAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAC,CAAC,EAAE,wDAAwD;4BACpF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;wBACnD,CAAC;wBACD,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACzC,CAAC;oBACD,KAAK,IAAI,MAAM,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;YACrC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAEpC,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,MAAM,CAAC;gBACf,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;gBAE/B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,CAAC,GAAG,CAAC,CAAC;oBACN,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB;wBAC/B,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBACzC,KAAK,IAAI,MAAM,CAAC;gBACjB,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,gDAAkB,GAAzB,UAA0B,MAAoB;QAE7C,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,YAA0B,CAAC;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC;YAC/H,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAC/D,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAE/D,CAAC,GAAG,CAAC,CAAC;YACN,KAAK,GAAG,MAAM,CAAC;YACf,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;YAE/B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC1B,CAAC,GAAG,CAAC,CAAC;gBACN,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB;oBAC/B,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzC,KAAK,IAAI,MAAM,CAAC;YACjB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,qCAAO,GAAd;QAEC,gBAAK,CAAC,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,2CAAa,GAApB,UAAqB,OAAqB;QAEzC,gBAAK,CAAC,aAAa,YAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,mCAAK,GAAZ;QAEC,IAAI,KAAK,GAAuB,IAAI,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjF,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEhD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACnD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI;YACH,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACrC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI;YACH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACrD,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI;YACH,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAEvD,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC9C,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAEvD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEM,qCAAO,GAAd,UAAe,MAAiB,EAAE,MAAiB;QAApC,sBAAiB,GAAjB,UAAiB;QAAE,sBAAiB,GAAjB,UAAiB;QAElD,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,GAAiB,CAAC;QAEtB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAEhB,IAAI,MAAM,GAAU,MAAM,GAAC,IAAI,CAAC,OAAO,CAAC;QACxC,IAAI,MAAM,GAAU,MAAM,GAAC,IAAI,CAAC,OAAO,CAAC;QAExC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,GAAG,GAAU,GAAG,CAAC,MAAM,CAAC;QAE5B,MAAM,GAAG,CAAC,CAAC;QACX,MAAM,GAAG,CAAC,CAAC;QAEX,KAAK,GAAG,MAAM,CAAC;QAEf,OAAO,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;YACrB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;YACzB,KAAK,IAAI,MAAM,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,mCAAK,GAAZ,UAAa,KAAY;QAExB,IAAI,CAAQ,CAAC;QACb,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,SAAuB,CAAC;QAE5B,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAE5B,IAAI,GAAG,GAAU,SAAS,CAAC,MAAM,CAAC;QAElC,MAAM,GAAG,CAAC,CAAC;QACX,MAAM,GAAG,CAAC,CAAC;QAEX,CAAC,GAAG,CAAC,CAAC;QACN,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAC1B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;YAC9B,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;YAE9B,CAAC,IAAI,CAAC,CAAC;YACP,KAAK,IAAI,MAAM,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9B,CAAC;IAEM,iDAAmB,GAA1B,UAA2B,SAAkB;QAE5C,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC7B,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC;QAC1C,IAAI,CAAQ,CAAC;QACb,IAAI,EAAS,CAAC;QACd,IAAI,EAAS,CAAC;QACd,IAAI,MAAM,GAAY,IAAI,QAAQ,EAAE,CAAC;QAErC,IAAI,WAAW,GAAW,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;QACtD,IAAI,YAAY,GAAW,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;QACxD,IAAI,YAAqB,CAAC;QAE1B,EAAE,CAAC,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC;YACjC,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,YAAY,CAAC,MAAM,EAAE,CAAC;YACtB,YAAY,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAElE,IAAI,OAAO,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,OAAO,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,OAAO,GAAU,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEtE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YAC1B,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACb,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YAEb,AACA,gBADgB;YAChB,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC3C,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACzB,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACzB,GAAG,IAAI,OAAO,CAAC;YAEf,AACA,cADc;YACd,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;gBACb,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;gBACb,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACvB,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACvB,GAAG,IAAI,OAAO,CAAC;YAChB,CAAC;YAED,AACA,eADe;YACf,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBAClB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;gBACb,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;gBACb,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;gBACxB,GAAG,IAAI,OAAO,CAAC;YAChB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,gDAAkB,GAA1B;QAEC,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAClB,IAAI,EAAS,CAAC;QACd,IAAI,EAAS,CAAC;QACd,IAAI,GAAU,CAAC;QACf,IAAI,GAAU,CAAC;QACf,IAAI,KAAY,CAAC;QACjB,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACvC,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACvC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QAEpC,IAAI,SAAS,GAAiB,IAAI,CAAC,UAAU,CAAA;QAC7C,IAAI,GAAG,GAAiB,IAAI,CAAC,IAAI,CAAC;QAElC,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;QAE7C,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/B,EAAE,GAAG,GAAG,CAAC,MAAM,GAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,GAAG,GAAG,GAAG,CAAC,MAAM,GAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,GAAG,GAAG,CAAC,MAAM,GAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAE7B,EAAE,GAAG,MAAM,GAAC,CAAC,CAAC;YACd,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACvB,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACvB,EAAE,GAAG,MAAM,GAAC,CAAC,CAAC;YACd,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACzB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,EAAE,GAAG,MAAM,GAAC,CAAC,CAAC;YACd,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACzB,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAE7B,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,KAAK,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;YAE3C,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAC,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAC,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAC,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,+CAAiB,GAAzB;QAEC,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,IAAI,KAAY,CAAC;QACjB,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAElB,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACvC,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACvC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,CAAQ,CAAC;QAEb,IAAI,SAAS,GAAiB,IAAI,CAAC,UAAU,CAAC;QAE9C,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAS,GAAG,CAAC,CAAC;QAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAS,GAAG,GAAC,CAAC,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAC,CAAC,CAAC;YAC9B,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACtB,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,EAAE,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;YACd,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,EAAE,GAAG,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC;YACvB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;YACrC,AAEA,4CAF4C;YAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAU,CAAC,GAAC,KAAK,CAAC;gBAEvB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACT,CAAC,GAAG,CAAC,CAAC;gBAEP,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAED,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;YAER,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAC,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChC,CAAC;IAEM,oDAAsB,GAA7B;QAEC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACjC,CAAC;IAEO,mDAAqB,GAA7B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACxB,MAAM,CAAC;QAER,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAErH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAEO,iDAAmB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,MAAM,CAAC;QAER,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAEjH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAEO,kDAAoB,GAA5B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC7B,MAAM,CAAC;QAER,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEnH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAEO,6CAAe,GAAvB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAClB,MAAM,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAEzG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAEO,sDAAwB,GAAhC;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,MAAM,CAAC;QAER,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE5H,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAEO,sDAAwB,GAAhC;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,MAAM,CAAC;QAER,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAE3H,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IAEO,sDAAwB,GAAhC;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,MAAM,CAAC;QAER,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE5H,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IA/5Ca,iCAAa,GAAU,WAAW,CAAC;IACnC,+BAAW,GAAU,eAAe,CAAC;IACrC,gCAAY,GAAU,gBAAgB,CAAC;IACvC,2BAAO,GAAU,KAAK,CAAC;IACvB,qCAAiB,GAAU,cAAc,CAAC;IAC1C,oCAAgB,GAAU,cAAc,CAAC;IACzC,qCAAiB,GAAU,cAAc,CAAC;IAExD,8BAA8B;IAChB,mCAAe,GAAU,QAAQ,CAAC;IAClC,iCAAa,GAAU,QAAQ,CAAC;IAChC,kCAAc,GAAU,QAAQ,CAAC;IACjC,6BAAS,GAAU,QAAQ,CAAC;IAC5B,uCAAmB,GAAU,QAAQ,CAAC;IAm5CrD,0BAAC;AAAD,CAl6CA,AAk6CC,EAl6CiC,eAAe,EAk6ChD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;AC96C7B,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAEnE,IAAO,WAAW,WAAc,qCAAqC,CAAC,CAAC;AAOvE,AASA;;;;;;;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAoB;IAoBxC;;;;;OAKG;IACH,SA1BK,eAAe,CA0BR,WAA+B,EAAE,UAAe,EAAE,QAA4B;QAA5B,wBAA4B,GAA5B,eAA4B;QAEzF,iBAAO,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IA1BD,sBAAW,sCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACpC,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAiBD;;OAEG;IACI,iCAAO,GAAd;QAEC,gBAAK,CAAC,OAAO,WAAE,CAAC;IACjB,CAAC;IAEM,6CAAmB,GAA1B,UAA2B,YAA0B;QAEpD,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACF,sBAAC;AAAD,CA/CA,AA+CC,EA/C6B,WAAW,EA+CxC;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;AClEzB,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAEpE,IAAO,aAAa,WAAc,sCAAsC,CAAC,CAAC;AAC1E,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAC5D,IAAO,UAAU,WAAe,mCAAmC,CAAC,CAAC;AAErE,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAI3E,AAqBA;;;;;;;;;;;;;;;;;;;;GADG;IACG,sBAAsB;IAAS,UAA/B,sBAAsB,UAAsB;IAyEjD;;;;;;;;;OASG;IACH,SAnFK,sBAAsB;QAqF1B,iBAAO,CAAC;QAnFD,mBAAc,GAAW,IAAI,CAAC;QAC9B,cAAS,GAAwB,IAAI,KAAK,EAAiB,CAAC;IAmFpE,CAAC;IA7ED,sBAAW,6CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC;;;OAAA;IAuBD,sBAAW,iDAAa;QArBxB;;;;;;;;;;;;;;;;;;;;WAoBG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAyB,KAAa;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QACtF,CAAC;;;OAVA;IAeD,sBAAW,+CAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,CAAC;;;OAAA;IAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,yCAAQ,GAAf,UAAgB,KAAmB;QAElC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAEpD,AACA,2CAD2C;QAC3C,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACI,2CAAU,GAAjB,UAAkB,KAAmB,EAAE,KAAK,CAAQ,OAAD,AAAQ;QAE1D,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEM,4CAAW,GAAlB;QAAmB,oBAAkC;aAAlC,WAAkC,CAAlC,sBAAkC,CAAlC,IAAkC;YAAlC,mCAAkC;;QAEpD,IAAI,GAAG,GAAU,UAAU,CAAC,MAAM,CAAC;QACnC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAI,GAAG,EAAE,CAAC,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,sCAAK,GAAZ;QAEC,IAAI,KAAK,GAA0B,IAAI,sBAAsB,EAAE,CAAC;QAChE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAE3C,AACA,mCADmC;QACnC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACI,yCAAQ,GAAf,UAAgB,KAAmB;QAElC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,oDAAmB,GAA1B;QAEC,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACI,2CAAU,GAAjB,UAAkB,KAAK,CAAQ,OAAD,AAAQ;QAErC,IAAI,KAAK,GAAiB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEhD,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACjB,MAAM,IAAI,UAAU,CAAC,sDAAsD,CAAC,CAAC;QAE9E,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,+CAAc,GAArB,UAAsB,IAAW;QAEhC,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE3B,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACI,8CAAa,GAApB,UAAqB,KAAmB;QAEvC,IAAI,UAAU,GAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtD,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YACpB,MAAM,IAAI,aAAa,CAAC,8CAA8C,CAAC,CAAC;QAEzE,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,qDAAoB,GAA3B,UAA4B,KAAW;QAEtC,MAAM,CAAC,IAAI,KAAK,EAAiB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,4CAAW,GAAlB,UAAmB,KAAmB;QAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAEnD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,8CAAa,GAApB,UAAqB,KAAK,CAAQ,OAAD,AAAQ;QAExC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,+CAAc,GAArB,UAAsB,UAA6B,EAAE,QAAoC;QAAnE,0BAA6B,GAA7B,cAA6B;QAAE,wBAAoC,GAApC,qBAAoC;QAExF,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;YAClB,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;QAEtE,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;QAEpE,GAAG,CAAA,CAAC,GAAG,CAAC,CAAC,GAAmB,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,8CAAa,GAApB,UAAqB,KAAmB,EAAE,KAAK,CAAQ,OAAD,AAAQ;QAE7D,MAAM;IACP,CAAC;IAED;;;;;;;;;OASG;IACI,6CAAY,GAAnB,UAAoB,MAAoB,EAAE,MAAoB;QAE7D,MAAM;IACP,CAAC;IAED;;;;;;;;OAQG;IACI,+CAAc,GAArB,UAAsB,MAAM,CAAQ,OAAD,AAAQ,EAAE,MAAM,CAAQ,OAAD,AAAQ;QAEjE,MAAM;IACP,CAAC;IAED;;OAEG;IACI,0DAAyB,GAAhC;QAEC,gBAAK,CAAC,yBAAyB,WAAE,CAAC;QAElC,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,8CAAa,GAApB,UAAqB,KAAW;QAE/B,gBAAK,CAAC,aAAa,YAAC,KAAK,CAAC,CAAC;QAE3B,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,6DAA4B,GAAnC,UAAoC,KAAa;QAEhD,gBAAK,CAAC,4BAA4B,YAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,2DAA0B,GAAjC,UAAkC,KAAa;QAE9C,gBAAK,CAAC,0BAA0B,YAAC,KAAK,CAAC,CAAC;QAExC,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,0DAAyB,GAAhC,UAAiC,KAAe;QAE/C,gBAAK,CAAC,yBAAyB,YAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACK,oDAAmB,GAA3B,UAA4B,KAAmB;QAE9C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IACF,6BAAC;AAAD,CA/gBA,AA+gBC,EA/gBoC,aAAa,EA+gBjD;AAED,AAAgC,iBAAvB,sBAAsB,CAAC;;;;;;;;;;ACjjBhC,IAAO,kBAAkB,WAAa,4CAA4C,CAAC,CAAC;AACpF,IAAO,WAAW,WAAe,qCAAqC,CAAC,CAAC;AAIxE,IAAO,UAAU,WAAe,mCAAmC,CAAC,CAAC;AAErE,IAAO,YAAY,WAAe,qCAAqC,CAAC,CAAC;AACzE,IAAO,WAAW,WAAe,oCAAoC,CAAC,CAAC;AACvE,IAAO,WAAW,WAAe,oCAAoC,CAAC,CAAC;AAGvE,IAAO,sBAAsB,WAAY,sDAAsD,CAAC,CAAC;AAIjG,AA+DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,MAAM;IAAS,UAAf,MAAM,UAA+B;IAsE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,SAtHK,MAAM,CAsHC,eAA8B,EAAE,cAA4B;QAtHzE,iBAijBC;QA3bY,+BAA8B,GAA9B,sBAA8B;QAAE,8BAA4B,GAA5B,qBAA4B;QAEvE,iBAAO,CAAC;QAER,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAK,EAAe,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;QAElC,IAAI,CAAC,2BAA2B,GAAG,UAAC,KAAiB,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAA9B,CAA8B,CAAC;QACzF,IAAI,CAAC,wBAAwB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC;IACnF,CAAC;IApFD,sBAAW,2BAAO;QAjBlB;;;;;;;;;;;;;;;;WAgBG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAkBD,sBAAW,qCAAiB;QAhB5B;;;;;;;;;;;;;;;WAeG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;;;OAAA;IA8DD;;;;OAIG;IACI,sBAAK,GAAZ;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,GAAsB,CAAC;YAC3B,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,GAAG,CAAC,sBAAsB,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,MAAM,CAAA;QACP,CAAC;QACD,IAAI,CAAC,CAAQ,OAAD,AAAQ,CAAC;QACrB,IAAI,MAAM,GAAkB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACzD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsKG;IACI,qBAAI,GAAX,UAAY,OAAkB,EAAE,OAAiC,EAAE,EAAgB,EAAE,MAAwB;QAA7E,uBAAiC,GAAjC,cAAiC;QAAE,kBAAgB,GAAhB,SAAgB;QAAE,sBAAwB,GAAxB,aAAwB;QAE5G,IAAI,KAAsB,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,GAAsB,CAAC;YAC3B,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,MAAM,GAAe,IAAI,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxF,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEjF,AACA,uEADuE;QACvE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqFG;IACI,yBAAQ,GAAf,UAAgB,IAAQ,EAAE,OAAiC,EAAE,EAAgB,EAAE,MAAwB;QAA7E,uBAAiC,GAAjC,cAAiC;QAAE,kBAAgB,GAAhB,SAAgB;QAAE,sBAAwB,GAAxB,aAAwB;QAEtG,IAAI,KAAsB,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACvB,IAAI,GAAsB,CAAC;YAC3B,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,MAAM,GAAe,IAAI,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxF,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEjF,AACA,uEADuE;QACvE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,uBAAM,GAAb;QAEC,MAAM;IACP,CAAC;IAED;;;;;;;;OAQG;IACW,mBAAY,GAA1B,UAA2B,WAAkB;QAE5C,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IACW,oBAAa,GAA3B,UAA4B,aAA2B;QAEtD,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAGO,gCAAe,GAAvB,UAAwB,UAA0B;QAEjD,UAAU,CAAC,mBAAmB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAChG,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC1F,CAAC;IAEO,gCAAe,GAAvB,UAAwB,KAAgB;QAEvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,4BAAW,GAAnB,UAAoB,KAAiB;QAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED;;OAEG;IACK,6BAAY,GAApB,UAAqB,KAAiB;QAErC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED;;OAEG;IACK,mCAAkB,GAA1B,UAA2B,KAAiB;QAE3C,IAAI,CAAC,QAAQ,GAAmB,KAAK,CAAC,OAAO,CAAC;QAE9C,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACF,aAAC;AAAD,CAjjBA,AAijBC,EAjjBoB,sBAAsB,EAijB1C;AAED,AAAgB,iBAAP,MAAM,CAAC;;;;;;;;;;ACloBhB,IAAO,eAAe,WAAc,wCAAwC,CAAC,CAAC;AAG9E,IAAO,sBAAsB,WAAY,sDAAsD,CAAC,CAAC;AACjG,IAAO,UAAU,WAAe,sCAAsC,CAAC,CAAC;AACxE,IAAO,QAAQ,WAAgB,uCAAuC,CAAC,CAAC;AACxE,IAAO,SAAS,WAAe,wCAAwC,CAAC,CAAC;AAGzE,IAAM,KAAK;IAAS,UAAd,KAAK,UAAwB;IAQlC,SARK,KAAK;QAUT,iBAAO,CAAC;QARD,wBAAmB,GAAoB,IAAI,KAAK,EAAa,CAAC;QAC9D,gBAAW,GAAoB,IAAI,KAAK,EAAa,CAAC;QAGvD,qBAAgB,GAAG,CAAC,CAAC;QAM3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAErD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC;IAEM,kCAAkB,GAAzB,UAA0B,SAAoB;QAE7C,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,IAAI,GAAG,GAAU,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAEzC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;QAEvB,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,sBAAW,4BAAS;aAApB;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACxC,CAAC;aAED,UAAqB,KAAe;YAEnC,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;YAExC,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzF,CAAC;;;OAPA;IASM,wBAAQ,GAAf,UAAgB,KAAmB;QAElC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,wBAAQ,GAAf,UAAgB,KAAmB;QAElC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEM,2BAAW,GAAlB,UAAmB,KAAmB;QAErC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,6BAAa,GAApB,UAAqB,KAAY;QAEhC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGM,0BAAU,GAAjB,UAAkB,KAAY;QAE7B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,sBAAW,8BAAW;aAAtB;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAC1C,CAAC;;;OAAA;IAED;;OAEG;IACI,+BAAe,GAAtB,UAAuB,aAA2B;QAEjD,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAElD,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1B,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,kCAAkB,GAAzB,UAA0B,SAAmB;QAE5C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzC,AACA,qDADqD;QACrD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,iCAAiB,GAAxB,UAAyB,aAA2B;QAEnD,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC;YAC3B,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEpD,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1B,aAAa,CAAC,mBAAmB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,oCAAoB,GAA3B,UAA4B,SAAmB;QAE9C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhF,AACA,qEADqE;QACrE,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IACF,YAAC;AAAD,CA1HA,AA0HC,EA1HmB,eAAe,EA0HlC;AAED,AAAe,iBAAN,KAAK,CAAC;;;;ACjIf,IAAO,QAAQ,WAAgB,gCAAgC,CAAC,CAAC;AAEjE,IAAO,KAAK,WAAgB,qCAAqC,CAAC,CAAC;AAGnE,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAI3E,IAAO,MAAM,WAAgB,oCAAoC,CAAC,CAAC;AACnE,IAAO,WAAW,WAAe,uCAAuC,CAAC,CAAC;AAC1E,IAAO,UAAU,WAAe,sCAAsC,CAAC,CAAC;AACxE,IAAO,aAAa,WAAc,yCAAyC,CAAC,CAAC;AAC7E,IAAO,YAAY,WAAe,0CAA0C,CAAC,CAAC;AAE9E,IAAM,IAAI;IAgDT;;;;;;;;;OASG;IACH,SA1DK,IAAI,CA0DG,QAAkB,EAAE,KAAkB,EAAE,MAAoB;QA1DzE,iBA8jBC;QApgBgC,qBAAkB,GAAlB,YAAkB;QAAE,sBAAoB,GAApB,aAAoB;QAjChE,WAAM,GAAU,CAAC,CAAC;QAClB,YAAO,GAAU,CAAC,CAAC;QAEnB,UAAK,GAAU,CAAC,CAAC;QACjB,eAAU,GAAU,CAAC,CAAC;QACtB,qBAAgB,GAAU,QAAQ,CAAC;QACnC,qBAAgB,GAAU,CAAC,CAAC;QAE5B,mBAAc,GAAW,IAAI,CAAC;QAC9B,kBAAa,GAAW,IAAI,CAAC;QAO7B,iBAAY,GAAW,IAAI,aAAa,EAAE,CAAC;QAmBlD,IAAI,CAAC,gCAAgC,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC;QAClG,IAAI,CAAC,4BAA4B,GAAG,UAAC,KAAiB,IAAK,OAAA,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAA/B,CAA+B,CAAC;QAC3F,IAAI,CAAC,0BAA0B,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAA7B,CAA6B,CAAC;QACzF,IAAI,CAAC,yBAAyB,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAA5B,CAA4B,CAAC;QAEvF,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,AACA,mCADmC;QACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAE9C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAExC,4BAA4B;QAC5B,8CAA8C;IAC7C,CAAC;IAED;;;OAGG;IACK,sCAAuB,GAA/B,UAAgC,KAAgB;QAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IACjD,CAAC;IAID,sBAAW,wBAAM;aAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAED,sBAAW,wBAAM;aAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAKD,sBAAW,6BAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAID,sBAAW,0BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAoB,KAAe;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC;gBAC5B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACrG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACpG,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAEhG,AACA,wBADwB;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;YAEnE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE/C,AACA,mBADmB;YACnB,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAC3E,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YACpE,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;;;OAhCA;IAqCD,sBAAW,8BAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAa;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;gBAC/B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACpD,CAAC;;;OAXA;IAgBD,sBAAW,iCAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA2B,KAAY;YAEtC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAC,IAAI,CAAC;QACrD,CAAC;;;OAZA;IAkBD,sBAAW,iCAAe;QAJ1B;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;QAED;;;WAGG;aACH,UAA2B,KAAY;YAEtC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YAEX,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACnE,CAAC;;;OAjBA;IAuBD,sBAAW,wBAAM;QAJjB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QAED;;WAEG;aACH,UAAkB,KAAY;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;gBAC1B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAEtG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAElD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAClG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5B,CAAC;;;OAxBA;IA8BD,sBAAW,uBAAK;QAJhB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAED;;WAEG;aACH,UAAiB,KAAW;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAEvG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAEnG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACnD,CAAC;;;OAnBA;IAyBD,sBAAW,2BAAS;QAJpB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,uBAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAC9C,CAAC;;;OAZA;IAiBD,sBAAW,wBAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;QAC/C,CAAC;;;OAZA;IAiBD,sBAAW,6BAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAa;YAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;gBACjB,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI;gBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OAXA;IAgBD,sBAAW,mBAAC;QAHZ;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1B,CAAC;aAED,UAAa,KAAY;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;QAC7C,CAAC;;;OATA;IAcD,sBAAW,mBAAC;QAHZ;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1B,CAAC;aAED,UAAa,KAAY;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;QAC5C,CAAC;;;OATA;IAcD,sBAAW,yBAAO;QAHlB;;WAEG;aACH;YAEC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;QAC1D,CAAC;aAED,UAAmB,KAAa;YAE/B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,GAAE,SAAS,GAAG,QAAQ,CAAC;YACjE,sEAAsE;QACvE,CAAC;;;OANA;IAYD,sBAAW,oCAAkB;QAJ7B;;;WAGG;aACH;YAEC,MAAM,CAAC,CAAC,EAAE,MAAM;YAChB,8DAA8D;QAC/D,CAAC;;;OAAA;IAED;;OAEG;IACI,qBAAM,GAAb;QAEC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,AACA,2BAD2B;QAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QAE3D,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACnL,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpK,CAAC;QAED,AACA,iBADiB;QACjB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;gBACnH,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE9G,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,CAAC;QACD,AAGA,mCAHmC;QAEnC,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,AACA,0BAD0B;QAC1B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAExD,AACA,6CAD6C;QAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,0BAAW,GAAlB;QAEC,IAAI,IAAI,GAAU,QAAQ,EAAE,CAAC;QAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,sBAAO,GAAd;QAEC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAE1B,AACA,iDADiD;QACjD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAExC,AAGA,mDAHmD;QACnD,iCAAiC;QAEjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,AAEA,8BAF8B;QAE9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAKD,sBAAW,kCAAgB;QAH3B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;;;OAAA;IAED;;OAEG;IACK,kCAAmB,GAA3B,UAA4B,KAAiB;QAE5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,gCAAiB,GAAzB,UAA0B,KAAmB;QAE5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,+BAAgB,GAAxB,UAAyB,KAAmB;QAE3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,sBAAO,GAAd,UAAe,OAAgB;QAE9B,IAAI,CAAC,GAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAC1F,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;QAE5F,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IAEM,wBAAS,GAAhB,UAAiB,EAAS,EAAE,EAAS,EAAE,EAAS;QAE/C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElN,CAAC;IAEM,qBAAM,GAAb,UAAc,EAAS,EAAE,EAAS,EAAE,EAAS;QAE5C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvG,CAAC;IAiBD;;;;;OAKG;IACH;;;;;;OAMG;IAEH,oCAAoC;IAC7B,6BAAc,GAArB;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/G,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,eAAe,GAAsB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE/G,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,IAAI,IAAI,IAAI,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;gBAChK,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,eAAe,CAAC;QACzD,CAAC;IACF,CAAC;IACF,WAAC;AAAD,CA9jBA,AA8jBC,IAAA;AAED,AAAc,iBAAL,IAAI,CAAC;;;;ACnlBd,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAIpF,IAAM,cAAc;IAMnB,SANK,cAAc,CAMP,YAAiC;QAAjC,4BAAiC,GAAjC,mBAAiC;QAHtC,iBAAY,GAAW,IAAI,CAAC;QAKlC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,CAAC;IAEM,sCAAa,GAApB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,CAAC;IACF,CAAC;IAED,sBAAW,wCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAwB,GAAiB;YAExC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC;gBAChC,MAAM,CAAC;YACR,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAjBA;IAmBD,sBAAW,sCAAU;aAArB;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAsB,GAAW;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC9B,MAAM,CAAC;YACR,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzC,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzC,CAAC;YACF,CAAC;QACF,CAAC;;;OAhBA;IAkBM,+BAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IACF,qBAAC;AAAD,CAjEA,AAiEC,IAAA;AAED,AAAwB,iBAAf,cAAc,CAAC;;;;;;;;;;ACvExB,IAAO,UAAU,WAAc,iCAAiC,CAAC,CAAC;AAElE,IAAO,cAAc,WAAa,+CAA+C,CAAC,CAAC;AAGnF,AAKA;;;;GADG;IACG,qBAAqB;IAAS,UAA9B,qBAAqB,UAAuB;IA0IjD;;OAEG;IACH,SA7IK,qBAAqB,CA6Id,YAAiC,EAAE,QAAmB,EAAE,SAAqB,EAAE,YAAyB,EAAE,YAAwB,EAAE,KAAgB,EAAE,YAA4B;QAAlL,4BAAiC,GAAjC,mBAAiC;QAAE,wBAAmB,GAAnB,YAAmB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,4BAAyB,GAAzB,gBAAuB,EAAE;QAAE,4BAAwB,GAAxB,iBAAwB;QAAE,qBAAgB,GAAhB,SAAgB;QAAE,4BAA4B,GAA5B,oBAA4B;QAE7L,kBAAM,YAAY,CAAC,CAAC;QA7Id,sBAAiB,GAAU,CAAC,CAAC;QAC5B,uBAAkB,GAAU,EAAE,CAAC;QAE/B,cAAS,GAAU,CAAC,CAAC;QACrB,eAAU,GAAU,EAAE,CAAC;QACvB,kBAAa,GAAU,CAAC,EAAE,CAAC;QAC3B,kBAAa,GAAU,EAAE,CAAC;QAC1B,WAAM,GAAU,CAAC,CAAC;QAClB,mBAAc,GAAU,CAAC,CAAC;QAC1B,qBAAgB,GAAU,CAAC,CAAC;QAC5B,kBAAa,GAAW,KAAK,CAAC;QAE/B,QAAG,GAAW,KAAK,CAAC;QAmI1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,AACA,qDADqD;QACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3C,CAAC;IAnID,sBAAW,wCAAK;QARhB;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,GAAU;YAE1B,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAE,CAAC,GAAG,GAAG,CAAC;YAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAElB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAZA;IAiBD,sBAAW,2CAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,GAAU;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YAErB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAVA;IAeD,sBAAW,4CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,GAAU;YAE9B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;YAEtE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;gBAC1B,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YAEtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAZA;IAmBD,sBAAW,+CAAY;QALvB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAU;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC;;;OAVA;IAiBD,sBAAW,+CAAY;QALvB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAU;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC;;;OAVA;IAgBD,sBAAW,+CAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAW;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAVA;IA+BD;;;;;;;;;;OAUG;IACI,sCAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAE5F,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACpE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,GAAG,CAAC;gBAC3C,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAC,GAAG,CAAC;gBACrC,CAAC;gBAED,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG;oBACpD,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;gBAE/B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG;oBACnD,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;YAChC,CAAC;YAED,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACxF,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,CAAC;YAED,AACA,4CAD4C;YAC5C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/H,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAErD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9D,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBAClG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC3B,CAAC;IAEF,CAAC;IAEM,6CAAa,GAApB,UAAqB,GAAU;QAE9B,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;QAE3B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEM,+CAAe,GAAtB,UAAuB,GAAU;QAEhC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,MAAM,CAAC;QAER,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC;QAE7B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEF,4BAAC;AAAD,CArPA,AAqPC,EArPmC,cAAc,EAqPjD;AAED,AAA+B,iBAAtB,qBAAqB,CAAC;;;;;;;;;;AChQ/B,IAAO,eAAe,WAAa,gDAAgD,CAAC,CAAC;AAErF,AAMA;;;;;GADG;IACG,gBAAgB;IAAS,UAAzB,gBAAgB,UAAwB;IAE7C,SAFK,gBAAgB,CAET,YAAiC,EAAE,YAAiC,EAAE,SAAqB,EAAE,QAAqB;QAAlH,4BAAiC,GAAjC,mBAAiC;QAAE,4BAAiC,GAAjC,mBAAiC;QAAE,yBAAqB,GAArB,cAAqB;QAAE,wBAAqB,GAArB,cAAqB;QAE7H,kBAAM,YAAY,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEM,iCAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,WAAW,GAAG,WAAW,EAAE,2BAA2B;QAEtD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACtB,MAAM,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;QACpD,gBAAK,CAAC,MAAM,WAAE,CAAC;IAChB,CAAC;IACF,uBAAC;AAAD,CAjBA,AAiBC,EAjB8B,eAAe,EAiB7C;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;;;;;;;AC5B1B,IAAO,UAAU,WAAc,iCAAiC,CAAC,CAAC;AAClE,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAG/D,IAAO,gBAAgB,WAAa,iDAAiD,CAAC,CAAC;AAEvF,AAKA;;;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAyB;IA0N7C;;OAEG;IACH,SA7NK,eAAe,CA6NR,YAAiC,EAAE,YAAiC,EAAE,QAAmB,EAAE,SAAqB,EAAE,QAAsB,EAAE,YAAyB,EAAE,YAAwB,EAAE,WAAyB,EAAE,WAAyB,EAAE,KAAgB,EAAE,OAAkB,EAAE,YAA4B;QAAvT,4BAAiC,GAAjC,mBAAiC;QAAE,4BAAiC,GAAjC,mBAAiC;QAAE,wBAAmB,GAAnB,YAAmB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,wBAAsB,GAAtB,eAAsB;QAAE,4BAAyB,GAAzB,gBAAuB,EAAE;QAAE,4BAAwB,GAAxB,iBAAwB;QAAE,2BAAyB,GAAzB,kBAAyB;QAAE,2BAAyB,GAAzB,kBAAyB;QAAE,qBAAgB,GAAhB,SAAgB;QAAE,uBAAkB,GAAlB,WAAkB;QAAE,4BAA4B,GAA5B,oBAA4B;QAElU,kBAAM,YAAY,EAAE,YAAY,CAAC,CAAC;QA7N5B,sBAAiB,GAAU,CAAC,CAAC;QAC7B,uBAAkB,GAAU,EAAE,CAAC;QAE9B,cAAS,GAAU,CAAC,CAAC;QACrB,eAAU,GAAU,EAAE,CAAC;QACvB,cAAS,GAAU,IAAI,CAAC;QACxB,iBAAY,GAAU,CAAC,QAAQ,CAAC;QAChC,iBAAY,GAAU,QAAQ,CAAC;QAC/B,kBAAa,GAAU,CAAC,EAAE,CAAC;QAC3B,kBAAa,GAAU,EAAE,CAAC;QAC1B,WAAM,GAAU,CAAC,CAAC;QAClB,aAAQ,GAAU,CAAC,CAAC;QACpB,kBAAa,GAAW,KAAK,CAAC;QAC9B,YAAO,GAAY,IAAI,QAAQ,EAAE,CAAC;QAkNzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,CAAE,WAAW,IAAI,IAAI,CAAE,GAAE,WAAW,GAAG,CAAC,QAAQ,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,CAAE,WAAW,IAAI,IAAI,CAAE,GAAE,WAAW,GAAG,QAAQ,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,AACA,qDADqD;QACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3C,CAAC;IAtND,sBAAW,kCAAK;QARhB;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,GAAU;YAE1B,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAE,CAAC,GAAG,GAAG,CAAC;YAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;gBACtB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAElB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAZA;IAiBD,sBAAW,qCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,GAAU;YAE7B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;YAEpE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YAErB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAZA;IAiBD,sBAAW,sCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,GAAU;YAE9B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;YAEtE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;gBAC1B,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YAEtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAZA;IAiBD,sBAAW,qCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,GAAU;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YAErB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAVA;IAiBD,sBAAW,wCAAW;QALtB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,GAAU;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1F,CAAC;;;OAVA;IAiBD,sBAAW,wCAAW;QALtB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,GAAU;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;gBAC5B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1F,CAAC;;;OAVA;IAiBD,sBAAW,yCAAY;QALvB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAU;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC;;;OAVA;IAiBD,sBAAW,yCAAY;QALvB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAU;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9F,CAAC;;;OAVA;IAiBD,sBAAW,oCAAO;QALlB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAmB,GAAU;YAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAVA;IAeD,sBAAW,yCAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,GAAW;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAVA;IAmCD;;;;;;;;;;OAUG;IACI,gCAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAE5F,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBACpE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,GAAG,CAAC;gBAC3C,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,GAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAC,GAAG,CAAC;gBACrC,CAAC;gBAED,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG;oBACpD,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;gBAE/B,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG;oBACnD,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC;YAChC,CAAC;YAED,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACxF,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtF,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;gBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3C,CAAC;YAED,AACA,4CAD4C;YAC5C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/H,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,CAAC;QACF,CAAC;QAED,IAAI,GAAG,GAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1I,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAC,UAAU,CAAC,kBAAkB,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAC3K,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC;QACzH,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAC,UAAU,CAAC,kBAAkB,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAE3K,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAC,UAAU,CAAC,kBAAkB,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjJ,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAC,UAAU,CAAC,kBAAkB,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAEjJ,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAE,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClJ,CAAC;IACF,CAAC;IACF,sBAAC;AAAD,CAjTA,AAiTC,EAjT6B,gBAAgB,EAiT7C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;AC9TzB,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAG/D,IAAO,cAAc,WAAa,+CAA+C,CAAC,CAAC;AACnF,IAAO,kBAAkB,WAAY,8CAA8C,CAAC,CAAC;AAErF,IAAM,gBAAgB;IAAS,UAAzB,gBAAgB,UAAuB;IAQ5C,SARK,gBAAgB,CAQT,YAAiC,EAAE,YAAiC;QARjF,iBA2EC;QAnEY,4BAAiC,GAAjC,mBAAiC;QAAE,4BAAiC,GAAjC,mBAAiC;QAE/E,kBAAM,YAAY,CAAC,CAAC;QANd,aAAQ,GAAY,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAQtD,IAAI,CAAC,8BAA8B,GAAG,UAAC,KAAwB,IAAK,OAAA,KAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAjC,CAAiC,CAAC;QAEtG,EAAE,CAAC,CAAC,YAAY,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,IAAI;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,sBAAW,4CAAc;aAAzB;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA0B,GAAY;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBACxH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAXA;IAaD,sBAAW,0CAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAwB,GAAiB;YAExC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC;gBAC9B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAEzH,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAEtH,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;;;OAnBA;IAqBD,WAAW;IACJ,iCAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAE,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpI,CAAC;IACF,CAAC;IAEO,gDAAqB,GAA7B,UAA8B,KAAwB;QAErD,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IACF,uBAAC;AAAD,CA3EA,AA2EC,EA3E8B,cAAc,EA2E5C;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;;;;;;;ACnF1B,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAG/D,IAAO,gBAAgB,WAAa,iDAAiD,CAAC,CAAC;AAEvF,AAKA;;;;GADG;IACG,gBAAgB;IAAS,UAAzB,gBAAgB,UAAyB;IA+B9C,SA/BK,gBAAgB,CA+BT,YAAiC,EAAE,YAAiC,EAAE,SAAoB,EAAE,IAAgB,EAAE,OAAkB;QAAhI,4BAAiC,GAAjC,mBAAiC;QAAE,4BAAiC,GAAjC,mBAAiC;QAAE,yBAAoB,GAApB,aAAoB;QAAE,oBAAgB,GAAhB,SAAgB;QAAE,uBAAkB,GAAlB,WAAkB;QAE3I,kBAAM,YAAY,EAAE,YAAY,CAAC,CAAC;QAPnC;;WAEG;QACI,mBAAc,GAAY,IAAI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAM5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,QAAQ,EAAE,CAAC;IAExC,CAAC;IAEM,iCAAM,GAAb,UAAc,WAA0B;QAA1B,2BAA0B,GAA1B,kBAA0B;QAEvC,IAAI,IAAa,CAAC;QAElB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAChD,MAAM,CAAC;QAER,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpG,gBAAK,CAAC,MAAM,WAAE,CAAC;IAChB,CAAC;IACF,uBAAC;AAAD,CA/EA,AA+EC,EA/E8B,gBAAgB,EA+E9C;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;AC3F1B,IAAM,WAAW;IAAjB,SAAM,WAAW;IAMjB,CAAC;IAJO,gBAAI,GAAU,MAAM,CAAC;IACrB,iBAAK,GAAU,OAAO,CAAC;IACvB,iBAAK,GAAU,OAAO,CAAC;IACvB,kBAAM,GAAU,QAAQ,CAAC;IACjC,kBAAC;AAAD,CANA,AAMC,IAAA;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;ACaH;;;;;;;;;;AClBlB,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AAGnE,IAAO,aAAa,WAAa,uCAAuC,CAAC,CAAC;AAE1E,IAAO,UAAU,WAAc,yCAAyC,CAAC,CAAC;AAG1E,IAAO,aAAa,WAAa,yCAAyC,CAAC,CAAC;AAG5E,AAmCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAFG;IAEG,SAAS;IAAS,UAAlB,SAAS,UAAsB;IAgHpC,SAhHK,SAAS,CAgHF,QAAqB,EAAE,aAA6B,EAAE,SAAyB;QAhH5F,iBA4LC;QA5EmC,6BAA6B,GAA7B,sBAA6B;QAAE,yBAAyB,GAAzB,iBAAyB;QAE1F,iBAAO,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,qBAAqB,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAzB,CAAyB,CAAC;QAEhF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;IACzC,CAAC;IA/GD,sBAAW,+BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,gCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC;;;OAAA;IAUD,sBAAW,sCAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;;;OAAA;IAKD,sBAAW,qCAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;;;OAAA;IAKD,sBAAW,+BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAkB;YAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;gBAC3B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC5F,CAAC;YAGD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzF,CAAC;QACF,CAAC;;;OAnBA;IAiDD,sBAAW,kCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAiB;YAEvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IAqBD;;OAEG;IACI,8CAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,iCAAa,GAApB;QAEC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAEpF,gBAAK,CAAC,aAAa,WAAE,CAAC;IACvB,CAAC;IAED;;;;;;;;OAQG;IACI,mCAAe,GAAtB,UAAuB,yBAAgC,EAAE,WAAmB;QAE3E,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;IAClH,CAAC;IAED;;OAEG;IACK,iCAAa,GAArB,UAAsB,KAAmB;QAExC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAE9C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,GAAG,GAAU,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAEM,wCAAoB,GAA3B,UAA4B,YAA0B;QAErD,AAGA,uEAHuE;QACvE,kEAAkE;QAClE,iDAAiD;QACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAEM,uCAAmB,GAA1B,UAA2B,YAA0B;QAEpD,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACF,gBAAC;AAAD,CA5LA,AA4LC,EA5LuB,aAAa,EA4LpC;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;;;;;;;AC9OnB,IAAO,UAAU,WAAc,mCAAmC,CAAC,CAAC;AACpE,IAAO,QAAQ,WAAe,+BAA+B,CAAC,CAAC;AAC/D,IAAO,OAAO,WAAe,8BAA8B,CAAC,CAAC;AAE7D,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AACnE,IAAO,eAAe,WAAa,wCAAwC,CAAC,CAAC;AAE7E,IAAO,qBAAqB,WAAW,mDAAmD,CAAC,CAAC;AAE5F,IAAO,sBAAsB,WAAW,sDAAsD,CAAC,CAAC;AAEhG,IAAO,WAAW,WAAc,uCAAuC,CAAC,CAAC;AACzE,IAAO,UAAU,WAAc,yCAAyC,CAAC,CAAC;AAK1E,IAAM,MAAM;IAAS,UAAf,MAAM,UAA+B;IAS1C,SATK,MAAM,CASC,UAA6B;QAT1C,iBAgRC;QAvQY,0BAA6B,GAA7B,iBAA6B;QAExC,iBAAO,CAAC;QATD,oBAAe,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC1C,yBAAoB,GAAW,IAAI,CAAC;QAGpC,wBAAmB,GAAW,IAAI,CAAC;QAO1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,kCAAkC,GAAG,UAAC,KAAqB,IAAK,OAAA,KAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC;QAE3G,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,IAAI,qBAAqB,EAAE,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAE3G,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;QAExC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAEhB,CAAC;IAEM,6CAA4B,GAAnC;QAEC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,2CAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAGD,sBAAW,6BAAS;QADpB,WAAW;aACX;YAEC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,CAAC;;;OAAA;IAEO,0CAAyB,GAAjC,UAAkC,KAAqB;QAEtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,sBAAW,iCAAa;aAAxB;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAEO,8BAAa,GAArB;QAEC,IAAI,CAAQ,EAAE,CAAQ,EAAE,CAAQ,CAAC;QACjC,AACA,iBADiB;YACb,GAAU,EAAE,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACnD,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACnD,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACnD,IAAI,GAAU,EAAE,GAAU,EAAE,GAAU,EAAE,GAAU,CAAC;QACnD,IAAI,CAAS,CAAC;QACd,IAAI,GAAG,GAAY,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,MAAa,CAAC;QAClB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAEvC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAEd,AACA,aADa;QACb,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAC,MAAM,CAAC;QAE1B,AACA,cADc;QACd,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAC,MAAM,CAAC;QAEzB,AACA,SADS;QACT,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAC,MAAM,CAAC;QAE1B,AACA,MADM;QACN,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAC,MAAM,CAAC;QAEzB,AACA,OADO;QACP,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,CAAC;QACR,CAAC,GAAG,GAAG,CAAC;QACR,CAAC,GAAG,GAAG,CAAC;QACR,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAC,MAAM,CAAC;QAElB,AACA,MADM;QACN,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAC,MAAM,CAAC;QAEzB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAElC,CAAC;IAED;;OAEG;IACI,0CAAyB,GAAhC;QAEC,gBAAK,CAAC,yBAAyB,WAAE,CAAC;QAElC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,8BAAa,GAApB;QAEC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAKD,sBAAW,8BAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAsB,KAAiB;YAEtC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;gBAC7B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAE/C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC9G,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC3G,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;;;OAdA;IAmBD,sBAAW,kCAAc;QAHzB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC1D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YACnC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;;;OAAA;IAED;;;;;;;OAOG;IACI,uBAAM,GAAb,UAAc,EAAS,EAAE,EAAS,EAAE,EAAS;QAE5C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IAED;;;;;OAKG;IACI,wBAAO,GAAd,UAAe,OAAgB;QAE9B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACI,0BAAS,GAAhB,UAAiB,EAAS,EAAE,EAAS,EAAE,EAAS;QAE/C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAEM,qCAAoB,GAA3B,UAA4B,YAA0B;QAErD,AAGA,uEAHuE;QACvE,kEAAkE;QAClE,iDAAiD;QACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAEM,oCAAmB,GAA1B,UAA2B,YAA0B;QAEpD,oBAAoB;IACrB,CAAC;IACF,aAAC;AAAD,CAhRA,AAgRC,EAhRoB,sBAAsB,EAgR1C;AAED,AAAgB,iBAAP,MAAM,CAAC;;;;;;;;;;ACnShB,IAAO,UAAU,WAAe,mCAAmC,CAAC,CAAC;AACrE,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAChE,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAEhE,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AACpE,IAAO,oBAAoB,WAAa,mDAAmD,CAAC,CAAC;AAK7F,IAAO,uBAAuB,WAAY,oEAAoE,CAAC,CAAC;AAEhH,IAAM,gBAAgB;IAAS,UAAzB,gBAAgB,UAAkB;IAOvC,SAPK,gBAAgB,CAOT,IAAe,EAAE,IAAgB,EAAE,IAAe;QAAlD,oBAAe,GAAf,QAAe;QAAE,oBAAgB,GAAhB,QAAe,CAAC;QAAE,oBAAe,GAAf,QAAe;QAE7D,iBAAO,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,eAAe,GAAG,IAAI,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,sBAAW,4CAAc;aAAzB;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;gBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE9B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;;;OAAA;IAED,sBAAW,uCAAS;aAApB;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAc;YAElC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;YAElC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;;;OAdA;IAgBD;;;OAGG;IACI,uDAA4B,GAAnC;QAEC,AACA,sEADsE;QACtE,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,wCAAa,GAApB;IAEA,CAAC;IAED,WAAW;IACJ,gDAAqB,GAA5B;QAEC,gBAAK,CAAC,qBAAqB,WAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;IACJ,8CAAmB,GAA1B;QAEC,MAAM,CAAC,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,qDAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,UAAU;IACH,qDAA0B,GAAjC,UAAkC,MAAc,EAAE,MAAa,EAAE,MAAsB;QAAtB,sBAAsB,GAAtB,aAAsB;QAEtF,IAAI,GAAG,GAAiB,IAAI,KAAK,EAAU,CAAC;QAC5C,IAAI,MAAM,GAAsB,MAAM,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,GAAY,IAAI,QAAQ,EAAE,CAAC;QAEhC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAErC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE3B,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE5D,IAAI,IAAI,GAAU,QAAQ,EAAE,IAAI,GAAU,CAAC,QAAQ,CAAC;QACpD,IAAI,IAAI,GAAU,QAAQ,EAAE,IAAI,GAAU,CAAC,QAAQ,CAAC;QACpD,IAAI,IAAI,GAAU,QAAQ,EAAE,IAAI,GAAU,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAQ,CAAC;QACb,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YAChC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YAEV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YAEV,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YAEV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YAEV,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YAEV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;QACX,CAAC;QAED,IAAI,SAAS,GAAU,CAAC,GAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,GAAU,CAAC,GAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,SAAS,GAAU,CAAC,GAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,SAAS,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,SAAS,CAAC;QACrB,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;QACpB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,SAAS,CAAC;QACnC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,SAAS,CAAC;QACnC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAC,SAAS,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACpF,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEZ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACX,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEzB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAEM,+CAAoB,GAA3B,UAA4B,YAA0B;QAErD,oBAAoB;IACrB,CAAC;IACF,uBAAC;AAAD,CA1JA,AA0JC,EA1J8B,SAAS,EA0JvC;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;ACnBT;;;;;;;;;;ACrJjB,IAAO,UAAU,WAAe,mCAAmC,CAAC,CAAC;AAGrE,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAE5D,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAEpE,IAAO,cAAc,WAAc,6CAA6C,CAAC,CAAC;AAMlF,IAAM,UAAU;IAAS,UAAnB,UAAU,UAAkB;IAKjC,SALK,UAAU,CAKH,UAA0B,EAAE,WAAkC;QAAlC,2BAAkC,GAAlC,kBAAkC;QAEzE,iBAAO,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,sBAAW,kCAAU;aAArB;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAsB,KAAqB;YAE1C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1B,CAAC;;;OALA;IAOD,sBAAW,mCAAW;aAAtB;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAqB;YAE3C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IAOD;;OAEG;IACI,+CAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,WAAW;IACJ,kCAAa,GAApB;QAEC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,WAAW;IACJ,iDAA4B,GAAnC;QAEC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;IACzB,CAAC;IAED,WAAW;IACJ,+CAA0B,GAAjC,UAAkC,MAAc,EAAE,MAAa,EAAE,MAAsB;QAAtB,sBAAsB,GAAtB,aAAsB;QAEtF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACzF,CAAC;IAEM,yCAAoB,GAA3B,UAA4B,YAA0B;QAErD,oBAAoB;IACrB,CAAC;IACF,iBAAC;AAAD,CAjEA,AAiEC,EAjEwB,SAAS,EAiEjC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AC9EpB,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAGpE,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAE3E,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAE3E,IAAO,aAAa,WAAc,yCAAyC,CAAC,CAAC;AAI7E,AAGA;;GADG;IACG,WAAW;IAAS,UAApB,WAAW,UAAsB;IA2HtC;;;;;;OAMG;IACH,SAlIK,WAAW,CAkIJ,QAAqB,EAAE,aAAsB,EAAE,WAAoB,EAAE,SAAoB;QAlItG,iBA0MC;QAxEiF,yBAAoB,GAApB,aAAoB;QAEpG,iBAAO,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,qBAAqB,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAzB,CAAyB,CAAC;QAEhF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,SAAS,GAAC,GAAG,CAAC;IACrC,CAAC;IA/HD,sBAAW,iCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,kCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QAC/B,CAAC;;;OAAA;IAKD,sBAAW,qCAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAED,sBAAW,sCAAa;aAAxB,UAAyB,KAAc;YAEtC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;;;OAAA;IAKD,sBAAW,oCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAc;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;;;OAVA;IAeD,sBAAW,iCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAkB;YAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;gBAC3B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC5F,CAAC;YAGD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzF,CAAC;QACF,CAAC;;;OAnBA;IAwBD,sBAAW,kCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAC,CAAC,CAAC;QAC9B,CAAC;aAED,UAAqB,KAAY;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,GAAC,GAAG,CAAC;YAEhC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;;;OAVA;IAeD,sBAAW,oCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAiB;YAEvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IA6BM,6BAAO,GAAd;QAEC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,gDAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,mCAAa,GAApB;QAEC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE/J,gBAAK,CAAC,aAAa,WAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,mCAAa,GAArB,UAAsB,KAAmB;QAExC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,4CAAsB,GAA9B;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAEM,0CAAoB,GAA3B,UAA4B,YAA0B;QAErD,AAGA,uEAHuE;QACvE,kEAAkE;QAClE,iDAAiD;QACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAEM,yCAAmB,GAA1B,UAA2B,YAA0B;QAEpD,MAAM;IACP,CAAC;IACF,kBAAC;AAAD,CA1MA,AA0MC,EA1MyB,aAAa,EA0MtC;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;;;;;;;AC5NrB,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAIpE,IAAO,QAAQ,WAAgB,kCAAkC,CAAC,CAAC;AAKnE,IAAO,sBAAsB,WAAY,sDAAsD,CAAC,CAAC;AACjG,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAE3E,IAAO,aAAa,WAAc,yCAAyC,CAAC,CAAC;AAI7E,AAKA;;;;GADG;IACG,IAAI;IAAS,UAAb,IAAI,UAA+B;IAqLxC;;;;;OAKG;IACH,SA3LK,IAAI,CA2LG,QAAiB,EAAE,QAA4B;QA3L5D,iBAieC;QAtS+B,wBAA4B,GAA5B,eAA4B;QAE1D,iBAAO,CAAC;QArLD,kBAAa,GAAW,IAAI,CAAC;QAC7B,4BAAuB,GAAW,IAAI,CAAC;QAsL9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAY,CAAC;QAExC,IAAI,CAAC,gCAAgC,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC;QACrG,IAAI,CAAC,2BAA2B,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAA9B,CAA8B,CAAC;QAC3F,IAAI,CAAC,6BAA6B,GAAG,UAAC,KAAmB,IAAK,OAAA,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC;QAE/F,AACA,4IAD4I;QAC5I,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,QAAQ,EAAE,CAAC;QAE3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAzLD,sBAAW,0BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAe;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACxC,IAAI,OAAgB,CAAC;YAErB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAE7B,AACA,2GAD2G;gBAC3G,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;gBAED,AACA,4EAD4E;gBAC5E,OAAO,CAAC,8BAA8B,EAAE,CAAC;YAC1C,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;;;OA3BA;IAgCD,sBAAW,2BAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,8BAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAa;YAEpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OALA;IAUD,sBAAW,0BAAQ;QAHnB;;WAEG;aACH;YAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAElC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAc;YAEjC,IAAI,CAAQ,CAAC;YAEb,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACxG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACvG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAE3G,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBAE9B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAEpB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBACrG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACpG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAExG,IAAI,QAAQ,GAA0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;gBAEnE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;;;OA9BA;IAmCD,sBAAW,0BAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAkB;YAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;gBAC3B,MAAM,CAAC;YAER,IAAI,CAAQ,CAAC;YACb,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACxC,IAAI,OAAgB,CAAC;YAErB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;oBAC/E,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAEvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBACvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;oBAC/E,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;;;OApBA;IAyBD,sBAAW,wCAAsB;QAHjC;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACrC,CAAC;aAED,UAAkC,KAAa;YAE9C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACtC,CAAC;;;OALA;IAWD,sBAAW,2BAAS;QAJpB;;;WAGG;aACH;YAEC,AAGA,uEAHuE;YACvE,kEAAkE;YAClE,iDAAiD;YACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAElC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAKD,sBAAW,6BAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAiB;YAEvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IA+BD;;OAEG;IACI,kCAAmB,GAA1B;QAEC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,sBAAO,GAAd;QAEC,gBAAK,CAAC,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,6CAA8B,GAArC;QAEC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,oBAAK,GAAZ;QAEC,IAAI,KAAK,GAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAGnC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC3D,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,AAEA,qCAFqC;QACrC,2HAA2H;QAC3H,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;QAG3E,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,GAAO,CAAC;QAEZ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YAC1B,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,QAAQ,CAA0B,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAClB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEzC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,wCAAyB,GAAhC,UAAiC,WAA2B;QAE3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACI,yCAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,4BAAa,GAApB;QAEC,IAAI,CAAQ,EAAE,CAAQ,EAAE,CAAQ,CAAC;QACjC,IAAI,QAAQ,GAA0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QACnE,IAAI,OAAuB,CAAC;QAC5B,IAAI,iBAA+B,CAAC;QACpC,IAAI,WAAW,GAAU,QAAQ,CAAC,MAAM,CAAC;QACzC,IAAI,IAAW,EAAE,IAAW,EAAE,IAAW,CAAC;QAC1C,IAAI,IAAW,EAAE,IAAW,EAAE,IAAW,CAAC;QAE1C,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC;YACN,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEvC,CAAC,GAAG,WAAW,CAAC;YAChB,OAAO,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACtB,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACnD,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;gBAC7B,OAAO,CAAC,EAAE,EAAE,CAAC;oBACZ,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACzB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACZ,IAAI,GAAG,CAAC,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACjB,IAAI,GAAG,CAAC,CAAC;oBAEV,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE7B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACZ,IAAI,GAAG,CAAC,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACjB,IAAI,GAAG,CAAC,CAAC;oBAEV,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE7B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACZ,IAAI,GAAG,CAAC,CAAC;oBACV,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;wBACjB,IAAI,GAAG,CAAC,CAAC;gBACX,CAAC;YACF,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,gBAAK,CAAC,aAAa,WAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACK,sCAAuB,GAA/B,UAAgC,KAAmB;QAElD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACK,iCAAkB,GAA1B,UAA2B,KAAmB;QAE7C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACK,mCAAoB,GAA5B,UAA6B,KAAmB;QAE/C,IAAI,OAAgB,CAAC;QACrB,IAAI,OAAO,GAAmB,KAAK,CAAC,WAAW,CAAC;QAChD,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,IAAI,CAAQ,CAAC;QAMb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YAE1B,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAE7B,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC;gBACpC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAElB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE7B,KAAK,CAAC;YACP,CAAC;QACF,CAAC;QAED,EAAE,GAAG,CAAC;QACN,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACK,yBAAU,GAAlB,UAAmB,WAA2B;QAE7C,IAAI,YAAY,GAAiB,WAAW,CAAC,YAAY,CAAC;QAE1D,IAAI,OAAO,GAAY,IAAI,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAExC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;QAEtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACI,8BAAe,GAAtB,UAAuB,yBAAgC,EAAE,WAAmB;QAE3E,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,WAAW,CAAC,CAAC;IAC1H,CAAC;IAED;;;;;OAKG;IACI,mCAAoB,GAA3B,UAA4B,YAA0B;QAErD,AAGA,uEAHuE;QACvE,kEAAkE;QAClE,iDAAiD;QACjD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAElC,IAAI,GAAG,GAAmB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACjD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAmB,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAC3C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAEM,+CAAgC,GAAvC;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,8BAA8B,EAAE,CAAC;IACtD,CAAC;IACF,WAAC;AAAD,CAjeA,AAieC,EAjekB,sBAAsB,EAiexC;AAED,AAAc,iBAAL,IAAI,CAAC;;;;;;;;;;ACzfd,IAAO,cAAc,WAAc,uCAAuC,CAAC,CAAC;AAG5E,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAChE,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAEhE,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAEpE,IAAO,cAAc,WAAc,6CAA6C,CAAC,CAAC;AAIlF,IAAO,mBAAmB,WAAa,gEAAgE,CAAC,CAAC;AAEzG,IAAM,UAAU;IAAS,UAAnB,UAAU,UAAkB;IAMjC,SANK,UAAU;QAQd,iBAAO,CAAC;QANF,aAAQ,GAAU,KAAK,CAAC;QACxB,cAAS,GAAU,MAAM,CAAC;QAOhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAC,CAAC,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC;IAEM,wCAAmB,GAA1B;QAEC,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;IAED,sBAAW,8BAAM;aAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnB,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAC,CAAE,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAE,CAAC;QAC1F,CAAC;;;OAbA;IAeM,mCAAc,GAArB;QAEC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,sBAAW,+BAAO;aAAlB;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAmB,KAAY;YAE9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAEpB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAEhC,IAAI,CAAC,eAAe,GAAG,CAAC,GAAC,CAAE,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC;;;OAdA;IAgBD;;OAEG;IACI,+CAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,kCAAa,GAApB;QAEC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEM,iDAA4B,GAAnC;QAEC,AACA,uDADuD;QACvD,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;IAC7B,CAAC;IAEM,+CAA0B,GAAjC,UAAkC,MAAc,EAAE,MAAa,EAAE,MAAsB;QAAtB,sBAAsB,GAAtB,aAAsB;QAEtF,IAAI,GAAG,GAAY,IAAI,KAAK,CAAS,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,GAAsB,MAAM,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,GAAY,IAAI,QAAQ,EAAE,CAAC;QAEhC,AACA,mCADmC;QACnC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAExB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAErC,IAAI,GAAG,GAAO,MAAM,CAAC,IAAI,CAAC;QAC1B,IAAI,EAAE,GAAY,CAAC,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxF,IAAI,EAAE,GAAY,CAAC,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,IAAI,EAAE,GAAU,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,EAAE,GAAU,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,GAAU,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,IAAW,CAAC;QAChB,IAAI,IAAW,CAAC;QAEhB,IAAI,CAAC,GAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,CAAC,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACZ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACxG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACX,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEzB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAEM,yCAAoB,GAA3B,UAA4B,YAA0B;QAErD,oBAAoB;IACrB,CAAC;IACF,iBAAC;AAAD,CAhIA,AAgIC,EAhIwB,SAAS,EAgIjC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AChJpB,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAG3E,AAcA;;;;;;;;;;;;;GADG;IACG,KAAK;IAAS,UAAd,KAAK,UAAsB;IAahC;;OAEG;IACH,SAhBK,KAAK;QAkBT,iBAAO,CAAC;IACT,CAAC;IAXD,sBAAI,2BAAQ;QAJZ;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IASF,YAAC;AAAD,CApBA,AAoBC,EApBmB,aAAa,EAoBhC;AAED,AAAe,iBAAN,KAAK,CAAC;;;;;;;;;;ACtCf,IAAO,UAAU,WAAe,mCAAmC,CAAC,CAAC;AAErE,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAKpE,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAC3E,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAMpE,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAM3E,AAKA;;;;GADG;IACG,MAAM;IAAS,UAAf,MAAM,UAAsB;IAyLjC;;;;OAIG;IACH,SA9LK,MAAM,CA8LC,OAA8B;QAA9B,uBAA8B,GAA9B,cAA8B;QAEzC,iBAAO,CAAC;QA7LF,qBAAgB,GAAU,CAAC,CAAC;QAG5B,gBAAW,GAAU,SAAS,CAAC,MAAM,CAAC;QACrC,mBAAc,GAAwB,IAAI,KAAK,EAAiB,CAAC;QACjE,iBAAY,GAAsB,IAAI,KAAK,EAAe,CAAC;QAG3D,YAAO,GAAW,KAAK,CAAC;QACxB,YAAO,GAAW,IAAI,CAAC;QAsL9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAmB,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAhLD,sBAAW,kCAAc;QALzB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA0B,KAAY;YAErC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YAEX,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAfA;IAoBD,sBAAW,0BAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAa;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAVA;IAeD,sBAAW,0BAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAa;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAVA;IAkBD,sBAAW,+BAAW;QANtB;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,gCAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAYD,sBAAW,6BAAS;QAVpB;;;;;;;;;WASG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAqB,KAAY;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAVA;IAYM,yCAAwB,GAA/B;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACI,oCAAmB,GAA1B;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IAOD,sBAAW,2BAAO;QALlB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED,sBAAW,4BAAQ;aAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,+BAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAiB;YAEvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IAUD,sBAAW,2BAAO;QAHlB;;UAEE;aACF;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAmB,KAAqB;YAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpH,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAEjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,CAAC;;;OARA;IAyBD,sBAAW,6BAAS;aAApB;YAEC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;QACzB,CAAC;;;OAAA;IAED;;OAEG;IACI,kCAAiB,GAAxB;QAEC,WAAW;IACZ,CAAC;IAED;;OAEG;IACI,2CAA0B,GAAjC;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,6CAA4B,GAAnC;QAEC,MAAM,CAAsB,IAAI,UAAU,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,8BAAa,GAApB;QAEC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,sBAAW,gCAAY;aAAvB;YAEC,MAAM,CAAC,KAAK,EAAE,MAAM;QACrB,CAAC,GADa;;;OACb;IAED;;;OAGG;IACI,wBAAO,GAAd;QAEC,IAAI,CAAQ,CAAC;QACb,IAAI,GAAU,CAAC;QAEf,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAiB,CAAC;QAEjD,IAAI,GAAG,GAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC1C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAe,CAAC;IAC9C,CAAC;IAEM,qCAAoB,GAA3B,UAA4B,YAA0B;QAErD,yDAAyD;IAC1D,CAAC;IAEM,oCAAmB,GAA1B,UAA2B,YAA0B;IAGrD,CAAC;IAEM,kCAAiB,GAAxB,UAAyB,YAA0B;QAElD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,CAAC,YAAY,CAAC;IACrB,CAAC;IAEM,qCAAoB,GAA3B,UAA4B,YAA0B;QAErD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,YAAY,CAAC;IACrB,CAAC;IAEM,gCAAe,GAAtB,UAAuB,UAAsB;QAE5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAGM,mCAAkB,GAAzB,UAA0B,UAAsB;QAE/C,IAAI,KAAK,GAAU,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,gCAAe,GAAtB,UAAuB,cAA8B;QAEpD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACF,aAAC;AAAD,CA3TA,AA2TC,EA3ToB,aAAa,EA2TjC;AAED,AAAgB,iBAAP,MAAM,CAAC;;;;;;;;;;ACrVhB,IAAO,aAAa,WAAc,uCAAuC,CAAC,CAAC;AAS3E,AA+EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,SAAS;IAAS,UAAlB,SAAS,UAAsB;IA6kBpC;;;;;;;OAOG;IACH,SArlBK,SAAS;QAulBb,iBAAO,CAAC;QA7kBD,UAAK,GAAU,EAAE,CAAC;IA8kB1B,CAAC;IA7cD,sBAAW,oCAAa;QATxB;;;;;;;;WAQG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;;;OAAA;IAWD,sBAAW,iCAAU;QATrB;;;;;;;;WAQG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IA2GD,sBAAW,6BAAM;QAJjB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAaD;;OAEG;IACI,8BAAU,GAAjB;QAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,8BAAU,GAAjB;QAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IA8BD,sBAAW,+BAAQ;QALnB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IA8GD,sBAAW,0CAAmB;QAN9B;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;;;OAAA;IAQD,sBAAW,wCAAiB;QAN5B;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;;;OAAA;IA0CD,sBAAW,2BAAI;QARf;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;aAED,UAAgB,KAAY;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;gBACvB,MAAM,CAAC;YAER,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,CAAC;;;OARA;IAwBD,sBAAW,iCAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IAUD,sBAAW,0CAAmB;QAR9B;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;;;OAAA;IAKD,sBAAW,gCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IA2DD;;;;;;;;OAQG;IACI,8BAAU,GAAjB,UAAkB,OAAc;QAE/B,MAAM;IACP,CAAC;IAED;;;;;;;;OAQG;IACI,qCAAiB,GAAxB,UAAyB,SAAgB;QAExC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACI,uCAAmB,GAA1B,UAA2B,CAAQ,EAAE,CAAQ;QAE5C,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACI,2CAAuB,GAA9B,UAA+B,SAAS,CAAQ,OAAD,AAAQ;QAEtD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACI,qCAAiB,GAAxB,UAAyB,EAAS;QAEjC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACI,uCAAmB,GAA1B,UAA2B,CAAQ,EAAE,CAAQ;QAE5C,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACI,sCAAkB,GAAzB,UAA0B,SAAS,CAAQ,OAAD,AAAQ;QAEjD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,iCAAa,GAApB,UAAqB,SAAS,CAAQ,OAAD,AAAQ;QAE5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACI,kCAAc,GAArB,UAAsB,SAAS,CAAQ,OAAD,AAAQ;QAE7C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACI,iCAAa,GAApB,UAAqB,SAAS,CAAQ,OAAD,AAAQ;QAE5C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACI,+BAAW,GAAlB,UAAmB,SAAS,CAAQ,OAAD,AAAQ;QAE1C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,sCAAkB,GAAzB,UAA0B,SAAS,CAAQ,OAAD,AAAQ;QAEjD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,iCAAa,GAApB,UAAqB,UAA8B,EAAE,QAA4B;QAA5D,0BAA8B,GAA9B,cAA6B,CAAC;QAAE,wBAA4B,GAA5B,YAA2B,CAAC;QAEhF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,uCAAmB,GAA1B,UAA2B,KAAY;IAGvC,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,+BAAW,GAAlB,UAAmB,UAAU,CAAQ,OAAD,AAAQ,EAAE,QAAQ,CAAQ,OAAD,AAAQ,EAAE,OAAc;IAGrF,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,gCAAY,GAAnB,UAAoB,UAAU,CAAQ,OAAD,AAAQ,EAAE,QAAQ,CAAQ,OAAD,AAAQ;IAGtE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACI,iCAAa,GAApB,UAAqB,MAAiB,EAAE,UAA8B,EAAE,QAA4B;QAA5D,0BAA8B,GAA9B,cAA6B,CAAC;QAAE,wBAA4B,GAA5B,YAA2B,CAAC;IAGpG,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACW,0BAAgB,GAA9B,UAA+B,QAAe,EAAE,SAAgB;QAE/D,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IACF,gBAAC;AAAD,CA17BA,AA07BC,EA17BuB,aAAa,EA07BpC;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;;;;;;;ACrhCnB,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAgBpE,IAAO,sBAAsB,WAAa,sDAAsD,CAAC,CAAC;AAIlG,AAKA;;;;GADG;IACG,QAAQ;IAAS,UAAjB,QAAQ,UAA+B;IAoBzC,SApBE,QAAQ;QAsBN,iBAAO,CAAC;QAJJ,cAAS,GAAQ,CAAC,CAAC;QAKvB,IAAI,CAAC,aAAa,GAAC,IAAI,KAAK,EAAkB,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAC,IAAI,KAAK,EAAiB,CAAC;QACxC,IAAI,CAAC,aAAa,GAAC,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAC,GAAG,CAAC;QAChB,IAAI,CAAC,UAAU,GAAC,KAAK,CAAC;QACtB,IAAI,CAAC,IAAI,GAAC,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAC,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAC,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,GAAC,CAAC,CAAC;IACrB,CAAC;IAED,sBAAW,2BAAK;aAAhB;YAEI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aACD,UAAiB,QAAe;YAE5B,IAAI,CAAC,MAAM,GAAC,QAAQ,CAAC;QACzB,CAAC;;;OAJA;IAKD,sBAAW,yBAAG;aAAd;YAEI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;aACD,UAAe,MAAa;YAExB,IAAI,CAAC,IAAI,GAAC,MAAM,CAAC;QACrB,CAAC;;;OAJA;IAKD,sBAAW,+BAAS;aAApB;YAEE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC5B,CAAC;;;OAAA;IAED;;OAEG;IACI,yBAAM,GAAb,UAAc,SAAgB,EAAE,cAA4B;QAA5B,8BAA4B,GAA5B,sBAA4B;QAExD,IAAI,GAAU,CAAC;QACf,AACA,wEADwE;QACxE,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEtD,AAEA,0DAF0D;YAC1D,oCAAoC;gBAChC,SAAS,GAAU,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YAExB,OAAM,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC,SAAS,EAAC,CAAC;gBAC7B,EAAE,CAAA,CAAC,IAAI,CAAC,SAAS,IAAE,CAAC,CAAC,CAAA,CAAC;oBAClB,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC,SAAS,CAAC;oBAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,EAAE,CAAA,CAAC,IAAI,CAAC,SAAS,IAAE,CAAC,CAAC,CAAA,CAAC;oBACvB,IAAI,CAAC,KAAK,IAAE,IAAI,CAAC,SAAS,CAAC;gBAC/B,CAAC;YACL,CAAC;YACD,OAAM,IAAI,CAAC,KAAK,GAAC,CAAC,EAAC,CAAC;gBAChB,EAAE,CAAA,CAAC,IAAI,CAAC,SAAS,IAAE,CAAC,CAAC,CAAA,CAAC;oBAClB,IAAI,CAAC,KAAK,GAAC,CAAC,CAAC;oBACb,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,EAAE,CAAA,CAAC,IAAI,CAAC,SAAS,IAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;gBACjC,CAAC;YACL,CAAC;YAGD,AAIA,uEAJuE;YACvE,6EAA6E;YAC7E,wDAAwD;YACxD,gEAAgE;gBAC5D,QAAQ,GAAU,CAAC,CAAC;YACxB,IAAI,QAAsB,CAAC;YAC3B,IAAI,UAAU,GAAW,KAAK,CAAC;YAE/B,OAAO,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5C,AAEA,8GAF8G;gBAE9G,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzE,UAAU,GAAG,IAAI,CAAC;oBAClB,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnC,CAAC;gBACD,IAAI,CAAC,CAAC;oBACF,QAAQ,CAAC,SAAS,EAAE,EAAC,6DAA6D;oBAClF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBAClB,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;4BACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;wBACjD,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,CAAC;wBACF,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;4BAC5C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;wBAC3B,CAAC;oBACL,CAAC;gBACL,CAAC;gBACD,QAAQ,EAAE,CAAC;YACf,CAAC;YACD,AAGA,mGAHmG;YAEnG,2DAA2D;YAC3D,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACb,AACA,+CAD+C;gBAC/C,EAAE,CAAA,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAClB,AAGA,uCAHuC;oBACvC,kDAAkD;wBAE9C,UAAU,GAAQ,CAAC,EAAC,uCAAuC;oBAC/D,EAAE,CAAA,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,CAAA,CAAC;wBACd,UAAU,GAAC,CAAC,EAAC,wCAAwC;oBACzD,CAAC,GADgB;oBAEjB,AAEI,uEAFmE;oBACvE,sBAAsB;oBAClB,UAAU,GAAG,CAAC,EAAC,sCAAsC;oBACrD,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;wBACnD,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC;wBACzC,CAAC;oBACL,CAAC;oBACN,AAEC,IAFG;oBACH,qEAAqE;oBACrE,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAErD,AACA,mFADmF;oBACnF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAE7C,CAAC;gBACD,IAAI,CAAA,CAAC;gBAIL,CAAC;YACL,CAAC;YACD,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC;QACtB,CAAC;QAED,GAAG,CAAC,CAAC,GAAG,GAAC,CAAC,EAAE,GAAG,GAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC,GAAG,EAAE,EAAC,CAAC;YAC7C,EAAE,CAAA,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA,CAAC;gBACjC,EAAE,CAAA,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,IAAE,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAC;oBACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChE,CAAC;YACL,CAAC;QACL,CAAC;IAEL,CAAC;IACD;;OAEG;IACI,2BAAQ,GAAf,UAAgB,QAAsB;QAElC,IAAI,CAAC,SAAS,IAAE,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,sBAAW,8BAAQ;aAAnB;YAEI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;aACD,UAAoB,WAAkB;YAElC,IAAI,CAAC,SAAS,GAAC,WAAW,CAAC;QAC/B,CAAC;;;OAJA;IAKD;;OAEG;IACI,qCAAkB,GAAzB,UAA0B,WAAkB;QAGxC,kDAAkD;QAClD,mFAAmF;QACnF,0EAA0E;QAC1E,yEAAyE;QAEzE,oEAAoE;QACpE,6FAA6F;IAEjG,CAAC;IACD;;OAEG;IACI,wBAAK,GAAZ;QACI,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD;;OAEG;IACI,uBAAI,GAAX;QACI,IAAI,CAAC,UAAU,GAAC,KAAK,EAAC,kCAAkC;IAC5D,CAAC,GADyB;IAG1B;;OAEG;IACI,8BAAW,GAAlB,UAAmB,WAAkB;QACjC,IAAI,CAAC,KAAK,GAAC,WAAW,GAAC,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD;;OAEG;IACI,8BAAW,GAAlB,UAAmB,WAAkB;QACjC,IAAI,CAAC,KAAK,GAAC,WAAW,GAAC,CAAC,IAAI,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAC,KAAK,EAAC,qBAAqB;IAC/C,CAAC,GADyB;IAE1B;;OAEG;IACI,mCAAgB,GAAvB,UAAwB,UAAiB;QACrC,IAAI,WAAW,GAAU,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAU,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;oBAChD,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxC,WAAW,GAAG,CAAC,CAAC;oBAChB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QACD,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD;;OAEG;IACI,mCAAgB,GAAvB,UAAwB,UAAiB;QACrC,IAAI,WAAW,GAAU,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAU,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBACpE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;oBAChD,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxC,WAAW,GAAG,CAAC,CAAC;oBAChB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QACD,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC5B,CAAC;IACL,CAAC;IACD;;OAEG;IACI,kCAAe,GAAtB,UAAuB,IAAW;QAC9B,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC;QAChB,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD;;OAEG;IACI,kCAAe,GAAtB,UAAuB,IAAW;QAC9B,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAC,KAAK,EAAC,qBAAqB;IAC/C,CAAC,GADyB;IAGnB,oCAAiB,GAAxB,UAAyB,QAAuB,EAAE,YAAyB;QAAzB,4BAAyB,GAAzB,mBAAyB;QACvE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,QAAQ,CAAyB,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QACD,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACM,wCAAqB,GAA5B,UAA6B,KAAY;QAErC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAQ,CAAC,EAAE,GAAG,GAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC,GAAG,EAAE,EAAC,CAAC;YACxD,EAAE,CAAA,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,IAAE,KAAK,CAAC,CAAA,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;IACM,0CAAuB,GAA9B,UAA+B,YAAmB;QAE9C,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAQ,CAAC,EAAE,GAAG,GAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC,GAAG,EAAE,EAAC,CAAC;YACxD,EAAE,CAAA,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAE,YAAY,CAAC,CAAA,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IACL,eAAC;AAAD,CAvTA,AAuTC,EAvTsB,sBAAsB,EAuT5C;AAED,AAAkB,iBAAT,QAAQ,CAAC;;;;ACnVlB,AAGA;;GADG;IACG,gBAAgB;IAElB,SAFE,gBAAgB;IAIlB,CAAC;IACM,qCAAU,GAAjB,UAAkB,OAAO;QAErB,wBAAwB;IAC5B,CAAC;IACM,gCAAK,GAAZ,UAAa,OAAO,EAAE,IAAW,EAAE,KAAY;QAE3C,wBAAwB;IAC5B,CAAC;IAEL,uBAAC;AAAD,CAdA,AAcC,IAAA;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;;;;;;;ACf1B,IAAO,gBAAgB,WAAW,2DAA2D,CAAC,CAAC;AAG/F,IAAM,yBAAyB;IAAS,UAAlC,yBAAyB,UAAyB;IA4BpD,SA5BE,yBAAyB;QA8BvB,iBAAO,CAAC;QACR,IAAI,CAAC,gBAAgB,GAAC,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAC,CAAC,CAAC;QAEzB,IAAI,CAAC,eAAe,GAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAC,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAC,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,GAAC,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,GAAC,KAAK,CAAC;IAC5B,CAAC;IACM,gDAAY,GAAnB,UAAqB,SAAgB;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,CAAC;IACM,gDAAY,GAAnB,UAAqB,SAAgB;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,qBAAqB;IACd,6CAAS,GAAhB,UAAkB,MAAM;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IACM,4CAAQ,GAAf,UAAiB,KAAY;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IACM,+DAA2B,GAAlC,UAAoC,WAA+B;QAC/D,IAAI,CAAC,yBAAyB,GAAG,WAAW,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC9B,CAAC;IACM,oDAAgB,GAAvB,UAAwB,aAAsB;QAC1C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC9B,CAAC;IACM,qDAAiB,GAAxB,UAAyB,cAA6B;QAClD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC/B,CAAC;IACM,+DAA2B,GAAlC,UAAoC,WAA+B;QAC/D,IAAI,CAAC,0BAA0B,GAAG,WAAW,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC/B,CAAC;IACM,mDAAe,GAAtB,UAAuB,YAAmB;QACtC,IAAI,CAAC,aAAa,GAAC,YAAY,CAAC;QAChC,IAAI,CAAC,eAAe,GAAC,IAAI,CAAC;IAC9B,CAAC;IACM,8CAAU,GAAjB,UAAkB,OAA8B;QAE5C,OAAO,CAAC,OAAO,GAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,yCAAK,GAAZ,UAAa,OAA8B,EAAE,IAAW,EAAE,KAAY;QAElE,OAAO,CAAC,OAAO,GAAC,IAAI,CAAC;QAErB,EAAE,CAAA,CAAC,IAAI,CAAC,gBAAgB,IAAE,CAAC,CAAC,CAAA,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAC,IAAI,CAAC,cAAc,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,EAAE,CAAA,CAAC,IAAI,CAAC,gBAAgB,IAAE,CAAC,CAAC,CAAA,CAAC;QAGlC,CAAC;QACD,AAEA,oFAFoF;QACpF,4FAA4F;QAC5F,EAAE,CAAA,CAAC,IAAI,CAAC,iBAAiB,IAAE,CAAC,CAAC,CAAA,CAAC;QAE9B,CAAC;QACD,IAAI,CAAC,EAAE,CAAA,CAAC,IAAI,CAAC,iBAAiB,IAAE,CAAC,CAAC,CAAA,CAAC;QAEnC,CAAC;QACD,EAAE,CAAA,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA,CAAC;YACrB,OAAO,CAAC,IAAI,GAAC,IAAI,CAAC,aAAa,CAAC;QACpC,CAAC;QACD,EAAE,CAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC;QAElB,CAAC;QACD,EAAE,CAAA,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA,CAAC;QAEtB,CAAC;QACD,EAAE,CAAA,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA,CAAC;QAEtB,CAAC;QACD,EAAE,CAAA,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAC;QAEpB,CAAC;IACL,CAAC;IACL,gCAAC;AAAD,CArHA,AAqHC,EArHuC,gBAAgB,EAqHvD;AAED,AAAmC,iBAA1B,yBAAyB,CAAC;;;;AC3HnC,AAIA;;;GADG;IACG,YAAY;IAMd,SANE,YAAY,CAMF,KAAoB;QAE5B,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAClB,IAAI,CAAC,YAAY,GAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC;IACxB,CAAC;IACD,sBAAW,qCAAW;aAItB;YAEI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;aAPD,UAAuB,QAAgB;YAEnC,IAAI,CAAC,SAAS,GAAC,QAAQ,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,sCAAY;aAIvB;YAEI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;aAPD,UAAwB,QAAyB;YAE7C,IAAI,CAAC,aAAa,GAAC,QAAQ,CAAC;QAChC,CAAC;;;OAAA;IAKD,sBAAW,+BAAK;aAAhB;YAEI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aACD,UAAiB,QAAuB;YAEpC,IAAI,CAAC,MAAM,GAAC,QAAQ,CAAC;QACzB,CAAC;;;OAJA;IAKM,8BAAO,GAAd,UAAe,IAAW,EAAE,KAAY;QAEpC,EAAE,CAAA,CAAC,IAAI,CAAC,YAAY,IAAE,SAAS,CAAC;YAC5B,MAAM,CAAC,CAAC,qCAAqC;QAEjD,AACA,gFADgF;QAChF,EAAE,CAAA,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAC,IAAI,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAA,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IACL,mBAAC;AAAD,CApDA,AAoDC,IAAA;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;AC7DtB,AAMA;;;;;GADG;IACG,mBAAmB;IASrB,SATE,mBAAmB,CAST,IAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAgB,EAAC,OAAc;QAE1E,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC;QAChB,IAAI,CAAC,WAAW,GAAC,UAAU,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAC,QAAQ,CAAC;QACxB,IAAI,CAAC,SAAS,GAAC,OAAO,GAAC,SAAS,CAAC;IACrC,CAAC;IAEM,sCAAQ,GAAf,UAAgB,IAAW,EAAE,KAAY;QACrC,AACA,gCADgC;QAChC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC;QACX,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC;QACX,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,AACA,oBADoB;YACpB,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9H,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA,CAAC;QAErB,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtB,CAAC;QACD,MAAM,CAAC;IACX,CAAC;IACL,0BAAC;AAAD,CAzCA,AAyCC,IAAA;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;AC5B7B,AAYA;;;;;;;;;;;GADG;IACG,aAAa;IAcf,SAdE,aAAa;QAgBX,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAC,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAC,CAAC,EAAC,0CAA0C;QAC3D,IAAI,CAAC,cAAc,GAAC,IAAI,KAAK,EAAgB,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAC,IAAI,KAAK,EAAgB,CAAC;QACrD,IAAI,CAAC,kBAAkB,GAAC,IAAI,KAAK,EAAgB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAC,IAAI,KAAK,EAAU,CAAC;QACtC,IAAI,CAAC,WAAW,GAAC,IAAI,KAAK,EAAU,CAAC;IACzC,CAAC;IACM,kCAAU,GAAjB,UAAkB,UAAuB;QAErC,AACA,+CAD+C;QAC/C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IACM,yCAAiB,GAAxB,UAAyB,UAAuB;QAE5C,AACA,+CAD+C;QAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IACM,sCAAc,GAArB,UAAsB,UAAuB;QAEzC,AACA,+CAD+C;QAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IACM,gCAAQ,GAAf,UAAgB,KAAY,EAAE,IAAW;QAErC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,sBAAW,sCAAW;aAAtB;YAEI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;;;OAAA;IACD,sBAAW,qCAAU;aAArB;YAEI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;;;OAAA;IACD,sBAAW,iCAAM;aAAjB;YAEI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;;;OAAA;IACM,mCAAW,GAAlB,UAAmB,SAAgB;QAE/B,IAAI,CAAC,OAAO,IAAE,SAAS,CAAC;IAC5B,CAAC;IAED,sBAAW,kCAAO;aAAlB;YAEI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;;;OAAA;IACM,iCAAS,GAAhB;QAEI,IAAI,CAAC,QAAQ,GAAC,IAAI,CAAC;IACvB,CAAC;IACD,sBAAW,oCAAS;aAApB;YAEI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;;;OAAA;IACD,sBAAW,mCAAQ;aAAnB;YAEI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;;;OAAA;IACD,sBAAW,kCAAO;aAAlB;YAEI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;;;OAAA;IACM,oCAAY,GAAnB,UAAoB,SAAgB,EAAE,QAAe;QAEjD,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAC,QAAQ,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAC,SAAS,GAAC,QAAQ,CAAC;IACrC,CAAC;IACD;;;;;;OAMG;IACI,uCAAe,GAAtB,UAAuB,UAAiB,EAAE,IAAW,EAAE,KAAY;QAC/D,AACA,iDADiD;QACjD,EAAE,CAAA,CAAC,UAAU,IAAE,CAAC,CAAC,CAAA,CAAC;YAEd,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,IAAE,CAAC,CAAC,CAAC,CAAC;YACrB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,IAAE,CAAC,CAAC,CAAC,CAAC;YAErB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;QACD,AAEA,yGAFyG;QACzG,qFAAqF;QACrF,IAAI,CAAC,QAAQ,GAAC,KAAK,CAAC;IACxB,CAAC;IAEL,oBAAC;AAAD,CAvHA,AAuHC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;ACtJvB,AAMA;;;;;GADG;IACG,cAAc;IAqBhB,SArBE,cAAc,CAqBJ,KAAY,EAAE,KAAY,EAAE,oBAAqC;QAEzE,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAClB,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QAClB,IAAI,CAAC,KAAK,GAAC,IAAI,CAAC;QAChB,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC;QACrB,IAAI,CAAC,uBAAuB,GAAC,oBAAoB,CAAC;QAClD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,sBAAW,kDAAsB;aAAjC,UAAkC,eAAgC;YAE9D,IAAI,CAAC,uBAAuB,GAAC,eAAe,CAAC;QACjD,CAAC;;;OAAA;IACM,mCAAU,GAAjB;QAEI,AAEA,6CAF6C;QAC7C,aAAa;QACb,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,GAAC,KAAK,CAAC;IACzB,CAAC;IAED,sBAAW,iCAAK;aAAhB;YAEI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aACD,UAAiB,QAAe;YAE5B,IAAI,CAAC,MAAM,GAAC,QAAQ,CAAC;QACzB,CAAC;;;OAJA;IAKD,sBAAW,iCAAK;aAAhB;YAEI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aACD,UAAiB,QAAe;YAE5B,IAAI,CAAC,MAAM,GAAC,QAAQ,CAAC;QACzB,CAAC;;;OAJA;IAKD,sBAAW,gCAAI;aAAf;YAEI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;aACD,UAAgB,OAAe;YAE3B,IAAI,CAAC,KAAK,GAAC,OAAO,CAAC;QACvB,CAAC;;;OAJA;IAKD,sBAAW,oCAAQ;aAAnB;YAEI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;aACD,UAAoB,WAAmB;YAEnC,IAAI,CAAC,SAAS,GAAC,WAAW,CAAC;QAC/B,CAAC;;;OAJA;IAKL,qBAAC;AAAD,CA1EA,AA0EC,IAAA;AAED,AAAwB,iBAAf,cAAc,CAAC;;;;;;;;;;ACtFxB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,SAAS;IAAS,UAAlB,SAAS,UAAc;IAE5B,SAFK,SAAS,CAEF,OAAc;QAEzB,kBAAM,OAAO,CAAC,CAAC;IAChB,CAAC;IACF,gBAAC;AAAD,CANA,AAMC,EANuB,KAAK,EAM5B;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;;;;;;;ACVnB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAI3D,AAGA;;GADG;IACG,WAAW;IAAS,UAApB,WAAW,UAAc;IAM9B,SANK,WAAW,CAMJ,IAAW,EAAE,MAAa;QAErC,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,sBAAW,+BAAM;aAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAda,8BAAkB,GAAU,mBAAmB,CAAC;IAe/D,kBAAC;AAAD,CAjBA,AAiBC,EAjByB,KAAK,EAiB9B;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;;;;;;;AC1BrB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAI3D,IAAM,kBAAkB;IAAS,UAA3B,kBAAkB,UAAc;IAWrC,SAXK,kBAAkB,CAWX,IAAW,EAAE,MAAoB;QAE5C,kBAAM,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAba,oCAAiB,GAAU,kBAAkB,CAAC;IAC9C,yCAAsB,GAAU,uBAAuB,CAAC;IACxD,gCAAa,GAAU,cAAc,CAAC;IACtC,mCAAgB,GAAU,iBAAiB,CAAC;IAC5C,mCAAgB,GAAU,iBAAiB,CAAC;IAC5C,gCAAa,GAAU,cAAc,CAAC;IASrD,yBAAC;AAAD,CAhBA,AAgBC,EAhBgC,KAAK,EAgBrC;AAED,AAA4B,iBAAnB,kBAAkB,CAAC;;;;;;;;;;ACtB5B,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAI3D,AAMA;;;;;EADE;IACI,aAAa;IAAS,UAAtB,aAAa,UAAc;IAgBhC;;;;OAIG;IACH,SArBK,aAAa,CAqBN,IAAW,EAAE,WAAkC;QAAlC,2BAAkC,GAAlC,kBAAkC;QAE1D,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACjC,CAAC;IAKD,sBAAW,sCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAED;;;OAGG;IACI,6BAAK,GAAZ;QAEC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAzCD;;OAEG;IACW,gCAAkB,GAAU,kBAAkB,CAAC;IAE7D;;OAEG;IACW,kCAAoB,GAAU,oBAAoB,CAAC;IAEnD,4BAAc,GAAU,eAAe,CAAC;IAgCvD,oBAAC;AAAD,CA5CA,AA4CC,EA5C2B,KAAK,EA4ChC;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACxDvB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,UAAU;IAAS,UAAnB,UAAU,UAAc;IAK7B,SALK,UAAU,CAKH,IAAW;QAEtB,kBAAM,IAAI,CAAC,CAAC;IACb,CAAC;IAED,WAAW;IACJ,0BAAK,GAAZ;QAEC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAXa,8BAAmB,GAAU,mBAAmB,CAAC;IAYhE,iBAAC;AAAD,CAfA,AAeC,EAfwB,KAAK,EAe7B;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;ACnBpB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,aAAa;IAAS,UAAtB,aAAa,UAAc;IAIhC,SAJK,aAAa,CAIN,IAAW;QAEtB,kBAAM,IAAI,CAAC,CAAC;IACb,CAAC;IALa,0BAAY,GAAU,aAAa,CAAC;IAMnD,oBAAC;AAAD,CARA,AAQC,EAR2B,KAAK,EAQhC;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACVvB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAO3D,AAIA;;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAc;IAmI7B;;;OAGG;IACH,SAvIK,UAAU,CAuIH,IAAW;QAEtB,kBAAM,IAAI,CAAC,CAAC;QAvIb,WAAW;QACJ,yBAAoB,GAAW,IAAI,CAAC;IAuI3C,CAAC;IAKD,sBAAW,+BAAO;QAHlB;;WAEG;aACH;YAEC,IAAI,UAAU,GAAW,IAAI,CAAC,oBAAoB,CAAC;YACnD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAEjC,AACA,gDADgD;YAChD,MAAM,CAAC,UAAU,CAAC;QACnB,CAAC;;;OAAA;IAED;;OAEG;IACI,oCAAe,GAAtB;QAEC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,6CAAwB,GAA/B;QAEC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,0BAAK,GAAZ;QAEC,IAAI,MAAM,GAAc,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,AAKA;;;WAFG;QAEH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE9B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1C,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACtC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAChD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE1B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEhC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAExD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAKD,sBAAW,qCAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,CAAC;;;OAAA;IAKD,sBAAW,mCAAW;QAHtB;;WAEG;aACH;YAEC,IAAI,WAAW,GAAY,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7F,WAAW,CAAC,SAAS,EAAE,CAAC;YAExB,MAAM,CAAC,WAAW,CAAC;QACpB,CAAC;;;OAAA;IA5ND;;OAEG;IACW,qBAAU,GAAU,aAAa,CAAC;IAEhD;;OAEG;IACW,oBAAS,GAAU,YAAY,CAAC;IAE9C;;OAEG;IACW,mBAAQ,GAAU,WAAW,CAAC;IAE5C;;OAEG;IACW,qBAAU,GAAU,aAAa,CAAC;IAEhD;;OAEG;IACW,qBAAU,GAAU,aAAa,CAAC;IAEhD;;OAEG;IACJ,oDAAoD;IAEnD;;OAEG;IACJ,kDAAkD;IAEjD;;OAEG;IACW,gBAAK,GAAU,SAAS,CAAC;IAEvC;;OAEG;IACW,uBAAY,GAAU,eAAe,CAAC;IAEpD;;OAEG;IACW,sBAAW,GAAU,cAAc,CAAC;IA6KnD,iBAAC;AAAD,CAnOA,AAmOC,EAnOwB,KAAK,EAmO7B;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AClPpB,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAI5D,AAMA;;;;;GADG;IACG,oBAAoB;IAAS,UAA7B,oBAAoB,UAAc;IASvC;;;;OAIG;IACH,SAdK,oBAAoB,CAcb,IAAW,EAAE,iBAAoC;QAE5D,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;IAKD,sBAAW,mDAAiB;QAH5B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;;;OAAA;IAED;;;;OAIG;IACI,oCAAK,GAAZ;QAEC,MAAM,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAnCD;;OAEG;IACW,gDAA2B,GAAU,0BAA0B,CAAC;IAiC/E,2BAAC;AAAD,CAtCA,AAsCC,EAtCkC,KAAK,EAsCvC;AAED,AAA8B,iBAArB,oBAAoB,CAAC;;;;;;;;;;AClD9B,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,aAAa;IAAS,UAAtB,aAAa,UAAc;IAKhC,SALK,aAAa,CAKN,IAAW;QAEtB,kBAAM,IAAI,CAAC,CAAC;IACb,CAAC;IANa,8BAAgB,GAAU,iBAAiB,CAAC;IAC5C,6BAAe,GAAU,gBAAgB,CAAC;IAMzD,oBAAC;AAAD,CATA,AASC,EAT2B,KAAK,EAShC;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACbvB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,WAAW;IAAS,UAApB,WAAW,UAAc;IAO9B,SAPK,WAAW,CAOJ,IAAW,EAAE,SAAsB,EAAE,QAAqB;QAA7C,yBAAsB,GAAtB,eAAsB;QAAE,wBAAqB,GAArB,cAAqB;QAErE,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,sBAAW,kCAAS;aAApB;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAED,sBAAW,iCAAQ;aAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IArBa,kBAAM,GAAU,QAAQ,CAAC;IAsBxC,kBAAC;AAAD,CAxBA,AAwBC,EAxByB,KAAK,EAwB9B;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;;;;;;;AC5BrB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAI3D,IAAM,UAAU;IAAS,UAAnB,UAAU,UAAc;IAsB7B,SAtBK,UAAU,CAsBH,IAAW,EAAE,aAA2B;QAEnD,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;IAzBD;;OAEG;IACW,yBAAc,GAAU,cAAc,CAAC;IAErD;;OAEG;IACW,6BAAkB,GAAU,kBAAkB,CAAC;IAE7D;;OAEG;IACW,4BAAiB,GAAU,kBAAkB,CAAC;IAa7D,iBAAC;AAAD,CA5BA,AA4BC,EA5BwB,KAAK,EA4B7B;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AClCpB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,IAAM,UAAU;IAAS,UAAnB,UAAU,UAAc;IAO7B,SAPK,UAAU,CAOH,IAAW;QAEtB,kBAAM,IAAI,CAAC,CAAC;IACb,CAAC;IARa,0BAAe,GAAU,gBAAgB,CAAC;IAC1C,2BAAgB,GAAU,iBAAiB,CAAC;IAC5C,4BAAiB,GAAU,kBAAkB,CAAC;IAC9C,2BAAgB,GAAU,iBAAiB,CAAC;IAM3D,iBAAC;AAAD,CAXA,AAWC,EAXwB,KAAK,EAW7B;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;ACfpB,IAAO,KAAK,WAAe,8BAA8B,CAAC,CAAC;AAE3D,AAMA;;;;;GADG;IACG,gBAAgB;IAAS,UAAzB,gBAAgB,UAAc;IAcnC;;;;OAIG;IACH,SAnBK,gBAAgB,CAmBT,IAAW,EAAE,QAAoB;QAApB,wBAAoB,GAApB,aAAoB;QAE5C,kBAAM,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAKD,sBAAW,sCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAED;;;;OAIG;IACI,gCAAK,GAAZ;QAEC,MAAM,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAxCD;;OAEG;IACW,gCAAe,GAAU,gBAAgB,CAAC;IAExD;;OAEG;IACW,iCAAgB,GAAU,iBAAiB,CAAC;IAiC3D,uBAAC;AAAD,CA3CA,AA2CC,EA3C8B,KAAK,EA2CnC;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;ACrD1B,IAAO,UAAU,WAAe,iCAAiC,CAAC,CAAC;AACnE,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AACpE,IAAO,aAAa,WAAc,wCAAwC,CAAC,CAAC;AAI5E,IAAO,aAAa,WAAc,4CAA4C,CAAC,CAAC;AAEhF,IAAM,sBAAsB;IAA5B,SAAM,sBAAsB;IAsE5B,CAAC;IA/Dc,yCAAkB,GAAhC,UAAiC,eAAuC;QAAvC,+BAAuC,GAAvC,sBAAuC;QAEvE,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,eAAe,CAAC,SAAS,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;YACrF,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,oBAAoB,CAAC;gBAChD,sBAAsB,CAAC,yBAAyB,EAAE,CAAC;YAEpD,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC;QACpD,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;gBACpD,sBAAsB,CAAC,6BAA6B,EAAE,CAAC;YAExD,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;QACxD,CAAC;IACF,CAAC;IAEa,wCAAiB,GAA/B,UAAgC,eAAuC;QAAvC,+BAAuC,GAAvC,sBAAuC;QAEtE,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,eAAe,CAAC;YAC3C,sBAAsB,CAAC,oBAAoB,EAAE,CAAC;QAE/C,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC;IAC/C,CAAC;IAEc,2CAAoB,GAAnC;QAEC,sBAAsB,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,yBAAyB,EAAE,CAAC;QAC/F,sBAAsB,CAAC,eAAe,GAAG,IAAI,aAAa,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC5G,sBAAsB,CAAC,eAAe,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAChE,CAAC;IAEa,gDAAyB,GAAvC;QAEC,IAAI,CAAC,GAAc,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAEzD,AACA,oBADoB;YAChB,CAAQ,EAAE,CAAQ,CAAC;QACvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,CAAC,CAAC,CAAC;IACV,CAAC;IAEc,oDAA6B,GAA5C;QAEC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,eAAe,CAAC;YAC3C,sBAAsB,CAAC,oBAAoB,EAAE,CAAC;QAE/C,sBAAsB,CAAC,wBAAwB,GAAG,IAAI,aAAa,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;QAC5G,sBAAsB,CAAC,wBAAwB,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/D,sBAAsB,CAAC,wBAAwB,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/D,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAClF,CAAC;IAEc,gDAAyB,GAAxC;QAEC,sBAAsB,CAAC,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;QAClE,sBAAsB,CAAC,oBAAoB,CAAC,IAAI,GAAG,qBAAqB,CAAC;IAC1E,CAAC;IACF,6BAAC;AAAD,CAtEA,AAsEC,IAAA;AAED,AAAgC,iBAAvB,sBAAsB,CAAC;;;;AChFhC,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAKhE,IAAO,cAAc,WAAc,sCAAsC,CAAC,CAAC;AAE3E,AAIA;;;GADG;IACG,YAAY;IAkCjB;;OAEG;IACH,SArCK,YAAY;QAAlB,iBAgSC;QA5RQ,gBAAW,GAAe,IAAI,KAAK,EAAQ,CAAC;QAM5C,gBAAW,GAAY,IAAI,QAAQ,EAAE,CAAC;QAEtC,kBAAa,GAAyB,IAAI,KAAK,EAAkB,CAAC;QAIlE,aAAQ,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtE,gBAAW,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtE,cAAS,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxE,eAAU,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1E,eAAU,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1E,eAAU,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1E,gBAAW,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5E,sBAAiB,GAAkB,IAAI,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAgB1F,IAAI,CAAC,eAAe,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAnB,CAAmB,CAAC;QACjE,IAAI,CAAC,qBAAqB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAzB,CAAyB,CAAC;QAC7E,IAAI,CAAC,mBAAmB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC;QACzE,IAAI,CAAC,mBAAmB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC;QACzE,IAAI,CAAC,iBAAiB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC;QACrE,IAAI,CAAC,oBAAoB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC;QAC3E,IAAI,CAAC,mBAAmB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC;QACzE,IAAI,CAAC,kBAAkB,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAtB,CAAsB,CAAC;IACxE,CAAC;IAEa,wBAAW,GAAzB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAEvB,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,sCAAe,GAAtB,UAAuB,cAAsB;QAE3C,AACD,0DAD2D;QAC3D,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC7D,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAEzF,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC;QAEA,AACD,uDADwD;QACxD,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE5D,IAAI,KAAoB,CAAC;QACzB,IAAI,UAAwB,CAAC;QAE5B,AACD,8BAD+B;YAC3B,GAAG,GAAU,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,AACA,uHADuH;YACvH,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAE1B,OAAO,UAAU,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;gBAClD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAEhC,EAAE,CAAC,CAAC,UAAU,CAAC;gBACd,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEvD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEF,kCAAkC;IAClC,KAAK;IACL,gCAAgC;IAChC,EAAE;IACF,8EAA8E;IAC9E,sCAAsC;IACtC,yCAAyC;IACzC,EAAE;IACF,uBAAuB;IACvB,yBAAyB;IACzB,EAAE;IACF,qBAAqB;IACrB,iCAAiC;IACjC,8BAA8B;IAC9B,KAAK;IAEG,mCAAY,GAAnB,UAAoB,IAAS;QAE5B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEvE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,qCAAc,GAArB,UAAsB,IAAS;QAE9B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,wEAAwE;IACxE,WAAW;IACX,wEAAwE;IAEhE,oCAAa,GAArB,UAAsB,KAAoB,EAAE,WAAsB,EAAE,QAAkC;QAAlC,wBAAkC,GAAlC,eAAkC;QAErG,AACA,iBADiB;QACjB,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACjB,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YACtC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YACpC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,CAAC;QAED,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEnC,AACA,iBADiB;QACjB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACd,AACA,UADU;YACV,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;YACtC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;YACjD,AACA,MADM;YACN,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;YACvB,AACA,YADY;YACZ,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,GAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;YACpF,AACA,UADU;YACV,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,GAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;YAC9E,AACA,cADc;YACd,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC9B,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,AACA,mBADmB;YACnB,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YACvC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACrC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,AACA,sCADsC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,wEAAwE;IACxE,aAAa;IACb,wEAAwE;IAEhE,kCAAW,GAAnB,UAAoB,KAAgB;QAEnC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,iCAAU,GAAlB,UAAmB,KAAgB;QAElC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEO,kCAAW,GAAnB,UAAoB,KAAgB;QAEnC,IAAI,CAAC,WAAW,GAAoB,KAAK,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,8BAAO,GAAf,UAAgB,KAAgB;QAE/B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,oCAAa,GAArB,UAAsB,KAAgB;QAErC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEO,kCAAW,GAAnB,UAAoB,KAAgB;QAEnC,IAAI,CAAC,WAAW,GAAoB,KAAK,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEO,gCAAS,GAAjB,UAAkB,KAAgB;QAEjC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAG,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEO,mCAAY,GAApB,UAAqB,KAAgB;QAEpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAGO,sCAAe,GAAvB,UAAwB,KAAgB;QAEvC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,MAAM,CAAC;QAER,IAAI,IAAS,CAAC;QACd,IAAI,MAAiB,CAAC;QACtB,IAAI,MAAM,GAAU,KAAK,CAAC,OAAO,CAAC;QAClC,IAAI,MAAM,GAAU,KAAK,CAAC,OAAO,CAAC;QAClC,IAAI,GAAG,GAAU,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACzC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;YAClD,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;gBACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;gBACpC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC;oBAC9C,KAAK,CAAC;YACR,CAAC;QACF,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,CAAC;IACF,mBAAC;AAAD,CAhSA,AAgSC,IAAA;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;;;;;;;AC7StB,IAAO,aAAa,WAAc,wCAAwC,CAAC,CAAC;AAG5E,IAAO,YAAY,WAAe,2CAA2C,CAAC,CAAC;AAI/E,AAIA;;;GADG;IACG,aAAa;IAAS,UAAtB,aAAa,UAAqB;IAYvC,SAZK,aAAa,CAYN,YAAuB,EAAE,WAAsB,EAAE,MAAsB,EAAE,MAAsB;QAA/F,4BAAuB,GAAvB,mBAAuB;QAAE,2BAAsB,GAAtB,kBAAsB;QAAE,sBAAsB,GAAtB,cAAsB;QAAE,sBAAsB,GAAtB,cAAsB;QAE1G,iBAAO,CAAC;QAER,EAAE,CAAC,CAAC,YAAY,YAAY,aAAa,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,GAAmB,YAAY,CAAC;YAE5C,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAE,IAAI,GAAG,KAAK,CAAC;YAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,KAAK,GAAG,YAAY,GAAE,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;YAC3D,IAAI,CAAC,KAAK,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,GAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACI,uCAAe,GAAtB,UAAuB,cAA8B;QAEpD,MAAM,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACF,oBAAC;AAAD,CAtCA,AAsCC,EAtC2B,YAAY,EAsCvC;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACnDvB,IAAO,YAAY,WAAe,2CAA2C,CAAC,CAAC;AAC/E,IAAO,YAAY,WAAe,uCAAuC,CAAC,CAAC;AAG3E,AAWA;;;;;;;;;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAqB;IA4DzC;;OAEG;IACH,SA/DK,eAAe,CA+DR,OAA4B,EAAE,MAAqB,EAAE,MAAsB;QAA3E,uBAA4B,GAA5B,cAA4B;QAAE,sBAAqB,GAArB,aAAqB;QAAE,sBAAsB,GAAtB,cAAsB;QAEtF,iBAAO,CAAC;QAER,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAnED,sBAAW,yCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAED,sBAAW,uCAAU;aAArB;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;;;OAAA;IAKD,sBAAW,oCAAO;QAHlB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAmB,KAAmB;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;gBAC3B,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,EAAE,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,aAAa,GAAmB,KAAM,CAAC,gBAAgB,CAAC;gBAE7D,IAAI,IAAI,GAAoB,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;gBACvB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAE3D,IAAI,KAAK,GAAiC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChG,KAAK,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnD,IAAI,KAAK,GAAwC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;gBAE1E,KAAK,CAAC,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;gBAC9D,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC;gBACnC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;gBAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC9C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChD,KAAK,CAAC,eAAe,GAClB,KAAK,CAAC,0BAA0B,CAAC,GACjC,KAAK,CAAC,uBAAuB,CAAC,GAC9B,KAAK,CAAC,qBAAqB,CAAC,GAC5B,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;gBAE3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAExC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5B,CAAC;QACF,CAAC;;;OApCA;IAoDF,sBAAC;AAAD,CA1EA,AA0EC,EA1E6B,YAAY,EA0EzC;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;AC3FzB,AAWA;;;;;;;;;;GADG;IACG,YAAY;IAAlB,SAAM,YAAY;IAmBlB,CAAC;IAjBA;;;OAGG;IACW,mBAAM,GAAU,IAAI,CAAC;IAEnC;;;OAGG;IACW,mBAAM,GAAU,IAAI,CAAC;IAEnC;;;OAGG;IACW,gBAAG,GAAU,IAAI,CAAC;IACjC,mBAAC;AAAD,CAnBA,AAmBC,IAAA;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;;;;;;;AChCtB,IAAO,cAAc,WAAc,qCAAqC,CAAC,CAAC;AAE1E,IAAO,mBAAmB,WAAa,4CAA4C,CAAC,CAAC;AACrF,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAC5D,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAEpE,IAAO,cAAc,WAAc,wCAAwC,CAAC,CAAC;AAK7E,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AAMpE,IAAO,aAAa,WAAc,yCAAyC,CAAC,CAAC;AAC7E,IAAO,oBAAoB,WAAa,gDAAgD,CAAC,CAAC;AAK1F,AAWA;;;;;;;;;;GADG;IACG,YAAY;IAAS,UAArB,YAAY,UAAuB;IAyExC;;OAEG;IACH,SA5EK,YAAY;QAAlB,iBAumBC;QAzhBC,iBAAO,CAAC;QA3ED,mBAAc,GAAW,KAAK,CAAC;QAC/B,WAAM,GAAU,CAAC,CAAC;QAGlB,mBAAc,GAAwB,IAAI,KAAK,EAAiB,CAAC;QAElE,qBAAgB,GAAU,CAAC,CAAC;QAC5B,iBAAY,GAAW,KAAK,CAAC;QAC5B,wBAAmB,GAAW,IAAI,CAAC;QACnC,0BAAqB,GAAU,IAAI,CAAC;QACpC,yBAAoB,GAAU,IAAI,CAAC;QAiB3C;;;;WAIG;QACI,iBAAY,GAAU,CAAC,CAAC;QAExB,0BAAqB,GAAU,CAAC,CAAC;QAEhC,eAAU,GAAW,KAAK,CAAC,CAAC,SAAS;QAUtC,gBAAW,GAAU,SAAS,CAAC,MAAM,CAAC;QAErC,YAAO,GAAW,KAAK,CAAC;QACxB,YAAO,GAAW,IAAI,CAAC;QACvB,YAAO,GAAW,KAAK,CAAC;QACxB,WAAM,GAAU,QAAQ,CAAC;QAK1B,aAAQ,GAAU,CAAC,CAAC;QACpB,YAAO,GAAU,CAAC,CAAC;QAoBzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAoB,CAAC;QAE7C,IAAI,CAAC,sBAAsB,GAAG,UAAC,KAAW,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAA1B,CAA0B,CAAC;QAE1E,IAAI,CAAC,kBAAkB,GAAG,KAAK,EAAE,gDAAgD;IAClF,CAAC,GADgC;IAlBjC,sBAAW,mCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAA,CAAC;QAC5B,CAAC;;;OAAA;IAqBD,sBAAW,+BAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YAEX,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;gBAChC,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;YAE7C,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OApBA;IAyBD,sBAAW,wCAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7B,CAAC;aAED,UAA0B,KAAoB;YAE7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAPA;IAaD,sBAAW,uCAAa;QAJxB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAyB,KAAa;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAVA;IAeD,sBAAW,gCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAKD,sBAAW,sCAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IASD,sBAAW,qCAAW;QANtB;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAuB,KAAqB;YAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;gBAC/B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEnF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBACtB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAEhF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAhBA;IAqBD,sBAAW,gCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAa;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAeD,sBAAW,gCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAa;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAgBD,sBAAW,gCAAM;QAJjB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAa;YAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAeD,sBAAW,+BAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAeD,sBAAW,iCAAO;QAHlB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAmB,KAAmB;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;gBAC3B,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAEpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAfA;IAoBD,sBAAW,oCAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAsB,KAAa;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAgBD,sBAAW,4CAAkB;QAJ7B;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;aAED,UAA8B,KAAa;YAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;gBACrC,MAAM,CAAC;YAER,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAkBD,sBAAW,6CAAmB;QAN9B;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;aAED,UAA+B,KAAY;YAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC;gBACtC,MAAM,CAAC;YAER,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAElC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAkBD,sBAAW,8CAAoB;QAN/B;;;;;WAKG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;QACnC,CAAC;aAED,UAAgC,KAAY;YAE3C,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC;gBACvC,MAAM,CAAC;YAER,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAEnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAYD;;;OAGG;IACI,8BAAO,GAAd;QAEC,IAAI,CAAQ,CAAC;QACb,IAAI,GAAU,CAAC;QAEf,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACjC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,EAAiB,CAAC;IAClD,CAAC;IAKD,sBAAW,mCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAa;YAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC3B,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAsBD,sBAAW,mCAAS;QAVpB;;;;;;;;;WASG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAqB,KAAY;YAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;gBAC7B,MAAM,CAAC;YAER,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjC,CAAC;;;OAVA;IAiBD,sBAAW,4CAAkB;QAL7B;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;aAED,UAA8B,KAAa;YAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;gBACrC,MAAM,CAAC;YAER,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAVA;IAiBD,sBAAW,wCAAc;QALzB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA0B,KAAY;YAErC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YAEX,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC;;;OAfA;IAoBD,sBAAW,+BAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED,EAAE;IACF,sBAAsB;IACtB,EAAE;IACF;;;;;;;;OAQG;IACI,gCAAS,GAAhB,UAAiB,KAAsB;QAEtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,YAA0B,CAAC;QAC/B,IAAI,QAAQ,GAAyB,KAAK,CAAC,QAAQ,CAAC;QAEpD,EAAE,CAAC,CAAC,QAAQ,CAAC;YACZ,YAAY,GAAmB,QAAQ,CAAC,YAAY,CAAC;QAEtD,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;YAC9G,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC;oBAExC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;oBAElC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,CAAC;YACF,CAAC;QACF,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;;;;OAKG;IACI,mCAAY,GAAnB,UAAoB,KAAsB;QAEzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpD,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC,CAAC;IACvG,CAAC;IAOD,sBAAW,iCAAO;QALlB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAED;;;;OAIG;IACI,yCAAkB,GAAzB;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IAEO,0CAAmB,GAA3B;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAC/C,CAAC;IAEM,+CAAwB,GAA/B;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,qCAAc,GAAtB,UAAuB,KAAW;QAEjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACjC,CAAC;IAEM,0CAAmB,GAA1B;QAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAEnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAEM,wCAAiB,GAAxB,UAAyB,YAA0B;QAElD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,CAAC,YAAY,CAAC;IACrB,CAAC;IAEM,2CAAoB,GAA3B,UAA4B,YAA0B;QAErD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,YAAY,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACI,sCAAe,GAAtB,UAAuB,cAA8B;QAEpD,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IACF,mBAAC;AAAD,CAvmBA,AAumBC,EAvmB0B,cAAc,EAumBxC;AAED,AAAsB,iBAAb,YAAY,CAAC;;;;;;;;;;AC1oBtB,IAAO,SAAS,WAAe,mCAAmC,CAAC,CAAC;AACpE,IAAO,cAAc,WAAc,wCAAwC,CAAC,CAAC;AAU7E,AAOA;;;;;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAuB;IAgB3C;;OAEG;IACH,SAnBK,eAAe;QAqBnB,iBAAO,CAAC;QAnBF,qBAAgB,GAAU,CAAC,CAAC;QAC5B,2BAAsB,GAAU,CAAC,CAAC;QAClC,4BAAuB,GAAU,CAAC,CAAC;QACnC,kCAA6B,GAAU,CAAC,CAAC;QACzC,qBAAgB,GAAU,CAAC,CAAC;IAgBnC,CAAC;IAED;;OAEG;IACI,iCAAO,GAAd;IAEA,CAAC;IAKD,sBAAW,sCAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QAC/B,CAAC;;;OAAA;IAKD,sBAAW,iDAAoB;QAH/B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACpC,CAAC;;;OAAA;IAKD,sBAAW,2CAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;;;OAAA;IAKD,sBAAW,wDAA2B;QAHtC;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC;QAC3C,CAAC;;;OAAA;IAKD,sBAAW,kDAAqB;QAHhC;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACrC,CAAC;;;OAAA;IAKD,sBAAW,2CAAc;QAHzB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8CAAiB;QAH5B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;;;OAAA;IAKD,sBAAW,+CAAkB;QAH7B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAClC,CAAC;;;OAAA;IAKD,sBAAW,qDAAwB;QAHnC;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC;QACxC,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8CAAiB;QAH5B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;;;OAAA;IAKD,sBAAW,4CAAe;QAH1B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;;;OAAA;IAED;;OAEG;IACI,uCAAa,GAApB,UAAqB,UAAsB;QAE1C,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACK,4CAAkB,GAA1B,UAA2B,UAAsB;QAEhD,AACA,yGADyG;YACrG,SAAS,GAAY,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC;QAC/D,IAAI,QAAiB,CAAC;QAEtB,IAAI,EAAE,GAAU,SAAS,CAAC,CAAC,EAAE,EAAE,GAAU,SAAS,CAAC,CAAC,EAAE,EAAE,GAAU,SAAS,CAAC,CAAC,CAAC;QAC9E,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,CAAQ,EAAE,KAAK,GAAU,CAAC,CAAC;QAC/B,IAAI,CAAQ,CAAC;QAGb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;YAE5C,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/C,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;YACrB,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;YACrB,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;YACrB,AACA,yDADyD;YACzD,CAAC,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC;YAE1B,AACA,mCADmC;YACnC,CAAC,GAAG,CAAC,GAAG,MAAM,GAAE,CAAC,GAAC,CAAC,GAAG,QAAQ,CAAC;YAC/B,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QAED,AACA,YADY;QACZ,KAAK,GAAG,CAAC,GAAC,KAAK,CAAC;QAEhB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACvC,CAAC;IACF,sBAAC;AAAD,CApLA,AAoLC,EApL6B,cAAc,EAoL3C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;ACzMzB,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAG5D,IAAO,gBAAgB,WAAc,8CAA8C,CAAC,CAAC;AACrF,IAAO,UAAU,WAAe,wCAAwC,CAAC,CAAC;AAC1E,IAAO,UAAU,WAAe,wCAAwC,CAAC,CAAC;AAC1E,IAAO,UAAU,WAAe,sCAAsC,CAAC,CAAC;AACxE,IAAO,eAAe,WAAc,2DAA2D,CAAC,CAAC;AAEjG,AAKA;;;;GADG;IACG,iBAAiB;IAAS,UAA1B,iBAAiB,UAAwB;IAK9C;;;OAGG;IACH,SATK,iBAAiB,CASV,MAAM;QATnB,iBA8JC;QAnJC,iBAAO,CAAC;QAER,IAAI,CAAC,2BAA2B,GAAG,UAAC,KAAgB,IAAK,OAAA,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAA9B,CAA8B,CAAC;QAExF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAKD,sBAAW,qCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAgB;YAEjC,IAAI,cAAc,GAAU,CAAC,CAAC;YAC9B,IAAI,oBAAoB,GAAU,CAAC,CAAC;YACpC,IAAI,qBAAqB,GAAU,CAAC,CAAC;YACrC,IAAI,2BAA2B,GAAU,CAAC,CAAC;YAC3C,IAAI,cAAc,GAAU,CAAC,CAAC;YAC9B,IAAI,KAAe,CAAC;YAEpB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAc,CAAC;YAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,KAAK,EAAc,CAAC;YACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,EAAoB,CAAC;YACzD,IAAI,CAAC,0BAA0B,GAAG,IAAI,KAAK,EAAoB,CAAC;YAChE,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAc,CAAC;YAE7C,IAAI,GAAG,GAAU,KAAK,CAAC,MAAM,CAAC;YAE9B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAEzF,EAAE,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC;oBACjC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;wBACtB,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC,GAAgB,KAAK,CAAC;oBACzE,IAAI;wBACH,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,GAAgB,KAAK,CAAC;gBAE5D,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC;oBAC9C,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;wBACtB,IAAI,CAAC,0BAA0B,CAAC,2BAA2B,EAAE,CAAC,GAAsB,KAAK,CAAC;oBAC3F,IAAI;wBACH,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,CAAC,GAAsB,KAAK,CAAC;gBAE9E,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC;oBACxC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,GAAgB,KAAK,CAAC;gBAC3D,CAAC;YACF,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,IAAI,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,cAAc,IAAI,IAAI,CAAC,uBAAuB,IAAI,qBAAqB,IAAI,IAAI,CAAC,6BAA6B,IAAI,2BAA2B,CAAC;gBAC3Q,MAAM,CAAC;YAER,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;YACnD,IAAI,CAAC,6BAA6B,GAAG,2BAA2B,CAAC;YACjE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;YACvC,IAAI,CAAC,uBAAuB,GAAG,qBAAqB,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;YAEvC,AACA,oCADoC;YACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,IAAI,CAAC,cAAc,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;YAE5E,AACA,sCADsC;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAE7C,CAAC;;;OA5DA;IA8DD;;OAEG;IACK,0CAAc,GAAtB;QAEC,IAAI,GAAG,GAAU,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxG,CAAC;IAED;;OAEG;IACK,8CAAkB,GAA1B,UAA2B,KAAgB;QAE1C,yFAAyF;QACzF,kCAAkC;QAElC,IAAI,KAAK,GAAyB,KAAK,CAAC,MAAM,CAAC;QAE/C,EAAE,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAc,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC;YAC1C,IAAI,CAAC,wBAAwB,CAAoB,KAAK,CAAC,CAAC;QAEzD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,oDAAwB,GAAhC,UAAiC,KAAsB;QAEtD,IAAI,EAAE,GAAuC,KAAK,CAAC;QAEnD,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,sBAAsB,CAAC;YAC9B,EAAE,IAAI,CAAC,6BAA6B,CAAC;YAGrC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,IAAI,CAAC,sBAAsB,CAAC;YAC9B,EAAE,IAAI,CAAC,6BAA6B,CAAC;YAErC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED;;OAEG;IACK,8CAAkB,GAA1B,UAA2B,KAAgB;QAE1C,IAAI,EAAE,GAA2B,KAAK,CAAC;QAEvC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACxB,EAAE,IAAI,CAAC,gBAAgB,CAAC;YACxB,EAAE,IAAI,CAAC,uBAAuB,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,EAAE,IAAI,CAAC,gBAAgB,CAAC;YACxB,EAAE,IAAI,CAAC,uBAAuB,CAAC;YAE/B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IACF,wBAAC;AAAD,CA9JA,AA8JC,EA9J+B,eAAe,EA8J9C;AAED,AAA2B,iBAAlB,iBAAiB,CAAC;;;;;;;;;;AC7K3B,IAAO,aAAa,WAAc,oCAAoC,CAAC,CAAC;AACxE,IAAO,SAAS,WAAe,gCAAgC,CAAC,CAAC;AACjE,IAAO,KAAK,WAAgB,8BAA8B,CAAC,CAAC;AAC5D,IAAO,eAAe,WAAc,wCAAwC,CAAC,CAAC;AAE9E,IAAO,oBAAoB,WAAa,kDAAkD,CAAC,CAAC;AAK5F,IAAO,MAAM,WAAgB,oCAAoC,CAAC,CAAC;AACnE,IAAO,uBAAuB,WAAY,oEAAoE,CAAC,CAAC;AAIhH,IAAM,mBAAmB;IAAS,UAA5B,mBAAmB,UAAgC;IAgBxD,SAhBK,mBAAmB,CAgBZ,WAA+B;QAA/B,2BAA+B,GAA/B,eAA+B;QAE1C,iBAAO,CAAC;QAfD,0BAAqB,GAAW,IAAI,CAAC;QAiB5C,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAEnE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAEM,2CAAa,GAApB,UAAqB,KAAK,CAAQ,QAAD,AAAS;QAEzC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEM,2CAAa,GAApB,UAAqB,KAAK,CAAQ,QAAD,AAAS,EAAE,KAAY;QAEvD,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACb,KAAK,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAClB,KAAK,GAAG,CAAC,CAAC;QAEX,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAEvE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAClC,CAAC;IAEM,iDAAmB,GAA1B,UAA2B,SAAS,CAAQ,QAAD,AAAS;QAEnD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;IACrD,CAAC;IAEO,kCAAI,GAAZ;QAEC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAkB,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC,IAAI,EAAE,CAAC;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAY,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAwB,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAU,CAAC;QAEzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAEM,+CAAiB,GAAxB,UAAyB,KAAK,CAAQ,QAAD,AAAS;QAE7C,gBAAK,CAAC,iBAAiB,YAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC/B,CAAC;IAEO,oDAAsB,GAA9B;QAEC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,sBAAW,4CAAW;aAAtB;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAK,CAAQ,OAAD,AAAQ;YAE1C,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;gBAC9B,MAAM,CAAC;YAER,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAEnE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;;;OAdA;IAgBM,2CAAa,GAApB,UAAqB,MAAoB,EAAE,KAAW,EAAE,QAAkB;QAEzE,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEjD,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACvH,CAAC;IAEO,gDAAkB,GAA1B;QAEC,IAAI,IAAI,GAAU,IAAI,CAAC,cAAc,GAAC,EAAE,CAAC;QAEzC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACpC,CAAC;IAEM,oDAAsB,GAA7B,UAA8B,UAAiB;QAE9C,IAAI,MAAe,CAAC;QACpB,IAAI,UAAU,GAAe,UAAU,CAAC,UAAU,CAAC;QACnD,IAAI,cAAc,GAAU,UAAU,CAAC,IAAI,CAAC;QAC5C,IAAI,eAAe,GAAU,UAAU,CAAC,GAAG,GAAG,cAAc,CAAC;QAE7D,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEnC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAkB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAErC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAC,eAAe,CAAC;YACpF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAEtE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACtC,CAAC;IACF,CAAC;IAEO,uDAAyB,GAAjC,UAAkC,MAAe,EAAE,UAAiB,EAAE,UAAiB,EAAE,UAAiB;QAEzG,IAAI,GAAG,GAAiB,aAAa,CAAC,kBAAkB,CAAC;QACzD,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QACpC,IAAI,IAAI,GAAU,MAAM,CAAC,iBAAiB,EAAE,IAAI,GAAU,MAAM,CAAC,iBAAiB,EAAE,IAAW,CAAC;QAChG,IAAI,IAAI,GAAU,MAAM,CAAC,iBAAiB,EAAE,IAAI,GAAU,MAAM,CAAC,iBAAiB,EAAE,IAAI,GAAU,MAAM,CAAC,iBAAiB,CAAC;QAC3H,IAAI,CAAC,GAAmB,CAAC,CAAC;QAE1B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC5B,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAC,UAAU,CAAC;YACxD,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAC,UAAU,CAAC;YACxD,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAC,UAAU,CAAC;YACxD,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;YACX,CAAC,IAAI,CAAC,CAAC;QACR,CAAC;QAED,IAAI,GAAG,CAAC,CAAC;QAET,IAAI,CAAC,GAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAU,CAAC,GAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAE/B,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,kCAAkC;QACxD,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAEhD,IAAI,KAAK,GAAU,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,KAAK,GAAG,CAAC,CAAC,GAAC,KAAK,CAAC;QAClC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,KAAK,GAAG,CAAC,CAAC,GAAC,KAAK,CAAC;QAElC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAChB,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAEhB,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACR,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QAER,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACZ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAC,CAAC,CAAC;QAClB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACZ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEpF,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAEM,8CAAgB,GAAvB,UAAwB,IAAW,EAAE,QAAiB;QAErD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEM,iDAAmB,GAA1B,UAA2B,IAAW,EAAE,QAAiB;QAExD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAEM,2CAAa,GAApB,UAAqB,KAAW;QAE/B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,8CAAgB,GAAvB,UAAwB,IAAW;QAElC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,sBAAI,qDAAoB;aAAxB;YAEC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACjC,CAAC;;;OAAA;IACF,0BAAC;AAAD,CA/PA,AA+PC,EA/PiC,uBAAuB,EA+PxD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;AChR7B,IAAO,0BAA0B,WAAW,mDAAmD,CAAC,CAAC;AAIjG,IAAO,MAAM,WAAgB,oCAAoC,CAAC,CAAC;AAEnE,IAAO,gBAAgB,WAAc,6DAA6D,CAAC,CAAC;AAKpG,IAAM,mBAAmB;IAAS,UAA5B,mBAAmB,UAAyB;IAMjD,SANK,mBAAmB;QAQvB,iBAAO,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAEO,yCAAW,GAAnB;QAEC,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;QAEhC,AACA,qCADqC;QACrC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,uCAAS,GAAjB,UAAkB,SAAgB,EAAE,SAAgB,EAAE,SAAgB;QAErE,IAAI,GAAG,GAAU,IAAI,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QAE1B,IAAI,UAAU,GAAiD,GAAG,CAAC,UAAU,CAAC;QAC9E,UAAU,CAAC,WAAW,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,GAAG,CAAC,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;IACJ,iDAAmB,GAA1B;QAEC,MAAM,IAAI,0BAA0B,EAAE,CAAC;QACvC;;WAEG;IACJ,CAAC;IAED,WAAW;IACJ,oDAAsB,GAA7B,UAA8B,UAAiB;QAE9C,IAAI,KAAK,GAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,WAAW,GAAU,KAAK,CAAC,SAAS,CAAC;QACzC,IAAI,GAAG,GAAY,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAG9C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,CAAC;IACF,CAAC;IAED,WAAW;IACJ,2CAAa,GAApB,UAAqB,MAAoB,EAAE,KAAW,EAAE,QAAkB;QAEzE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACjD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAC3D,CAAC;QACF,CAAC;IACF,CAAC;IACF,0BAAC;AAAD,CAhFA,AAgFC,EAhFiC,gBAAgB,EAgFjD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;AC9F7B,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAGhE,IAAO,oBAAoB,WAAa,kDAAkD,CAAC,CAAC;AAI5F,IAAO,MAAM,WAAgB,oCAAoC,CAAC,CAAC;AAEnE,IAAO,gBAAgB,WAAc,6DAA6D,CAAC,CAAC;AAIpG,IAAM,uBAAuB;IAAS,UAAhC,uBAAuB,UAAyB;IAcrD,SAdK,uBAAuB;QAgB3B,iBAAO,CAAC;QAXF,kBAAa,GAAU,KAAK,CAAC;QAG7B,WAAM,GAAU,EAAE,CAAC;QAUzB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,wBAAwB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC3D,IAAI,CAAC,oBAAoB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,sBAAW,yCAAI;aAAf;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAgB,KAAY;YAE3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,CAAC;;;OALA;IAOD,sBAAW,gDAAW;aAAtB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAuB,KAAY;YAElC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OALA;IAQD,sBAAW,qDAAgB;QAD3B,SAAS;aACT;YAEC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;QACjD,CAAC;;;OAAA;IAGD,sBAAW,0CAAK;QADhB,SAAS;aACT;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,CAAC;;;OAAA;IAED,WAAW;IACJ,+CAAa,GAApB,UAAqB,MAAuB,EAAE,KAAW,EAAE,QAAkB;QAE5E,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1D,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,YAAY;IACL,mDAAiB,GAAxB,UAAyB,UAAiB;QAEzC,IAAI,kBAAkB,GAAkB,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAChF,IAAI,iBAAiB,GAAkB,UAAU,CAAC,aAAa,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,KAAK,GAAuC,IAAI,CAAC,OAAO,CAAC;QAC7D,IAAI,GAAG,GAAY,KAAK,CAAC,cAAc,CAAC;QACxC,IAAI,IAAI,GAAU,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,GAAU,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,GAAU,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAU,CAAC,CAAC;QACjB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACnC,IAAI,KAAK,GAAW,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;IACF,CAAC;IAED,WAAW;IACJ,wDAAsB,GAA7B,UAA8B,UAAiB;QAE9C,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEM,qEAAmC,GAA1C,UAA2C,UAAiB,EAAE,OAAqB,EAAE,MAAe;QAEnG,IAAI,GAAG,GAAiB,IAAI,KAAK,EAAU,CAAC;QAC5C,IAAI,GAAY,CAAC;QACjB,IAAI,CAAQ,EAAE,CAAQ,EAAE,CAAQ,CAAC;QACjC,IAAI,IAAW,EAAE,IAAW,CAAC;QAC7B,IAAI,IAAW,EAAE,IAAW,CAAC;QAC7B,IAAI,CAAQ,CAAC;QAEb,IAAI,KAAK,GAAuC,IAAI,CAAC,OAAO,CAAC;QAC7D,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC3E,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,aAAa,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAClF,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,aAAa,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAClF,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,aAAa,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAClF,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAErC,CAAC,GAAG,CAAC,CAAC;QACN,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YACf,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACZ,IAAI,GAAG,CAAC,CAAC;YACV,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,CAAC,IAAI,CAAC,CAAC;QACR,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,CAAC,GAAU,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAU,IAAI,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAU,CAAC,GAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7C,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,kCAAkC;QAExD,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QAErB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAC,IAAI,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QAEhD,IAAI,KAAK,GAAU,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,KAAK,GAAG,CAAC,CAAC,GAAC,KAAK,CAAC;QAClC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAC,KAAK,GAAG,CAAC,CAAC,GAAC,KAAK,CAAC;QAElC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAChB,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAEhB,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACR,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QAER,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACZ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACZ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAEpF,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACF,8BAAC;AAAD,CArLA,AAqLC,EArLqC,gBAAgB,EAqLrD;AAED,AAAiC,iBAAxB,uBAAuB,CAAC;;;;;;;;;;ACnMjC,IAAO,uBAAuB,WAAY,oEAAoE,CAAC,CAAC;AAEhH,IAAM,2BAA2B;IAAS,UAApC,2BAA2B,UAAgC;IAIhE,SAJK,2BAA2B,CAIpB,aAAyB;QAAzB,6BAAyB,GAAzB,kBAAyB;QAEpC,iBAAO,CAAC;QAER,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;IAKD,sBAAW,sDAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAyB,KAAY;YAEpC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACb,KAAK,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC9B,KAAK,GAAG,CAAC,CAAC;YAEX,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC7B,CAAC;;;OATA;IAWM,4DAAsB,GAA7B,UAA8B,UAAiB;QAE9C,IAAI,OAAO,GAAiB,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC;QAEjE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAU,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,cAAc,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IACtD,CAAC;IACF,kCAAC;AAAD,CAzCA,AAyCC,EAzCyC,uBAAuB,EAyChE;AAED,AAAqC,iBAA5B,2BAA2B,CAAC;;;;AC9CrC,IAAO,mBAAmB,WAAa,4CAA4C,CAAC,CAAC;AAMrF,IAAO,qBAAqB,WAAY,mDAAmD,CAAC,CAAC;AAE7F,IAAO,aAAa,WAAc,wCAAwC,CAAC,CAAC;AAG5E,IAAM,gBAAgB;IAYrB,SAZK,gBAAgB;QAMd,mBAAc,GAAU,IAAI,CAAC;QAG5B,uBAAkB,GAAW,IAAI,CAAC;QAKzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACxD,CAAC;IAEM,iDAAsB,GAA7B;QAEC,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;IACpC,CAAC;IAED,sBAAW,+CAAiB;aAA5B;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;aAED,UAA6B,KAAa;YAEzC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACjC,CAAC;;;OALA;IAOM,wCAAa,GAApB;QAEC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAEM,uCAAY,GAAnB,UAAoB,QAAyB;QAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC;YAC9B,MAAM,CAAC;QAER,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC3C,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAChC,CAAC;IACF,CAAC;IAED,sBAAW,mCAAK;aAAhB;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAiB,KAAe;YAE/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,CAAC;;;OALA;IAOD,sBAAW,sCAAQ;aAAnB;YAEC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAED,sBAAW,0CAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAwB,KAAY;YAEnC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC;gBAChC,MAAM,CAAC;YAER,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;;;OARA;IAUM,kCAAO,GAAd;QAEC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,8CAAmB,GAA1B;QAEC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACpE,CAAC;IAEM,0CAAe,GAAtB,UAAuB,eAA+B,EAAE,QAAkB;QAEzE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEpD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAEM,iDAAsB,GAA7B,UAA8B,UAAiB;QAE9C,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEM,wCAAa,GAApB,UAAqB,MAAuB,EAAE,KAAW,EAAE,QAAkB;QAE5E,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEM,4CAAiB,GAAxB,UAAyB,KAAK;QAE7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,CAAC;IACF,CAAC;IACF,uBAAC;AAAD,CAtIA,AAsIC,IAAA;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;;;;;;;ACnJ1B,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAI3E,AAGA;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAmB;IAElC,SAFK,UAAU,CAEH,MAAc;QAEzB,kBAAM,MAAM,CAAC,CAAC;IACf,CAAC;IAED;;OAEG;IACI,oCAAe,GAAtB,UAAuB,SAAoB;QAE1C,wEAAwE;IACzE,CAAC;IACF,iBAAC;AAAD,CAdA,AAcC,EAdwB,UAAU,EAclC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;ACvBpB,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAI3E,AAGA;;GADG;IACG,oBAAoB;IAAS,UAA7B,oBAAoB,UAAmB;IAI5C;;;OAGG;IACH,SARK,oBAAoB,CAQb,gBAAwB;QAEnC,kBAAM,gBAAgB,CAAC,CAAC;QAExB,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,8CAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,8CAAe,GAAtB;QAEC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IACF,2BAAC;AAAD,CAhCA,AAgCC,EAhCkC,UAAU,EAgC5C;AAED,AAA8B,iBAArB,oBAAoB,CAAC;;;;;;;;;;ACvC9B,IAAO,0BAA0B,WAAW,mDAAmD,CAAC,CAAC;AAEjG,IAAO,QAAQ,WAAgB,uCAAuC,CAAC,CAAC;AAIxE,AAGA;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAiB;IAMhC,SANK,UAAU,CAMH,MAAc;QAEzB,iBAAO,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,sBAAW,8BAAM;aAAjB;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;;;OAAA;IAEM,qCAAgB,GAAvB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,oCAAe,GAAtB;QAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,gCAAW,GAAlB,UAAmB,MAAqB,EAAE,SAAgB;QAEzD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,oCAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,sCAAiB,GAAxB,UAAyB,WAAoB,EAAE,YAAqB;QAEnE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACI,4CAAuB,GAA9B;QAEC,MAAM,IAAI,0BAA0B,EAAE,CAAC;QACvC,4CAA4C;IAC7C,CAAC;IACF,iBAAC;AAAD,CA9EA,AA8EC,EA9EwB,QAAQ,EA8EhC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;AC3FpB,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAI3E,AAGA;;GADG;IACG,cAAc;IAAS,UAAvB,cAAc,UAAmB;IAItC;;;OAGG;IACH,SARK,cAAc,CAQP,UAAkB;QAE7B,kBAAM,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,wCAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,wCAAe,GAAtB;QAEC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IACF,qBAAC;AAAD,CAhCA,AAgCC,EAhC4B,UAAU,EAgCtC;AAED,AAAwB,iBAAf,cAAc,CAAC;;;;ACnCxB,AAGA;;GADG;IACG,QAAQ;IAiEb;;OAEG;IACH,SApEK,QAAQ;QAON,oBAAe,GAAU,CAAC,CAAC;QAG3B,kBAAa,GAAU,CAAC,CAAC;QA4D/B,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAY,CAAC;IAC3C,CAAC;IAvDD,sBAAW,mCAAa;QAHxB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACpC,CAAC;aAED,UAAyB,KAAa;YAErC,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;gBACxC,MAAM,CAAC;YAER,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YAEpC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAC;QAEhG,CAAC;;;OAXA;IAaD,sBAAW,2CAAqB;aAAhC;YAEC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACpC,CAAC;aAED,UAAiC,KAAa;YAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;gBACxC,MAAM,CAAC;YAER,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YAEpC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAClF,CAAC;;;OAXA;IAgBD,sBAAW,4BAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAMD,sBAAW,mCAAa;QAJxB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAUD;;;;;;OAMG;IACI,8BAAW,GAAlB,UAAmB,MAAqB,EAAE,SAAgB;QAEzD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACI,oCAAiB,GAAxB,UAAyB,WAAoB,EAAE,YAAqB;QAEnE,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,kCAAe,GAAtB;QAEC,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,yCAAsB,GAA7B,UAA8B,MAAc;QAE3C,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,kCAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAC3D,MAAM,CAAC;QAER,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAU,CAAC,CAAC;YAEjB,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe;gBAC9B,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAEnD,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBAC/B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAED;;;OAGG;IACI,0CAAuB,GAA9B;QAEC,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,2BAAQ,GAAf,UAAgB,IAAa;QAE5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,eAAe,EAAE,CAAE,GAAG,IAAI,CAAC;QAEnD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE/D,IAAI,WAAW,GAAU,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,GAAG,IAAI,CAAC;QAEZ,GAAG,CAAC;YACH,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC;QACnC,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;IAC1C,CAAC;IAED;;;;OAIG;IACI,8BAAW,GAAlB,UAAmB,IAAa;QAE/B,IAAI,KAAK,GAAU,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,WAAW,GAAU,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,GAAG,IAAI,CAAC;QAEZ,GAAG,CAAC;YACH,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC;QACnC,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;IAC1C,CAAC;IAEO,gDAA6B,GAArC,UAAsC,KAAa;QAElD,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;YACvE,MAAM,CAAC;QAER,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;QAEnE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACI,oCAAiB,GAAxB;QAEC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAEF,4CAA4C;IAC5C,KAAK;IACL,kDAAkD;IAClD,8BAA8B;IAC9B,EAAE;IACF,SAAS;IACT,iCAAiC;IACjC,8CAA8C;IAC9C,KAAK;IAEG,uCAAoB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;IAC1D,CAAC;IACF,eAAC;AAAD,CAnOA,AAmOC,IAAA;AAED,AAAkB,iBAAT,QAAQ,CAAC;;;;AC9OlB,AAGA;;GADG;IACG,QAAQ;IAEb,SAFK,QAAQ;IAIb,CAAC;IACF,eAAC;AAAD,CALA,AAKC,IAAA;AAED,AAAkB,iBAAT,QAAQ,CAAC;;;;ACPlB,IAAO,QAAQ,WAAgB,uCAAuC,CAAC,CAAC;AAGxE,AAGA;;GADG;IACG,SAAS;IAOd,SAPK,SAAS,CAOF,QAAiB;QAHrB,iBAAY,GAAW,KAAK,CAAC;QAKpC,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAe,IAAI,QAAQ,EAAE,CAAC;IACxD,CAAC;IAED,sBAAW,+BAAQ;aAAnB;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAEM,4BAAQ,GAAf,UAAgB,SAAoB;QAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAEM,kCAAc,GAArB,UAAsB,MAAoB;QAEzC,IAAI,IAAI,GAAc,MAAM,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,GAAc,IAAI,CAAC,YAAY,CAAC;QAErC,OAAO,CAAC,EAAE,CAAC;YACV,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBACb,MAAM,CAAC;YAER,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC;QAE3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,iCAAa,GAApB,UAAqB,MAAoB;QAExC,IAAI,IAAI,GAAc,MAAM,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAY,CAAC;QAEjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC5C,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI;gBACtC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;YAEzB,EAAE,CAAC,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,kCAAc,GAAtB;QAEC,IAAI,IAAI,GAAc,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAY,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,GAAG,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;gBAC/B,EAAE,CAAC,CAAC,IAAI,CAAC;oBACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAEzB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAED,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,AACA,sDADsD;YACtD,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAEhC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;IAC9B,CAAC;IACF,gBAAC;AAAD,CA7FA,AA6FC,IAAA;AAED,AAAmB,iBAAV,SAAS,CAAC;;;;;;;;;;ACvGnB,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAI3E,AAGA;;GADG;IACG,cAAc;IAAS,UAAvB,cAAc,UAAmB;IAItC;;;OAGG;IACH,SARK,cAAc,CAQP,UAAkB;QAE7B,kBAAM,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,wCAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAY,IAAI,CAAC,CAAC;YACxC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,wCAAe,GAAtB;QAEC,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IACF,qBAAC;AAAD,CAhCA,AAgCC,EAhC4B,UAAU,EAgCtC;AAED,AAAwB,iBAAf,cAAc,CAAC;;;;;;;;;;ACvCxB,IAAO,UAAU,WAAe,yCAAyC,CAAC,CAAC;AAI3E,AAKA;;;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAmB;IAIlC;;;OAGG;IACH,SARK,UAAU,CAQH,MAAc;QAEzB,kBAAM,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,oCAAe,GAAtB,UAAuB,SAAoB;QAE1C,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAY,IAAI,CAAC,CAAC;YACxC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,gCAAW,GAAlB,UAAmB,MAAqB,EAAE,SAAgB;QAEzD,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC;QAEd,AACA,kEADkE;QAClE,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IACF,iBAAC;AAAD,CAtCA,AAsCC,EAtCwB,UAAU,EAsClC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;ACVH;;;;ACES;;;;ACtC1B,AAQA;;;;;;;GADG;IACG,kBAAkB;IAqEvB;;;;OAIG;IACH,SA1EK,kBAAkB,CA0EX,aAA2B;QAEtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;IAEF,yBAAC;AAAD,CA/EA,AA+EC,IAAA;AAED,AAA4B,iBAAnB,kBAAkB,CAAC;;;;AC/F5B,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAQhE,IAAO,gBAAgB,WAAc,8CAA8C,CAAC,CAAC;AAGrF,AAOA;;;;;;GADG;IACG,aAAa;IAwBlB;;;;;OAKG;IACH,SA9BK,aAAa,CA8BN,oBAAoC;QAApC,oCAAoC,GAApC,4BAAoC;QA1BxC,qBAAgB,GAAG,EAAE,CAAC;QACtB,sBAAiB,GAAW,IAAI,CAAC;QAGjC,iBAAY,GAAU,CAAC,CAAC;QAwB/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAW,CAAC;IACvC,CAAC;IAtBD,sBAAW,2CAAgB;QAH3B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;aAED,UAA4B,KAAa;YAExC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAChC,CAAC;;;OALA;IAqBD;;OAEG;IACI,wCAAgB,GAAvB,UAAwB,CAAQ,EAAE,CAAQ,EAAE,IAAS;QAEpD,AACA,YADY;YACR,WAAW,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,YAAY,GAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE1E,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,yCAAiB,GAAxB,UAAyB,WAAoB,EAAE,YAAqB,EAAE,KAAW;QAEhF,AACA,iBADiB;QACjB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,AACA,mBADmB;QACnB,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,WAAW,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,YAAY,CAAC;QAEnD,AACA,2BAD2B;QAC3B,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,IAAI,GAAkB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC5D,IAAI,MAAc,CAAC;QAEnB,OAAO,IAAI,EAAE,CAAC;YACb,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC;YAE9C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;QAED,AACA,qCADqC;QACrC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC;QAEb,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAEF,gHAAgH;IAChH,KAAK;IACL,2BAA2B;IAC3B,EAAE;IACF,wBAAwB;IACxB,oCAAoC;IACpC,EAAE;IACF,yCAAyC;IACzC,2BAA2B;IAC3B,EAAE;IACF,wDAAwD;IACxD,oDAAoD;IACpD,MAAM;IACN,EAAE;IACF,+DAA+D;IAC/D,KAAK;IAEG,qCAAa,GAApB,UAAqB,QAAQ;QAE5B,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IAClC,CAAC;IAEO,iCAAS,GAAjB,UAAkB,MAAc;QAE/B,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC9C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAClC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC;QAEd,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAEO,mCAAW,GAAnB,UAAoB,OAAe,EAAE,OAAe;QAEnD,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9G,CAAC;IAEO,6CAAqB,GAA7B,UAA8B,SAAoB;QAEjD,AACA,sBADsB;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAE1C,AACA,0CAD0C;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,gCAAgC;QAExF,AAKA,wEALwE;QACxE,4CAA4C;QAC5C,8EAA8E;QAC9E,wEAAwE;YAEpE,yBAAyB,GAAU,MAAM,CAAC,SAAS,CAAC;QACxD,IAAI,eAAkC,CAAC;QACvC,IAAI,kBAAqC,CAAC;QAC1C,IAAI,MAAc,CAAC;QACnB,IAAI,CAAQ,CAAC;QAEb,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;YACjD,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC5B,AACA,wEADwE;gBACxE,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,kBAAkB,CAAC,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC1L,yBAAyB,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;oBAChE,eAAe,GAAG,kBAAkB,CAAC;oBACrC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;wBAC7C,MAAM,CAAC,kBAAkB,CAAC;oBAC3B,CAAC;gBACF,CAAC;YACF,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,kBAAkB,CAAC,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC9G,AAIA,iFAJiF;gBACjF,kEAAkE;gBAClE,kFAAkF;gBAClF,wEAAwE;gBACxE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;oBAC7C,MAAM,CAAC,kBAAkB,CAAC;gBAC3B,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,CAAC,eAAe,CAAC;IACxB,CAAC;IAEO,2CAAmB,GAA3B,UAA4B,kBAAqC;QAEhE,IAAI,YAAY,GAAY,CAAE,kBAAkB,CAAC,aAAa,IAAI,IAAI,CAAE,GAAE,IAAI,QAAQ,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC;QAE5H,IAAI,MAAM,GAAY,kBAAkB,CAAC,iBAAiB,CAAC;QAC3D,IAAI,MAAM,GAAY,kBAAkB,CAAC,gBAAgB,CAAC;QAC1D,IAAI,CAAC,GAAU,kBAAkB,CAAC,gBAAgB,CAAC;QACnD,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC,CAAC,CAAC;QACvC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC,CAAC,CAAC;QACvC,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAC,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;IAEM,+BAAO,GAAd;QAEC,MAAM;IACP,CAAC;IACF,oBAAC;AAAD,CA1LA,AA0LC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;AC9MvB,IAAO,iBAAiB,WAAa,2CAA2C,CAAC,CAAC;AAIlF,AAGA;;GADG;IACG,sBAAsB;IAAS,UAA/B,sBAAsB,UAA0B;IAIrD,SAJK,sBAAsB,CAIf,IAAoB,EAAE,SAAmB;QAEpD,kBAAM,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAElC,IAAI,GAAG,GAAmC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxE,GAAG,CAAC,WAAW,GAAG,UAAC,KAAgB,IAAK,YAAK,EAAL,CAAK,CAAC;QAE9C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAEvB,IAAI,KAAK,GAAwB,GAAG,CAAC,KAAK,CAAC;QAE3C,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,eAAe,GAClB,KAAK,CAAC,0BAA0B,CAAC,GACjC,KAAK,CAAC,uBAAuB,CAAC,GAC9B,KAAK,CAAC,qBAAqB,CAAC,GAC5B,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;QAE3C,IAAI,GAAG,GAAmC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAExE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAErB,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,CAAC;IAzBa,yBAAE,GAAU,WAAW,CAAC;IA0BvC,6BAAC;AAAD,CA5BA,AA4BC,EA5BoC,iBAAiB,EA4BrD;AAED,AAAgC,iBAAvB,sBAAsB,CAAC;;;;;;;;;;ACrChC,IAAO,iBAAiB,WAAa,2CAA2C,CAAC,CAAC;AAIlF,AAGA;;GADG;IACG,wBAAwB;IAAS,UAAjC,wBAAwB,UAA0B;IAIvD,SAJK,wBAAwB,CAIjB,IAAoB,EAAE,WAAuB;QAExD,kBAAM,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAEtC,IAAI,GAAG,GAAmC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxE,GAAG,CAAC,WAAW,GAAG,UAAC,KAAgB,IAAK,YAAK,EAAL,CAAK,CAAC;QAE9C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAEvB,IAAI,KAAK,GAAwB,GAAG,CAAC,KAAK,CAAC;QAE3C,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,eAAe,GAClB,KAAK,CAAC,0BAA0B,CAAC,GACjC,KAAK,CAAC,uBAAuB,CAAC,GAC9B,KAAK,CAAC,qBAAqB,CAAC,GAC5B,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;QAE3C,IAAI,GAAG,GAAmC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAExE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAErB,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtD,CAAC;IAzBa,2BAAE,GAAU,aAAa,CAAC;IA0BzC,+BAAC;AAAD,CA5BA,AA4BC,EA5BsC,iBAAiB,EA4BvD;AAED,AAAkC,iBAAzB,wBAAwB,CAAC;;;;AC9BlC,AAGA;;GADG;IACG,iBAAiB;IAyDtB;;;;;OAKG;IACH,SA/DK,iBAAiB,CA+DV,IAAoB,EAAE,YAAoB,EAAE,eAAgC;QAEvF,AACA,kDADkD;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,mCAAO,GAAd;QAEC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,8CAAkB,GAAzB;IAGA,CAAC;IAED;;OAEG;IACI,+CAAmB,GAA1B;IAGA,CAAC;IAED;;OAEG;IACI,gDAAoB,GAA3B,UAA4B,QAAe;IAG3C,CAAC;IACF,wBAAC;AAAD,CAxGA,AAwGC,IAAA;AAED,AAA2B,iBAAlB,iBAAiB,CAAC;;;;;;;;;;ACpH3B,IAAO,iBAAiB,WAAa,2CAA2C,CAAC,CAAC;AAKlF,AAGA;;GADG;IACG,mBAAmB;IAAS,UAA5B,mBAAmB,UAA0B;IAIlD,SAJK,mBAAmB,CAIZ,IAAoB,EAAE,MAAa;QAE9C,kBAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAE5B,IAAI,GAAG,GAAmC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxE,GAAG,CAAC,WAAW,GAAG,UAAC,KAAgB,IAAK,YAAK,EAAL,CAAK,CAAC;QAE9C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAEvB,IAAI,KAAK,GAAwB,GAAG,CAAC,KAAK,CAAC;QAC3C,IAAI,GAAkB,CAAC;QAEvB,AACA,+CAD+C;QAC/C,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,eAAe,GAClB,KAAK,CAAC,0BAA0B,CAAC,GACjC,KAAK,CAAC,uBAAuB,CAAC,GAC9B,KAAK,CAAC,qBAAqB,CAAC,GAC5B,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;QAE3C,GAAG,GAAoB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAErD,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAErB,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;IACxC,CAAC;IA3Ba,sBAAE,GAAU,QAAQ,CAAC;IA4BpC,0BAAC;AAAD,CA9BA,AA8BC,EA9BiC,iBAAiB,EA8BlD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;ACxC7B,IAAO,cAAc,WAAc,wCAAwC,CAAC,CAAC;AAE7E,AAGA;;GADG;IACG,kBAAkB;IAMvB;;OAEG;IACH,SATK,kBAAkB;QAGf,WAAM,GAAU,CAAC,CAAC;QAClB,cAAS,GAAU,CAAC,CAAC;QAO5B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAkB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,oCAAO,GAAd;QAEC,IAAI,IAAmB,CAAC;QACxB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;YACjC,EAAE,IAAI,CAAC,SAAS,CAAC;QAClB,CAAC;QAAC,IAAI,CAAC,CAAC;YACP,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACI,oCAAO,GAAd;QAEC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,CAAC;IAEM,oCAAO,GAAd;QAEC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,CAAC;IACF,yBAAC;AAAD,CA1CA,AA0CC,IAAA;AAED,AAA4B,iBAAnB,kBAAkB,CAAC;;;;AC/C5B,AAGA;;GADG;IACG,cAAc;IAApB,SAAM,cAAc;IAWpB,CAAC;IAAD,qBAAC;AAAD,CAXA,AAWC,IAAA;AAED,AAAwB,iBAAf,cAAc,CAAC;;;;ACSD;;;;ACTE;;;;ACsCJ;;;;ACzBE;;;;;;;;;;AC/BvB,IAAO,cAAc,WAAa,wCAAwC,CAAC,CAAC;AAC5E,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAIpF,AAGA;;GADG;IACG,UAAU;IAAS,UAAnB,UAAU,UAAuB;IAIvC,wEAAwE;IAEvE;;OAEG;IACH,SATK,UAAU;QAWd,iBAAO,CAAC;QATF,cAAS,GAAwB,IAAI,KAAK,EAAiB,CAAC;IAUnE,CAAC;IAED;;OAEG;IACI,iCAAY,GAAnB;QAEC,IAAI,MAAM,GAAiB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAEF,0CAA0C;IAC1C,KAAK;IACL,yDAAyD;IACzD,EAAE;IACF,sCAAsC;IACtC,EAAE;IACF,mBAAmB;IACnB,KAAK;IAEG,mCAAc,GAArB;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAEM,+BAAU,GAAjB;QAEC,kCAAkC;IACnC,CAAC;IACF,iBAAC;AAAD,CA5CA,AA4CC,EA5CwB,cAAc,EA4CtC;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;;;;;;;ACjDpB,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,sBAAsB;IAAS,UAA/B,sBAAsB,UAA4B;IAqFvD;;;;;;;OAOG;IACH,SA7FK,sBAAsB,CA6Ff,MAAkB,EAAE,MAAmB,EAAE,SAAqB,EAAE,SAAqB,EAAE,GAAkB;QAAzG,sBAAkB,GAAlB,WAAkB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,mBAAkB,GAAlB,UAAkB;QAEpH,iBAAO,CAAC;QAxFD,iBAAY,GAAU,CAAC,CAAC;QA0F/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,GAAC,CAAC,IAAI,CAAC,CAAC,GAAE,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IA1FD,sBAAW,0CAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,0CAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,6CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,6CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,GAAC,CAAC,IAAI,CAAC,CAAC,GAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;YAEpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,uCAAG;QAHd;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;aAED,UAAe,KAAa;YAE3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAElB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IA4BD;;OAEG;IACI,gDAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,QAAQ,GAAU,CAAC,CAAC;QACxB,IAAI,KAAK,GAAU,CAAC,CAAC;QACrB,IAAI,UAAiB,CAAC;QACtB,IAAI,KAAY,EAAE,KAAY,EAAE,EAAS,EAAE,EAAS,CAAC;QACrD,IAAI,UAAU,GAAU,CAAC,CAAC;QAE1B,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,4DAD4D;YAC5D,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,qEAAqE;YACtI,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,UAAU,GAAC,CAAC,EAAE,qDAAqD;YAE3G,AACA,kDADkD;YAClD,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACnC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAA;gBACvC,SAAS,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACjD,QAAQ,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBAElD,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBAEvC,IAAI,QAAQ,GAAU,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;gBAChD,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,UAAU,GAAU,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAExD,UAAU,GAAG,KAAK,CAAC;gBAEnB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,IAAI,QAAQ,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;oBAClD,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IAAI,MAAM,GAAU,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,CAAC,GAAE,IAAI,CAAC,OAAO,GAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC;oBAC5E,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IAAI,OAAO,GAAU,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;oBAClD,IAAI,MAAM,GAAU,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;oBAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBACjC,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBAEX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBACjC,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAE1B,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;wBACzC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBACjD,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBACjD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,CAAC,GAAC,EAAE,CAAC;wBACxD,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAE,KAAK,GAAC,OAAO,CAAC,CAAC,GAAC,EAAE,CAAC;wBACrE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAC,OAAO,CAAC,CAAC,GAAC,EAAE,CAAC;wBACpE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAE,CAAC,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAC,EAAE,CAAC;wBAC7E,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAC,EAAE,CAAC;wBACzD,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAC,EAAE,CAAC;oBAE1D,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,AACA,SADS;wBACT,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACrB,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;wBAC3D,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;wBAC3D,AACA,SADS;wBACT,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAC,OAAO,CAAC;wBAC3B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAC,OAAO,CAAC;wBACnC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAC,OAAO,CAAC;wBACnC,AACA,UADU;wBACV,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBAC/C,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBACzB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC1B,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpB,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC;wBAC3C,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC/C,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACrD,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBAEjD,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BAC1B,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;4BACzC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BACjD,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BAEjD,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEzB,CAAC;wBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACnB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEzB,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;4BACxB,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;wBACzB,CAAC;oBACF,CAAC;oBAED,KAAK,IAAI,CAAC,CAAC;gBACZ,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IAED;;OAEG;IACI,2CAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,IAAI,CAAQ,EAAE,CAAQ,CAAC;QACvB,IAAI,GAAiB,CAAC;QAGtB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,iDADiD;YACjD,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/E,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;YAED,AACA,6BAD6B;gBACzB,KAAK,GAAU,CAAC,CAAC;YAGrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,AACA,oBADoB;oBACpB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC9D,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,6BAAC;AAAD,CA9RA,AA8RC,EA9RoC,mBAAmB,EA8RvD;AAED,AAAgC,iBAAvB,sBAAsB,CAAC;;;;;;;;;;ACxShC,IAAO,uBAAuB,WAAW,oDAAoD,CAAC,CAAC;AAE/F,AAGA;;GADG;IACG,mBAAmB;IAAS,UAA5B,mBAAmB,UAAgC;IAkBxD;;;;;;;OAOG;IACH,SA1BK,mBAAmB,CA0BZ,MAAkB,EAAE,MAAmB,EAAE,SAAqB,EAAE,SAAoB,EAAE,MAAqB,EAAE,GAAkB;QAA/H,sBAAkB,GAAlB,WAAkB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,sBAAqB,GAArB,aAAqB;QAAE,mBAAkB,GAAlB,UAAkB;QAE1I,kBAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC;IAvBD,sBAAW,uCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAqBF,0BAAC;AAAD,CA9BA,AA8BC,EA9BiC,uBAAuB,EA8BxD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;AClC7B,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,mBAAmB;IAAS,UAA5B,mBAAmB,UAA4B;IAWpD;;;;;;;;;OASG;IACH,SArBK,mBAAmB,CAqBZ,KAAkB,EAAE,MAAmB,EAAE,KAAkB,EAAE,SAAoB,EAAE,SAAoB,EAAE,SAAoB,EAAE,KAAoB;QAAnJ,qBAAkB,GAAlB,WAAkB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,qBAAkB,GAAlB,WAAkB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,qBAAoB,GAApB,YAAoB;QAE9J,iBAAO,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAKD,sBAAW,sCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,uCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,sCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAiBD,sBAAW,sCAAK;QARhB;;;;;;;WAOG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAa;YAE7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,0CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,0CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,0CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAUD;;OAEG;IACI,6CAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;QAC/C,IAAI,CAAQ,EAAE,CAAQ,EAAE,GAAG,GAAU,CAAC,CAAC;QAEvC,IAAI,IAAW,EAAE,IAAW,EAAE,UAAU;QACxC,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,SAAS;QAC9C,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,SAAS;QAE9C,IAAI,SAAgB,CAAC;QACrB,IAAI,UAAiB,CAAC;QACtB,IAAI,WAAkB,CAAC;QAEvB,AACA,uBADuB;QACvB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;QACnB,EAAE,GAAG,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC;QACpB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;QAEnB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC;YAE1J,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC,GAAC,EAAE,CAAC,CAAC;YAExH,EAAE,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;gBACrF,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACnC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC;gBACxC,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC3C,QAAQ,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,CAAC,CAAC;YAET,AACA,qBADqB;YACrB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;YACjC,EAAE,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC;YAClC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;YAEjC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;gBAEvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,AACA,QADQ;oBACR,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBACjC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,OADO;oBACP,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBACjC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACpB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACZ,EAAE,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjD,EAAE,GAAG,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACZ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAEZ,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,GAAG,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAErD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;gBAEvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,AACA,MADM;oBACN,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACzB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,SADS;oBACT,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACZ,EAAE,GAAG,GAAG,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACvD,EAAE,GAAG,GAAG,GAAG,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjD,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACZ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAEZ,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,GAAG,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAErD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,SAAS,GAAG,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;gBAEtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,AACA,OADO;oBACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBAC/B,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,SAAS,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,QADQ;oBACR,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAC,EAAE,CAAC;oBAC/B,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,SAAS,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,IAAI,CAAC,CAAC;oBAEV,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACZ,EAAE,GAAG,GAAG,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACvD,EAAE,GAAG,GAAG,GAAG,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjD,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACZ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAEZ,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAC9C,IAAI,YAAY,GAAqC,MAAM,CAAC;YAE5D,IAAI,WAAW,GAAU,IAAI,CAAC,UAAU,GAAC,CAAC,GAAI,IAAI,CAAC,UAAU,GAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC;YACpF,IAAI,cAA4B,CAAC;YACjC,IAAI,YAA0B,CAAC;YAC/B,IAAI,SAAuB,CAAC;YAE5B,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;gBAC7C,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gBACzC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAClD,YAAY,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,CAAC;YAGT,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC/D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;gBAC5D,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE7B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC/D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE9B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC7D,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAED,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC1D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACxD,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE7B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC1D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE9B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBACxD,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAGD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC/D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;gBAC5D,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC/D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC7D,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAED,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;gBACzB,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAE9D,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAE5D,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAE9D,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAE5D,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAID,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAE9D,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAE5D,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC9B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAE9D,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAE5D,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAED,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBAC1D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,CAAC;gBACxD,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;gBAEV,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC1D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC9B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACxD,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAED,AACA,gCADgC;YAChC,YAAY,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC3D,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACI,wCAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,IAAI,CAAQ,EAAE,CAAQ,EAAE,KAAY,CAAC;QACrC,IAAI,GAAiB,CAAC;QAEtB,IAAI,UAAiB,EAAE,UAAiB,CAAC;QACzC,IAAI,WAAkB,EAAE,WAAkB,CAAC;QAC3C,IAAI,IAAW,EAAE,IAAW,CAAC;QAC7B,IAAI,IAAW,EAAE,IAAW,CAAC;QAC7B,IAAI,EAAS,EAAE,EAAS,CAAC;QACzB,IAAI,WAAkB,CAAC;QAEvB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAC,CAAC,CAAC;YAE1J,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,EAAE,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;gBACjF,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjB,UAAU,GAAG,WAAW,GAAG,CAAC,GAAC,CAAC,CAAC;gBAC/B,UAAU,GAAG,WAAW,GAAG,CAAC,GAAC,CAAC,CAAC;YAChC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;gBAC5B,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED,AAYA,yDAZyD;YACzD,+DAA+D;YAC/D,4DAA4D;YAC5D,2DAA2D;YAE3D,gDAAgD;YAChD,kCAAkC;YAClC,4BAA4B;YAC5B,4BAA4B;YAC5B,4BAA4B;YAC5B,2BAA2B;YAE3B,KAAK,GAAG,CAAC,CAAC;YAEV,AACA,eADe;YACf,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,GAAC,EAAE,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACvD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAErE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACrE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBACtE,CAAC;YACF,CAAC;YAED,AACA,eADe;YACf,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,GAAC,EAAE,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACtD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAErE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,GAAC,EAAE,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACtD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,GAAC,EAAE,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBACvD,CAAC;YACF,CAAC;YAED,AACA,eADe;YACf,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,IAAI,GAAG,CAAC,GAAC,WAAW,CAAC;YACrB,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,EAAE,GAAG,UAAU,GAAC,IAAI,CAAC,UAAU,CAAC;YAChC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,GAAC,EAAE,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACtD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAErE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBACrE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBACtE,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,0BAAC;AAAD,CAjpBA,AAipBC,EAjpBiC,mBAAmB,EAipBpD;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;ACxpB7B,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,uBAAuB;IAAS,UAAhC,uBAAuB,UAA4B;IA8IxD;;;;;;;;;;OAUG;IACH,SAzJK,uBAAuB,CAyJhB,SAAqB,EAAE,YAAwB,EAAE,MAAmB,EAAE,SAAqB,EAAE,SAAoB,EAAE,SAAwB,EAAE,YAA2B,EAAE,aAA4B,EAAE,GAAkB;QAA1N,yBAAqB,GAArB,cAAqB;QAAE,4BAAwB,GAAxB,iBAAwB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,yBAAwB,GAAxB,gBAAwB;QAAE,4BAA2B,GAA3B,mBAA2B;QAAE,6BAA4B,GAA5B,oBAA4B;QAAE,mBAAkB,GAAlB,UAAkB;QAErO,iBAAO,CAAC;QA9ID,iBAAY,GAAU,CAAC,CAAC;QAgJ/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IApJD,sBAAW,8CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,iDAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAwB,KAAY;YAEnC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,2CAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,8CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OALA;IAOM,8CAAY,GAAnB,UAAoB,KAAY;QAE/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAKD,sBAAW,8CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAqB,KAAY;YAGhC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAEzB,CAAC;;;OAPA;IASM,8CAAY,GAAnB,UAAoB,KAAY;QAE/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IAExB,CAAC;IAKD,sBAAW,8CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAa;YAEjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,iDAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAa;YAEpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,wCAAG;QAHd;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;aAED,UAAe,KAAa;YAE3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAmCD;;OAEG;IACI,iDAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,IAAW,CAAC;QAChB,IAAI,IAAW,CAAC;QAEhB,IAAI,MAAa,CAAC;QAClB,IAAI,eAAsB,CAAC;QAE3B,IAAI,EAAS,CAAC;QACd,IAAI,WAAkB,CAAC;QACvB,IAAI,WAAkB,CAAC;QACvB,IAAI,UAAU,GAAU,CAAC,CAAC;QAE1B,IAAI,KAAY,CAAC;QACjB,IAAI,KAAY,CAAC;QACjB,IAAI,UAAU,GAAU,CAAC,CAAC;QAC1B,IAAI,eAAe,GAAU,CAAC,CAAC;QAE/B,IAAI,EAAS,CAAC;QACd,IAAI,EAAS,CAAC;QAEd,AACA,0BAD0B;QAC1B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,AACA,4BAD4B;YACxB,oBAAoB,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,IAAI,CAAC,WAAW,CAAC;QAE7D,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,4DAD4D;YAC5D,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,2EAA2E;gBAC/I,UAAU,IAAI,IAAI,CAAC,WAAW,GAAC,IAAI,CAAC,WAAW,GAAC,CAAC,EAAE,qDAAqD;YACzG,CAAC,GADkD;YAEnD,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,YAAY,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,sCAAsC;gBACrF,UAAU,IAAI,IAAI,CAAC,WAAW,GAAC,CAAC,EAAE,gCAAgC;YACnE,CAAC,GADiC;YAElC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,YAAY,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC9C,UAAU,IAAI,IAAI,CAAC,WAAW,GAAC,CAAC,CAAC;YAClC,CAAC;YAED,AACA,kDADkD;YAClD,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACnC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAA;gBACvC,SAAS,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACjD,QAAQ,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBAElD,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,CAAC,CAAC;YAET,AACA,MADM;YACN,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,CAAC,GAAG,CAAC,GAAG,GAAC,IAAI,CAAC,OAAO,CAAC;gBAEtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxC,AACA,iBADiB;oBACjB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBAEX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC,CAAC;wBACR,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,oBADoB;oBACpB,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;oBACzC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC9C,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAE9C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wBAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC5C,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAChD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBAEjD,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC7B,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACX,AACA,eADe;wBACf,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC;wBAClC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;wBACtC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;wBAEtC,eAAe,IAAI,CAAC,CAAC;oBACtB,CAAC;gBACF,CAAC;gBAED,eAAe,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,AACA,SADS;YACT,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;gBAEnD,CAAC,GAAG,GAAG,GAAC,IAAI,CAAC,OAAO,CAAC;gBAErB,UAAU,GAAG,eAAe,GAAC,CAAC,CAAC;gBAE/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,EAAE,GAAG,CAAC,CAAC,CAAC;wBACR,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,oBADoB;oBACpB,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;oBACzC,CAAC,GAAG,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAClD,CAAC,GAAG,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAElD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wBAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC5C,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAChD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACjD,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC7B,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,IAAI,IAAI,CAAC,CAAC;oBAEV,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACX,AACA,eADe;wBACf,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC;wBAClC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;wBACtC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,CAAC;wBAEtC,eAAe,IAAI,CAAC,CAAC;oBACtB,CAAC;gBACF,CAAC;gBAED,eAAe,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,AAIA,qEAJqE;YACrE,mEAAmE;YACnE,qEAAqE;YACrE,mEAAmE;YACnE,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,WAAW,GAAG,EAAE,GAAC,IAAI,CAAC,OAAO,CAAC;YAC9B,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,EAAE,CAAC;YAEtD,AACA,kBADkB;YAClB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAQ,CAAC;gBACb,IAAI,CAAQ,CAAC;gBACb,IAAI,CAAQ,CAAC;gBACb,IAAI,CAAQ,CAAC;gBACb,IAAI,GAAU,EAAE,GAAU,EAAE,OAAc,EAAE,OAAc,CAAC;gBAE3D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,WAAW,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC1F,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,WAAW,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAE1D,UAAU,GAAG,eAAe,GAAC,CAAC,CAAC;oBAE/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;wBACxC,AACA,oBADoB;wBACpB,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;wBACzC,CAAC,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBACrC,CAAC,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBACrC,GAAG,GAAG,WAAW,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBAC5C,GAAG,GAAG,WAAW,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;wBAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;4BACf,EAAE,GAAG,CAAC,CAAC;4BACP,EAAE,GAAG,CAAC,GAAG,CAAC;4BACV,KAAK,GAAG,CAAC,CAAC,CAAC;4BACX,KAAK,GAAG,CAAC,CAAC;4BACV,OAAO,GAAG,WAAW,CAAC;4BACtB,OAAO,GAAG,GAAG,CAAC;wBAEf,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,EAAE,GAAG,CAAC,GAAG,CAAC;4BACV,EAAE,GAAG,CAAC,CAAC;4BACP,KAAK,GAAG,CAAC,CAAC;4BACV,KAAK,GAAG,CAAC,CAAC;4BACV,OAAO,GAAG,GAAG,CAAC;4BACd,OAAO,GAAG,WAAW,CAAC;wBACvB,CAAC;wBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;4BAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;4BACxC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BAChD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BAChD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;4BACpB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;4BAChC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;4BACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;4BACrB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;4BACxB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBACzB,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;4BAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;4BAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;4BACpB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;4BAC5B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;4BAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;4BACtB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;4BACxB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBACzB,CAAC;wBACD,IAAI,IAAI,CAAC,CAAC;wBAEV,AACA,iBADiB;wBACjB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACpB,CAAC,GAAG,eAAe,EAAE,UAAU;4BAC/B,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,WAAW;4BACpC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,yBAAyB;4BACvD,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,wBAAwB;4BAEtD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BAEpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACrB,CAAC;wBAED,eAAe,EAAE,CAAC;oBACnB,CAAC;gBACF,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAC9C,IAAI,YAAY,GAAqC,MAAM,CAAC;YAE5D,IAAI,WAAW,GAAU,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YACtF,IAAI,cAA4B,CAAC;YACjC,IAAI,YAA0B,CAAC;YAC/B,IAAI,SAAuB,CAAC;YAE5B,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;gBAC7C,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gBACzC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAClD,YAAY,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,CAAC;YAIT,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,WAAW,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1F,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC,GAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;gBAE5C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxC,AACA,oBADoB;oBACpB,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;oBACzC,CAAC,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBACrC,CAAC,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAErC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACX,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC/B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAE/B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEtB,IAAI,IAAI,CAAC,CAAC;wBAEV,AACA,gBADgB;wBAChB,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,GAAC,CAAC,CAAC,CAAC;wBAC/D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAC,CAAC,CAAC,CAAC;wBACvE,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAC,CAAC,CAAC,CAAC;wBAEvE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC/B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAE/B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEtB,IAAI,IAAI,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;wBAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACzB,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBACjC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAClC,CAAC;gBACF,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,YAAY,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC3D,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACI,4CAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,eAAsB,CAAC;QAC3B,IAAI,GAAiB,CAAC;QAEtB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,iDADiD;YACjD,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/E,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;YAED,AACA,4BAD4B;gBACxB,oBAAoB,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,IAAI,CAAC,WAAW,CAAC;YAE7D,AACA,6BAD6B;gBACzB,KAAK,GAAU,CAAC,CAAC;YAErB,AACA,MADM;YACN,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBAExC,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;oBACzC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAE,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC1C,CAAC,GAAG,GAAG,GAAG,GAAG,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAExC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB;oBAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAE3C,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,MAAM,EAAE,oBAAoB;oBAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC1C,CAAC;YACF,CAAC;YAED,AACA,SADS;YACT,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBAExC,eAAe,GAAG,CAAC,GAAC,oBAAoB,CAAC;oBACzC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBACxC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAExC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB;oBAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAE3C,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,MAAM,EAAE,oBAAoB;oBAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC1C,CAAC;YACF,CAAC;YAED,AACA,kBADkB;YAClB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACzB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC;wBACxC,AACA,oBADoB;wBACpB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,WAAW,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;wBAC9D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,WAAW,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC/D,CAAC;gBACF,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,8BAAC;AAAD,CA5oBA,AA4oBC,EA5oBqC,mBAAmB,EA4oBxD;AAED,AAAiC,iBAAxB,uBAAuB,CAAC;;;;;;;;;;ACnpBjC,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,oBAAoB;IAAS,UAA7B,oBAAoB,UAA4B;IASrD;;;;;;;;OAQG;IACH,SAlBK,oBAAoB,CAkBb,KAAkB,EAAE,MAAmB,EAAE,SAAoB,EAAE,SAAoB,EAAE,GAAkB,EAAE,WAA2B;QAApI,qBAAkB,GAAlB,WAAkB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,mBAAkB,GAAlB,UAAkB;QAAE,2BAA2B,GAA3B,mBAA2B;QAG/I,iBAAO,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAEjC,CAAC;IAKD,sBAAW,2CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAGhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QAExB,CAAC;;;OAVA;IAgBD,sBAAW,2CAAS;QAJpB;;;WAGG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAGhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QAExB,CAAC;;;OAVA;IAeD,sBAAW,qCAAG;QAHd;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;aAED,UAAe,KAAa;YAE3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAElB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,6CAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAa;YAEnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,uCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,wCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IASD;;OAEG;IACI,8CAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,CAAQ,EAAE,CAAQ,CAAC;QACvB,IAAI,UAAiB,CAAC;QACtB,IAAI,IAAW,CAAC;QAChB,IAAI,EAAE,GAAU,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpC,IAAI,WAAkB,CAAC;QAEvB,IAAI,IAAW,EAAE,IAAW,EAAE,UAAU;QAExC,IAAI,EAAS,CAAC;QACd,IAAI,EAAS,CAAC;QAEd,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,IAAI,WAAW,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,EAAE,CAAC;YAClD,IAAI,SAAuB,CAAC;YAC5B,IAAI,OAAqB,CAAC;YAC1B,IAAI,QAAsB,CAAC;YAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,WAAW,IAAI,CAAC,CAAC;YAElB,UAAU,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC;YAE/C,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,UAAU,IAAI,CAAC,CAAC;YAEjB,EAAE,CAAC,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,IAAI,UAAU,IAAI,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvF,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC;gBAExC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,EAAE,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjD,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC3C,QAAQ,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,CAAC;YAET,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBAE1C,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;oBAC1C,CAAC,GAAG,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,CAAC;oBAC1C,CAAC,GAAG,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC;oBAE3C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACxB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACxB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAElB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBAEvB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,oEADoE;oBACpE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;wBAEvB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;4BAC7C,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAChC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC7B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBAChC,CAAC;wBAED,IAAI,IAAI,CAAC,CAAC;oBAEX,CAAC;oBAED,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAEpD,IAAI,GAAG,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC;wBAClB,IAAI,IAAI,GAAU,IAAI,CAAC,YAAY,GAAE,CAAC,GAAG,CAAC,CAAC;wBAE3C,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,CAAC;wBAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAC,IAAI,CAAC;wBACnC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC;wBACvC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,CAAC;wBAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC;wBACvC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC;wBAElC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;4BAEvB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC;4BAC3C,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC;4BACvC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,CAAC,CAAC;4BAChC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC;4BACtC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,GAAC,IAAI,GAAG,CAAC,CAAC;4BAC3C,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,CAAC,CAAC;wBAEjC,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAC9C,IAAI,YAAY,GAAqC,MAAM,CAAC;YAE5D,IAAI,WAAW,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACpD,IAAI,cAA4B,CAAC;YACjC,IAAI,YAA0B,CAAC;YAC/B,IAAI,SAAuB,CAAC;YAE5B,IAAI,EAAE,GAAU,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;YAC9B,IAAI,EAAE,GAAU,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC;YAG/B,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;gBAC7C,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gBACzC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAClD,YAAY,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,CAAC;YAET,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC1C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAEhD,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC3B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAE9C,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAGD,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBAC1C,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBAC3C,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC7B,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAE/B,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC3B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE5B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,CAAC;YACX,CAAC;YAED,AACA,gCADgC;YAChC,YAAY,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC3D,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACI,yCAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,IAAI,GAAiB,CAAC;QACtB,IAAI,WAAkB,CAAC;QAEvB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,WAAW,GAAG,CAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,GAAC,CAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,CAAC;YAE9D,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrB,WAAW,IAAI,CAAC,CAAC;YAElB,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACzE,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC5B,CAAC;YAED,IAAI,KAAK,GAAU,CAAC,CAAC;YAErB,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAU,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;gBAErD,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAU,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;oBACrD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC1D,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAClE,KAAK,IAAI,CAAC,CAAC;oBAEX,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;wBACvB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;wBAC1D,GAAG,CAAC,KAAK,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC,GAAC,gBAAgB,CAAC,MAAM,CAAC;wBAChE,KAAK,IAAI,CAAC,CAAC;oBACZ,CAAC;gBACF,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAGjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,2BAAC;AAAD,CApXA,AAoXC,EApXkC,mBAAmB,EAoXrD;AAED,AAA8B,iBAArB,oBAAoB,CAAC;;;;;;;;;;AC9X9B,IAAO,uBAAuB,WAAW,oDAAoD,CAAC,CAAC;AAE/F,AAGA;;GADG;IACG,sBAAsB;IAAS,UAA/B,sBAAsB,UAAgC;IA2C3D;;;;;OAKG;IACH,SAjDK,sBAAsB,CAiDf,MAAmB,EAAE,KAAiB,EAAE,GAAkB;QAA1D,sBAAmB,GAAnB,YAAmB;QAAE,qBAAiB,GAAjB,UAAiB;QAAE,mBAAkB,GAAlB,UAAkB;QAErE,kBAAM,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IA9CD,sBAAW,0CAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,yCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAiB,KAAY;YAE5B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OALA;IAUD,sBAAW,gDAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAwB,KAAY;YAEnC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;;;OALA;IAiBF,6BAAC;AAAD,CArDA,AAqDC,EArDoC,uBAAuB,EAqD3D;AAED,AAAgC,iBAAvB,sBAAsB,CAAC;;;;;;;;;;AC9DhC,IAAO,SAAS,WAAc,mCAAmC,CAAC,CAAC;AACnE,IAAO,mBAAmB,WAAY,4CAA4C,CAAC,CAAC;AAGpF,IAAO,QAAQ,WAAe,kCAAkC,CAAC,CAAC;AAElE,IAAO,mBAAmB,WAAY,6CAA6C,CAAC,CAAC;AACrF,IAAO,eAAe,WAAa,yCAAyC,CAAC,CAAC;AAC9E,IAAO,IAAI,WAAgB,kCAAkC,CAAC,CAAC;AAE/D,IAAO,UAAU,WAAc,uCAAuC,CAAC,CAAC;AAExE,AAGA;;GADG;IACG,mBAAmB;IAAS,UAA5B,mBAAmB,UAAmB;IAiE3C;;;;OAIG;IACH,SAtEK,mBAAmB,CAsEZ,QAA4B,EAAE,YAA2C;QAAzE,wBAA4B,GAA5B,eAA4B;QAAE,4BAA2C,GAA3C,oCAA2C;QAEpF,iBAAO,CAAC;QAtEF,eAAU,GAAW,IAAI,CAAC;QAC1B,aAAQ,GAAW,IAAI,CAAC;QAMvB,uBAAkB,GAAW,IAAI,CAAC;QAiEzC,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACnC,CAAC;IA9DD,sBAAW,0CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACnC,CAAC;;;OAAA;IAKD,sBAAW,6CAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAY;YAEnC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;gBAC/B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC/B,CAAC;;;OAVA;IAYD,sBAAW,yCAAQ;aAAnB;YAEC,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,yCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;aAED,UAAoB,KAAkB;YAErC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC;gBAC3B,MAAM,CAAC;YAER,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,GAAG,GAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACvD,CAAC;;;OAZA;IA4BD;;;OAGG;IACI,6CAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,wCAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,oDAAsB,GAA7B;QAEC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,kDAAoB,GAA3B;QAEC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,6CAAe,GAAtB;QAEC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,gDAAkB,GAA1B;QAEC,AACA,kCADkC;QAClC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAC,CAAC;YACjD,IAAI,gBAAgB,GAAuB,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzE,gBAAgB,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC3C,gBAAgB,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAC5C,gBAAgB,CAAC,aAAa,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;QACtC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC;IAGD;;OAEG;IACK,4CAAc,GAAtB;QAEC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,uCAAS,GAAjB;QAEC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,CAAC;IAEM,wCAAU,GAAjB;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE3B,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEvB,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAGM,4CAAc,GAArB;QAEC,IAAI,IAAI,GAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAUF,0BAAC;AAAD,CApMA,AAoMC,EApMiC,UAAU,EAoM3C;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;;;;;;;AChN7B,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,qBAAqB;IAAS,UAA9B,qBAAqB,UAA4B;IAqEtD;;;;;;;OAOG;IACH,SA7EK,qBAAqB,CA6Ed,MAAkB,EAAE,SAAqB,EAAE,SAAqB,EAAE,GAAkB;QAApF,sBAAkB,GAAlB,WAAkB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,mBAAkB,GAAlB,UAAkB;QAE/F,iBAAO,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IA3ED,sBAAW,yCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IAYD,sBAAW,4CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,4CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,sCAAG;QAHd;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;aAED,UAAe,KAAa;YAE3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAElB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OAPA;IA2BD;;OAEG;IACI,+CAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,IAAI,CAAQ,CAAC;QACb,IAAI,CAAQ,CAAC;QACb,IAAI,IAAW,EAAE,IAAW,EAAE,UAAU;QAExC,IAAI,KAAY,CAAC;QACjB,IAAI,KAAY,CAAC;QACjB,IAAI,WAAkB,CAAC;QAGvB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAE1D,EAAE,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;gBACrF,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACnC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,CAAC;gBACrE,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAC3C,QAAQ,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,UAAiB,CAAC;YACtB,IAAI,EAAS,CAAC;YACd,IAAI,EAAS,CAAC;YAEd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBAEvC,UAAU,GAAG,IAAI,CAAC;gBAElB,IAAI,QAAQ,GAAU,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;gBAChD,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,UAAU,GAAU,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAExD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,IAAI,QAAQ,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;oBAClD,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IAAI,OAAO,GAAU,CAAC,GAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;oBAClD,IAAI,MAAM,GAAU,IAAI,CAAC,IAAI,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAC;oBAEzC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBAEf,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBACjC,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBAEX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBACjC,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;wBACxC,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC9C,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAC,OAAO,CAAC,GAAC,EAAE,CAAC;wBACrD,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAE,KAAK,GAAC,OAAO,CAAC,GAAC,EAAE,CAAC;wBAChE,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAC,OAAO,CAAC,GAAC,EAAE,CAAC;wBAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBAC9C,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACtB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEvB,CAAC;oBAAC,IAAI,CAAC,CAAC;wBAEP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,SAAS,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,OAAO,CAAC;wBAC1B,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,KAAK,GAAC,OAAO,CAAC;wBAChC,OAAO,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,KAAK,GAAC,OAAO,CAAC;wBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,GAAE,CAAC,CAAC,GAAC,MAAM,GAAG,CAAC,CAAC;wBAC9C,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACtB,QAAQ,CAAC,IAAI,GAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAEpB,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC;wBAC3C,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC/C,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACrD,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBAEjD,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BAE1B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;4BACxC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BAChD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BAEhD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAErB,CAAC;wBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BAEnB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAErB,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACP,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACrB,CAAC;oBACF,CAAC;oBAED,IAAI,IAAI,CAAC,CAAC;gBACX,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;YAE9C,IAAI,YAAY,GAAqC,MAAM,CAAC;YAE5D,IAAI,WAAW,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC;YACjE,IAAI,cAA4B,CAAC;YACjC,IAAI,YAA0B,CAAC;YAC/B,IAAI,SAAuB,CAAC;YAE5B,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;gBAC7C,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gBACzC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACpC,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,cAAc,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAClD,YAAY,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,KAAK,CAAS,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,GAAG,CAAC,CAAC;YAET,IAAI,GAAG,CAAC,CAAC;YAET,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBAEvC,IAAI,QAAQ,GAAU,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;gBAChD,IAAI,CAAC,GAAU,CAAC,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,UAAU,GAAU,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAExD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,IAAI,QAAQ,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,CAAC,GAAC,IAAI,CAAC,UAAU,CAAC;oBAClD,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IAAI,CAAC,GAAU,UAAU,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACf,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBAEX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpB,AACA,iBADiB;wBACjB,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;4BACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACvB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;4BAC/B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;4BAE/B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;4BAEtB,IAAI,IAAI,CAAC,CAAC;wBACX,CAAC;wBAED,AACA,gBADgB;wBAChB,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,CAAC;wBAC9D,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,CAAC;wBACtE,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAC,CAAC,CAAC,CAAC;wBAEtE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC/B,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAE/B,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEtB,IAAI,IAAI,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACzD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACzB,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBACjC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAClC,CAAC;gBACF,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,YAAY,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC3D,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED;;OAEG;IACI,0CAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAE5D,IAAI,CAAQ,EAAE,CAAQ,CAAC;QACvB,IAAI,WAAW,GAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,GAAiB,CAAC;QAGtB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAE1D,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,EAAE,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;gBACjF,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,WAAW,GAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,KAAK,GAAU,CAAC,CAAC;YACrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC9D,CAAC;YACF,CAAC;YAED,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,4BAAC;AAAD,CA5VA,AA4VC,EA5VmC,mBAAmB,EA4VtD;AAED,AAA+B,iBAAtB,qBAAqB,CAAC;;;;;;;;;;ACpW/B,IAAO,mBAAmB,WAAY,gDAAgD,CAAC,CAAC;AAExF,AAGA;;GADG;IACG,oBAAoB;IAAS,UAA7B,oBAAoB,UAA4B;IAiFrD;;;;;;;OAOG;IACH,SAzFK,oBAAoB,CAyFb,MAAkB,EAAE,UAAsB,EAAE,SAAqB,EAAE,SAAoB,EAAE,GAAkB;QAA3G,sBAAkB,GAAlB,WAAkB;QAAE,0BAAsB,GAAtB,eAAsB;QAAE,yBAAqB,GAArB,cAAqB;QAAE,yBAAoB,GAApB,aAAoB;QAAE,mBAAkB,GAAlB,UAAkB;QAEtH,iBAAO,CAAC;QApFD,iBAAY,GAAU,CAAC,CAAC;QAsF/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACjB,CAAC;IAtFD,sBAAW,wCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,4CAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAsB,KAAY;YAEjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IAWD,sBAAW,2CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAPA;IAYD,sBAAW,2CAAS;QAHpB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;aAED,UAAqB,KAAY;YAEhC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAPA;IAYD,sBAAW,qCAAG;QAHd;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;aAED,UAAe,KAAa;YAE3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7B,CAAC;;;OANA;IA4BD;;OAEG;IACI,8CAAe,GAAtB,UAAuB,MAAsB,EAAE,YAAmB;QAEjE,IAAI,OAAO,CAAe,QAAD,AAAS,CAAC;QACnC,IAAI,SAAuB,CAAC;QAC5B,IAAI,OAAqB,CAAC;QAC1B,IAAI,QAAsB,CAAC;QAE3B,IAAI,CAAQ,EAAE,CAAQ,CAAC;QACvB,IAAI,CAAQ,EAAE,CAAQ,EAAE,CAAQ,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,gBAAuB,EAAE,gBAAuB,CAAC;QACpH,IAAI,IAAW,CAAC;QAChB,IAAI,IAAW,CAAC;QAChB,IAAI,UAAU,GAAU,CAAC,CAAC;QAE1B,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,4DAD4D;YAC5D,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,qEAAqE;YACtI,UAAU,GAAG,IAAI,CAAC,UAAU,GAAC,IAAI,CAAC,UAAU,GAAC,CAAC,EAAE,qDAAqD;YAErG,AACA,kDADkD;YAClD,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACnC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACvC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;gBACzC,QAAQ,GAAG,gBAAgB,CAAC,cAAc,CAAC;YAC5C,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,IAAI,KAAK,CAAS,UAAU,CAAC,CAAA;gBACvC,SAAS,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBACjD,QAAQ,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;gBAElD,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,CAAC;YAGD,IAAI,GAAG,CAAC,CAAC;YACT,IAAI,GAAG,CAAC,CAAC;YAET,AACA,4BAD4B;gBACxB,qBAAqB,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC;YAC7D,IAAI,qBAAqB,GAAU,CAAC,GAAC,IAAI,CAAC,EAAE,GAAC,IAAI,CAAC,UAAU,CAAC;YAE7D,IAAI,KAAY,EAAE,KAAY,CAAC;YAC/B,IAAI,EAAS,EAAE,EAAS,EAAE,EAAS,EAAE,EAAS,CAAC;YAC/C,IAAI,UAAU,GAAU,CAAC,CAAC;YAC1B,IAAI,eAAe,GAAU,CAAC,CAAC;YAE/B,AACA,UADU;gBACN,CAAQ,EAAE,CAAQ,EAAE,CAAQ,EAAE,CAAQ,EAAE,MAAa,CAAC;YAE1D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBAEvC,UAAU,GAAG,eAAe,GAAC,CAAC,CAAC;gBAE/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBAEvC,AACA,oBADoB;oBACpB,gBAAgB,GAAG,CAAC,GAAC,qBAAqB,CAAC;oBAC3C,gBAAgB,GAAG,CAAC,GAAC,qBAAqB,CAAC;oBAE3C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACpC,EAAE,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACvC,EAAE,GAAG,MAAM,GAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBACvC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAEhC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAC,EAAE,CAAC;oBAClE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAC,EAAE,CAAC;oBAClE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAE,CAAC,GAAG,IAAI,CAAC,WAAW,GAAC,EAAE,CAAC;oBAEpD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBAEf,EAAE,GAAG,CAAC,EAAE,CAAC;wBACT,EAAE,GAAG,EAAE,CAAC;wBACR,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,MAAM,GAAE,EAAE,GAAC,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC1C,KAAK,GAAG,CAAC,CAAC,CAAC;wBACX,KAAK,GAAG,CAAC,CAAC;oBAEX,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,EAAE,GAAG,EAAE,CAAC;wBACR,EAAE,GAAG,EAAE,CAAC;wBACR,EAAE,GAAG,CAAC,MAAM,GAAE,EAAE,GAAC,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC1C,EAAE,GAAG,CAAC,CAAC;wBACP,KAAK,GAAG,CAAC,CAAC;wBACV,KAAK,GAAG,CAAC,CAAC;oBACX,CAAC;oBAED,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAChD,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBACjD,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACP,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC5B,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBAC7B,CAAC;oBAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAE,EAAE,GAAC,MAAM,GAAG,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvD,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAExB,IAAI,IAAI,CAAC,CAAC;oBAEV,AACA,iBADiB;oBACjB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpB,CAAC,GAAG,eAAe,EAAE,UAAU;wBAC/B,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,WAAW;wBACpC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,yBAAyB;wBACtD,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,wBAAwB;wBAErD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBAEpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrB,CAAC;oBAED,eAAe,EAAE,CAAC;gBACnB,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAExC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC5C,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,gBAAgB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IAED;;OAEG;IACI,yCAAU,GAAjB,UAAkB,MAAsB,EAAE,YAAmB;QAG5D,IAAI,CAAQ,EAAE,CAAQ,CAAC;QACvB,IAAI,GAAiB,CAAC;QAGtB,EAAE,CAAC,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAE3C,IAAI,gBAAgB,GAA6C,MAAM,CAAC;YAExE,AACA,iDADiD;YACjD,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/E,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;YAC5B,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,YAAY,GAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;YAED,AACA,6BAD6B;gBACzB,KAAK,GAAU,CAAC,CAAC;YAGrB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;oBACvC,AACA,oBADoB;oBACpB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC7D,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAE,CAAC,GAAC,IAAI,CAAC,UAAU,CAAE,GAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC9D,CAAC;YACF,CAAC;YAED,AACA,gCADgC;YAChC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,iBAAiB,CAAC,CAAC,CAAC;QAE/C,CAAC;IACF,CAAC;IACF,2BAAC;AAAD,CA5RA,AA4RC,EA5RkC,mBAAmB,EA4RrD;AAED,AAA8B,iBAArB,oBAAoB,CAAC;;;;;;;;;;ACvS9B,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAChE,IAAO,gBAAgB,WAAc,8CAA8C,CAAC,CAAC;AAGrF,IAAO,eAAe,WAAc,2CAA2C,CAAC,CAAC;AAEjF,IAAO,kBAAkB,WAAa,gDAAgD,CAAC,CAAC;AAMxF,AAMA;;;;;GADG;IACG,kBAAkB;IAAS,UAA3B,kBAAkB,UAAwB;IAW/C;;OAEG;IACH,SAdK,kBAAkB;QAgBtB,iBAAO,CAAC;QAXD,mBAAc,GAAY,IAAI,QAAQ,EAAE,CAAC;QAGzC,sBAAiB,GAAY,IAAI,QAAQ,EAAE,CAAC;QAC5C,eAAU,GAAY,IAAI,QAAQ,EAAE,CAAC;QAS5C,AACA,mCADmC;QACnC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAE5C,AACA,uBADuB;QACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,AACA,kCADkC;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,cAAc,GAC9B,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,GAC7C,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,GAC1C,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,GACxC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,GAAG,aAAa,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,eAAe,GAC/B,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,GAC9C,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAC3C,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,GACzC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC;QAExD,AACA,0BAD0B;QAC1B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,mCAAM,GAAb,UAAc,eAA0B;QAEvC,gBAAK,CAAC,MAAM,YAAC,eAAe,CAAC,CAAC;QAE9B,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,QAAQ,CAAmB,eAAe,CAAC,CAAC;QAEjD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,kCAAK,GAAZ,UAAa,eAA+B;QAE7C,kCAAkC;QAClC,+BAA+B;QAC/B,wDAAwD;QACxD,EAAE;QACF,kCAAkC;QAClC,EAAE;QACF,8EAA8E;QAC9E,uCAAuC;QACvC,EAAE;QACF,MAAM;QACN,EAAE;QACF,2FAA2F;QAEzF,IAAI,KAAK,GAAiC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAU,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,IAAI,KAAK,GAAwC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;YAC1E,KAAK,CAAC,SAAS,GACZ,KAAK,CAAC,mBAAmB,CAAC,GAC1B,KAAK,CAAC,gBAAgB,CAAC,GACvB,KAAK,CAAC,cAAc,CAAC,GACrB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,CAAC,GAAE,EAAE,GAAG,gCAAgC,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC/K,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;QAE9D,AAGE,8BAH4B;QAC9B,uDAAuD;QAErD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,8CAAiB,GAAxB;QAEC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAE7F,AACA,uBADuB;QACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B;QAClE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,GAAC,CAAC,CAAC;QAEjD,AACA,yBADyB;QACzB,IAAI,CAAC,aAAa,CAAC,SAAS,GACzB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,GACvC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GACpC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAClC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAExE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClC,CAAC;IAED;;;OAGG;IACK,uCAAU,GAAlB,UAAmB,eAAkC;QAEpD,MAAM;IACP,CAAC;IAED;;;;OAIG;IACK,4CAAe,GAAvB,UAAwB,IAAsB,EAAE,eAA+B;QAE9E,IAAI,cAAc,GAAY,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAE5E,OAAO,IAAI,EAAE,CAAC;YACb,AAGA,uEAHuE;YAEvE,+CAA+C;YAC/C,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAEvC,IAAI,KAAK,GAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAExD,KAAK,CAAC,SAAS,GACZ,KAAK,CAAC,mBAAmB,CAAC,GAC1B,KAAK,CAAC,gBAAgB,CAAC,GACvB,KAAK,CAAC,cAAc,CAAC,GACrB,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAEvD,KAAK,CAAC,cAAc,GACjB,KAAK,CAAC,yBAAyB,CAAC,GAChC,KAAK,CAAC,sBAAsB,CAAC,GAC7B,KAAK,CAAC,oBAAoB,CAAC,GAC3B,KAAK,CAAC,qBAAqB,CAAC,GAAG,aAAa,CAAC;YAEhD,AACA,4CAD4C;YAC5C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE7C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;QAEH,0BAA0B;QAC1B,kBAAkB;QAClB,8DAA8D;QAC9D,6CAA6C;QAC7C,EAAE;QACF,mBAAmB;QACnB,2CAA2C;QAC3C,EAAE;QACF,2DAA2D;QAC3D,EAAE;QACF,mDAAmD;QACnD,EAAE;QACF,YAAY;QACZ,EAAE;QACF,UAAU;QACV,oBAAoB;QACpB,EAAE;QACF,iFAAiF;QACjF,EAAE;QACF,oCAAoC;QACpC,sEAAsE;QACtE,EAAE;QACF,YAAY;QACZ,qFAAqF;QACrF,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,kEAAkE;QAClE,EAAE;QACF,gEAAgE;QAChE,EAAE;QACF,eAAe;QACf,YAAY;QACZ,4BAA4B;QAC5B,EAAE;QACF,6EAA6E;QAC7E,QAAQ;QACR,gCAAgC;QAChC,EAAE;QACF,mBAAmB;QACnB,MAAM;IACL,CAAC;IAEM,oCAAO,GAAd;QAEC,gBAAK,CAAC,OAAO,WAAE,CAAC;QAEhB,MAAM;IACP,CAAC;IAGM,oDAAuB,GAA9B;QAEC,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IACF,yBAAC;AAAD,CAjOA,AAiOC,EAjOgC,eAAe,EAiO/C;AAED,AAA4B,iBAAnB,kBAAkB,CAAC;;;;;;;;;;ACrP5B,IAAO,KAAK,WAAgB,4BAA4B,CAAC,CAAC;AAC1D,IAAO,SAAS,WAAe,gCAAgC,CAAC,CAAC;AAEjE,IAAO,mBAAmB,WAAa,4CAA4C,CAAC,CAAC;AACrF,IAAO,eAAe,WAAc,wCAAwC,CAAC,CAAC;AAkB9E,IAAO,aAAa,WAAc,yCAAyC,CAAC,CAAC;AAI7E,AAMA;;;;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAwB;IAyI5C;;OAEG;IACH,SA5IK,eAAe,CA4IR,eAA+B,EAAE,aAA6B,EAAE,OAA2B;QAA3F,+BAA+B,GAA/B,uBAA+B;QAAE,6BAA6B,GAA7B,qBAA6B;QAAE,uBAA2B,GAA3B,oBAA2B;QAEtG,iBAAO,CAAC;QArID,iBAAY,GAAU,CAAC,CAAC;QACxB,iBAAY,GAAU,CAAC,CAAC;QACxB,iBAAY,GAAU,CAAC,CAAC;QACxB,qBAAgB,GAAU,CAAC,CAAC;QAC5B,kBAAa,GAAW,KAAK,CAAC;QAE/B,wBAAmB,GAAW,IAAI,CAAC;QACnC,yBAAoB,GAAW,IAAI,CAAC;QAOnC,cAAS,GAAa,IAAI,SAAS,EAAE,CAAC;QAEtC,iBAAY,GAAa,IAAI,SAAS,EAAE,CAAC;QAGzC,cAAS,GAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,eAAU,GAAS,IAAI,KAAK,EAAE,CAAC;QAmHtC,AAGA,iFAHiF;QACjF,qFAAqF;QAErF,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAEhC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IArHD,sBAAW,qCAAQ;QAHnB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,8BAAC;QAHZ;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzB,CAAC;aAED,UAAa,KAAY;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;gBACnB,MAAM,CAAC;YAER,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OARA;IAaD,sBAAW,8BAAC;QAHZ;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzB,CAAC;aAED,UAAa,KAAY;YAExB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;gBACnB,MAAM,CAAC;YAER,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC;YAE7C,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAVA;IAeD,sBAAW,kCAAK;QAHhB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;aAED,UAAiB,KAAY;YAE5B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;gBACxB,MAAM,CAAC;YAER,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YAE7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAEjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAhBA;IAqBD,sBAAW,mCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAED,UAAkB,KAAY;YAE7B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBACzB,MAAM,CAAC;YAER,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAEjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5B,CAAC;;;OAhBA;IA+CD,sBAAW,0CAAa;QALxB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAyB,KAAY;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,CAAC;;;OAVA;IAiBD,sBAAW,0CAAa;QALxB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAyB,KAAY;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,CAAC;;;OAVA;IAiBD,sBAAW,0CAAa;QALxB;;;;WAIG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAyB,KAAY;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;gBAC9B,MAAM,CAAC;YAER,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,CAAC;;;OAVA;IAYD,sBAAW,yCAAY;aAAvB;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAa;YAEpC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;gBAC/B,MAAM,CAAC;YAER,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;;;OAVA;IAYD;;OAEG;IACI,iCAAO,GAAd;QAEC;;;;;WAKG;IACJ,CAAC;IAEM,gCAAM,GAAb,UAAc,eAA0B;QAEvC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,kCAAQ,GAAf,UAAgB,eAA+B,EAAE,MAA8B,EAAE,WAA4B,EAAE,eAA0B;QAAxF,sBAA8B,GAA9B,aAA8B;QAAE,2BAA4B,GAA5B,kBAA4B;QAAE,+BAA0B,GAA1B,mBAA0B;QAExI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC;YAC/B,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAEM,0CAAgB,GAAvB,UAAwB,eAA0B,EAAE,MAAuB,EAAE,WAAkB,EAAE,YAA6B,EAAE,OAAqB;IAGrJ,CAAC;IACM,6CAAmB,GAA1B,UAA2B,eAA0B;QAEpD,AACA,mBADmB;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,AACA,kBADkB;YACd,IAAI,GAAkB,eAAe,CAAC,UAAU,CAAC;QAErD,AACA,2DAD2D;QAC3D,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QAG7D,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,wCAAc,GAArB,UAAsB,eAAkC,EAAE,WAA4B;QAA5B,2BAA4B,GAA5B,kBAA4B;QAErF,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,+BAAK,GAAZ,UAAa,eAAkC;QAE9C,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED,sBAAW,8CAAiB;aAA5B;YAEC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;aAED,UAA6B,KAAY;YAExC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;gBAClC,MAAM,CAAC;YAER,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACjC,CAAC;;;OAVA;IAYD;;;OAGG;IACI,wCAAc,GAArB,UAAsB,SAAmB;QAExC,8FAA8F;IAC/F,CAAC;IAED;;;OAGG;IACI,0CAAgB,GAAvB,UAAwB,WAAuB;QAE9C,gGAAgG;IACjG,CAAC;IAED;;;OAGG;IACI,qCAAW,GAAlB,UAAmB,MAAa;IAGhC,CAAC;IAED;;;OAGG;IACI,8CAAoB,GAA3B,UAA4B,eAA+B;IAG3D,CAAC;IAED;;;;OAIG;IACK,0CAAgB,GAAxB,UAAyB,UAA4B;QAEpD,IAAI,QAAwB,EAAC,2DAA2D;QACxF,IAAI,MAAM,GAAW,UAAU,CAAC,YAAY,CAAC;QAC7C,IAAI,QAAQ,GAAY,MAAM,CAAC,aAAa,CAAC;QAE7C,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACd,AACA,gCADgC;YAChC,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YACjD,AACG,0DADuD;YACvD,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;YAE5B,AACA,+BAD+B;YAC/B,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChD,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE/E,AACA,oCADoC;YACpC,UAAU,CAAC,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjG,AACA,sCADsC;YACtC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;YACvC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QACnC,CAAC;IACF,CAAC;IAGD;;OAEG;IACK,6CAAmB,GAA3B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtB,MAAM,CAAC;QAER,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAEzE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAGD;;OAEG;IACK,8CAAoB,GAA5B;QAEC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACvB,MAAM,CAAC;QAER,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,yCAAe,GAAtB;QAEC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC5B,CAAC;IAGM,iDAAuB,GAA9B;QAEC,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACjC,CAAC;IACF,sBAAC;AAAD,CAzbA,AAybC,EAzb6B,eAAe,EAyb5C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;ACzXN;;;;ACtFI;;;;ACTvB,AAGA;;GADG;IACG,mBAAmB;IAAzB,SAAM,mBAAmB;IAyJzB,CAAC;IAvJO,oDAAsB,GAA7B,UAA8B,IAAgB;QAE7C,IAAI,KAAiB,CAAC;QACtB,IAAI,IAAgB,CAAC;QACrB,IAAI,IAAgB,CAAC;QAErB,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QAED,AACA,wBADwB;QACxB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjB,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC;QACF,CAAC;QAED,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,AACA,UADU;QACV,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3C,AACA,wCADwC;YACpC,MAAkB,CAAC;QACvB,IAAI,IAAgB,CAAC;QACrB,IAAI,CAAa,CAAC;QAElB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,CAAC,KAAK,CAAC;QACd,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,MAAM,CAAC,IAAI,CAAC;QAEb,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;YACtB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChC,CAAC,GAAG,IAAI,CAAC;gBACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,CAAC,GAAG,KAAK,CAAC;gBACV,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;YAED,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACX,MAAM,GAAG,CAAC,CAAC;YAAC,IAAI;gBAChB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAEf,IAAI,GAAG,CAAC,CAAC;QACV,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC;YACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAEnB,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAEM,mDAAqB,GAA5B,UAA6B,IAAgB;QAE5C,IAAI,KAAiB,CAAC;QACtB,IAAI,IAAgB,EAAE,IAAgB,CAAC;QAEvC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC;QACb,CAAC;QAED,AACA,wBADwB;QACxB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEjB,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACV,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC;QACF,CAAC;QAED,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,AACA,UADU;QACV,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE1C,AACA,wCADwC;YACpC,MAAkB,CAAC;QACvB,IAAI,IAAgB,CAAC;QACrB,IAAI,CAAa,CAAC;QAClB,IAAI,GAAG,GAAU,CAAC,CAAC;QAEnB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACT,MAAM,CAAC,KAAK,CAAC;QACd,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACV,MAAM,CAAC,IAAI,CAAC;QAEb,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAEvD,AAGA,+DAH+D;YAC/D,oDAAoD;YACpD,oCAAoC;gBAChC,GAAG,GAAU,IAAI,CAAC,aAAa,CAAC;YACpC,IAAI,GAAG,GAAU,KAAK,CAAC,aAAa,CAAC;YAErC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBAChB,IAAI,EAAE,GAAU,IAAI,CAAC,cAAc,CAAC;gBACpC,IAAI,EAAE,GAAU,KAAK,CAAC,cAAc,CAAC;gBAErC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACd,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;wBAC9B,GAAG,GAAG,CAAC,CAAC;oBAAC,IAAI;wBACb,GAAG,GAAG,CAAC,CAAC,CAAC;gBACX,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBACpB,GAAG,GAAG,CAAC,CAAC;gBACT,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACP,GAAG,GAAG,CAAC,CAAC,CAAC;gBACV,CAAC;YACF,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtB,GAAG,GAAG,CAAC,CAAC;YACT,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,GAAG,GAAG,CAAC,CAAC,CAAC;YACV,CAAC;YAED,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACb,CAAC,GAAG,IAAI,CAAC;gBACT,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,CAAC,GAAG,KAAK,CAAC;gBACV,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC;YAED,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,CAAC,CAAC;gBACX,IAAI,GAAG,CAAC,CAAC;YACV,CAAC;YAAC,IAAI,CAAC,CAAC;gBACP,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,IAAI,GAAG,CAAC,CAAC;YACV,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC;YACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAEnB,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IACF,0BAAC;AAAD,CAzJA,AAyJC,IAAA;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;ACjK7B,AAIA;;;GADG;IACG,aAAa;IAAnB,SAAM,aAAa;IAqBnB,CAAC;IAnBA;;;;;;;;OAQG;IACW,sBAAQ,GAAU,UAAU,CAAC;IAE3C;;;;;;OAMG;IACW,oBAAM,GAAU,QAAQ,CAAC;IACxC,oBAAC;AAAD,CArBA,AAqBC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;AC3BvB,AAGA;;GADG;IACG,WAAW;IAAjB,SAAM,WAAW;IA8BjB,CAAC;IA5BA;;;;;;OAMG;IACW,gBAAI,GAAU,MAAM,CAAC;IAEnC;;;;;;;OAOG;IACW,iBAAK,GAAU,OAAO,CAAC;IAErC;;;;;;;OAOG;IACW,oBAAQ,GAAU,UAAU,CAAC;IAC5C,kBAAC;AAAD,CA9BA,AA8BC,IAAA;AAED,AAAqB,iBAAZ,WAAW,CAAC;;;;ACnCrB,AAIA;;;GADG;IACG,iBAAiB;IAAvB,SAAM,iBAAiB;IA2BvB,CAAC;IAzBA;;;;OAIG;IACW,wBAAM,GAAU,QAAQ,CAAC;IAEvC;;;;OAIG;IACW,sBAAI,GAAU,MAAM,CAAC;IAEnC;;OAEG;IACW,sBAAI,GAAU,MAAM,CAAC;IAEnC;;;;OAIG;IACW,uBAAK,GAAU,OAAO,CAAC;IACtC,wBAAC;AAAD,CA3BA,AA2BC,IAAA;AAED,AAA2B,iBAAlB,iBAAiB,CAAC;;;;ACjC3B,AAMA;;;;;GADG;IACG,aAAa;IAAnB,SAAM,aAAa;IAWnB,CAAC;IATA;;OAEG;IACW,qBAAO,GAAU,SAAS,CAAC;IAEzC;;OAEG;IACW,mBAAK,GAAU,OAAO,CAAC;IACtC,oBAAC;AAAD,CAXA,AAWC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;ACnBvB,AAIA;;;GADG;IACG,eAAe;IAArB,SAAM,eAAe;QAEpB;;;WAGG;QACI,WAAM,GAAU,QAAQ,CAAC;QAEhC;;;WAGG;QACI,YAAO,GAAU,SAAS,CAAC;QAElC;;;WAGG;QACI,SAAI,GAAU,MAAM,CAAC;QAE5B;;;WAGG;QACI,UAAK,GAAU,OAAO,CAAC;IAC/B,CAAC;IAAD,sBAAC;AAAD,CAzBA,AAyBC,IAAA;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;AC/BzB,AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;GADG;IACG,UAAU;IA6Jf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,SApMK,UAAU,CAoMH,IAA+B,EAAE,IAAgB,EAAE,KAA+B,EAAE,IAAoB,EAAE,MAAsB,EAAE,SAAyB,EAAE,GAAe,EAAE,MAAkB,EAAE,KAAqB,EAAE,UAAqB,EAAE,WAAsB,EAAE,MAAiB,EAAE,OAAkB;QAA7S,oBAA+B,GAA/B,wBAA+B;QAAE,oBAAgB,GAAhB,SAAgB;QAAE,qBAA+B,GAA/B,gBAA+B;QAAE,oBAAoB,GAApB,YAAoB;QAAE,sBAAsB,GAAtB,cAAsB;QAAE,yBAAyB,GAAzB,iBAAyB;QAAE,mBAAe,GAAf,QAAe;QAAE,sBAAkB,GAAlB,WAAkB;QAAE,qBAAqB,GAArB,cAAqB;QAAE,0BAAqB,GAArB,cAAqB;QAAE,2BAAsB,GAAtB,eAAsB;QAAE,sBAAiB,GAAjB,UAAiB;QAAE,uBAAkB,GAAlB,WAAkB;QAjFzT;;;;WAIG;QACI,aAAQ,GAAyB,IAAI,KAAK,EAAU,CAAC;QA8E3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IACF,iBAAC;AAAD,CAnNA,AAmNC,IAAA;AAED,AAAoB,iBAAX,UAAU,CAAC;;;;AC/OpB,AAKA;;;;GADG;IACG,mBAAmB;IAAzB,SAAM,mBAAmB;IAiBzB,CAAC;IAfA;;;;;;OAMG;IACW,0BAAM,GAAU,QAAQ,CAAC;IAEvC;;;;OAIG;IACW,6BAAS,GAAU,WAAW,CAAC;IAC9C,0BAAC;AAAD,CAjBA,AAiBC,IAAA;AAED,AAA6B,iBAApB,mBAAmB,CAAC;;;;ACxB7B,AAMA;;;;;GADG;IACG,eAAe;IA0CpB;;;;;;;;;;;;;;;;;OAiBG;IACH,SA5DK,eAAe,CA4DR,CAAc,EAAE,KAAkB,EAAE,MAAmB,EAAE,MAAmB,EAAE,OAAoB,EAAE,OAAoB;QAAxH,iBAAc,GAAd,OAAc;QAAE,qBAAkB,GAAlB,WAAkB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,sBAAmB,GAAnB,YAAmB;QAAE,uBAAoB,GAApB,aAAoB;QAAE,uBAAoB,GAApB,aAAoB;IAGpI,CAAC;IACF,sBAAC;AAAD,CAhEA,AAgEC,IAAA;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;;;;;;;ACxEzB,IAAO,aAAa,WAAc,2CAA2C,CAAC,CAAC;AAG/E,AAGA;;GADG;IACG,kBAAkB;IAAS,UAA3B,kBAAkB,UAAsB;IAE7C,SAFK,kBAAkB;QAItB,iBAAO,CAAC;IACT,CAAC;IACF,yBAAC;AAAD,CANA,AAMC,EANgC,aAAa,EAM7C;AAED,AAA4B,iBAAnB,kBAAkB,CAAC;;;;ACV5B,IAAO,kBAAkB,WAAa,4CAA4C,CAAC,CAAC;AAOpF,AAGA;;GADG;IACG,aAAa;IAalB,SAbK,aAAa;QASV,mBAAc,GAAU,CAAC,CAAC;QAC3B,kBAAa,GAAU,CAAC,CAAC;QACzB,6BAAwB,GAAU,CAAC,CAAC;QAI1C,IAAI,CAAC,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACtD,CAAC;IAKD,sBAAW,iCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;aAED,UAAkB,KAAY;YAE7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAChD,CAAC;;;OANA;IAWD,sBAAW,qCAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;aAED,UAAsB,KAAoB;YAEzC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAChC,CAAC;;;OALA;IAUD,sBAAW,qCAAU;QAHrB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,sCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,iDAAsB;QAHjC;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC;QACtC,CAAC;;;OAAA;IAED;;OAEG;IACI,6BAAK,GAAZ;QAEC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAE,IAAI,CAAC,iBAAiB,GAAG,CAAE,IAAI,CAAC,QAAQ,GAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAE,CAAC;QAC1H,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,iCAAS,GAAhB,UAAiB,IAAa;QAE7B,IAAI,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAEpD,MAAM,CAAC,KAAK,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,6CAAqB,GAA5B,UAA6B,MAAc;QAE1C,wBAAwB;IACzB,CAAC;IAED;;;OAGG;IACI,mCAAW,GAAlB,UAAmB,MAAc;QAEhC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEjC,IAAI,IAAI,GAAkB,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,uCAAe,GAAtB,UAAuB,MAAc;QAEpC,wBAAwB;IACzB,CAAC;IAED;;;OAGG;IACI,uCAAe,GAAtB,UAAuB,MAAc;QAEpC,wBAAwB;IACzB,CAAC;IAED;;;OAGG;IACI,mCAAW,GAAlB,UAAmB,MAAc;QAEhC,wBAAwB;IACzB,CAAC;IACF,oBAAC;AAAD,CApJA,AAoJC,IAAA;AAED,AAAuB,iBAAd,aAAa,CAAC;;;;;;;;;;ACnKvB,IAAO,aAAa,WAAc,2CAA2C,CAAC,CAAC;AAO/E,AAGA;;GADG;IACG,eAAe;IAAS,UAAxB,eAAe,UAAsB;IAsD1C,SAtDK,eAAe;QAwDnB,iBAAO,CAAC;QAhDF,gBAAW,GAAU,CAAC,CAAC;QAEtB,0BAAqB,GAAU,CAAC,CAAC;QACjC,oBAAe,GAAU,CAAC,CAAC;QAC3B,oBAAe,GAAU,CAAC,CAAC;QA8ClC,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAa,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,KAAK,EAAoB,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAc,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAc,CAAC;IAC7C,CAAC;IA7CD,sBAAW,8CAAiB;QAH5B;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAChC,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,mCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAKD,sBAAW,wCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;;;OAAA;IAKD,sBAAW,mCAAM;QAHjB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;;;OAAA;IAYD;;;OAGG;IACI,+CAAqB,GAA5B,UAA6B,MAAc;QAE1C,IAAI,CAAC,kBAAkB,CAAE,IAAI,CAAC,qBAAqB,EAAE,CAAE,GAAsB,MAAM,CAAC;IACrF,CAAC;IAED;;;OAGG;IACI,yCAAe,GAAtB,UAAuB,MAAc;QAEpC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,eAAe,EAAE,CAAE,GAAgB,MAAM,CAAC;IACnE,CAAC;IAED;;;OAGG;IACI,yCAAe,GAAtB,UAAuB,MAAc;QAEpC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,eAAe,EAAE,CAAE,GAAgB,MAAM,CAAC;IACnE,CAAC;IAED;;;OAGG;IACI,qCAAW,GAAlB,UAAmB,MAAc;QAEhC,IAAI,CAAC,QAAQ,GAAY,MAAM,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,+BAAK,GAAZ;QAEC,gBAAK,CAAC,KAAK,WAAE,CAAC;QAEd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAE7C,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAEjE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAErD,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IACtD,CAAC;IACF,sBAAC;AAAD,CAzHA,AAyHC,EAzH6B,aAAa,EAyH1C;AAED,AAAyB,iBAAhB,eAAe,CAAC;;;;ACvDL;;;;;;;;;;AC/EpB,IAAO,QAAQ,WAAgB,+BAA+B,CAAC,CAAC;AAGhE,IAAO,aAAa,WAAc,2CAA2C,CAAC,CAAC;AAI/E,AASA;;;;;;;;GADG;IACG,gBAAgB;IAAS,UAAzB,gBAAgB,UAAsB;IAiC3C;;OAEG;IACH,SApCK,gBAAgB;QAsCpB,iBAAO,CAAC;QApCD,iBAAY,GAAY,IAAI,QAAQ,EAAE,CAAC;QACvC,kBAAa,GAAY,IAAI,QAAQ,EAAE,CAAC;QAEzC,qBAAgB,GAAU,CAAC,CAAC;IAkCnC,CAAC;IA7BD,sBAAW,yCAAW;QAHtB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;aAED,UAAuB,KAAc;YAEpC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC;;;OALA;IAUD,sBAAW,0CAAY;QAHvB;;WAEG;aACH;YAEC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;aAED,UAAwB,KAAc;YAErC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;;;OALA;IAeD;;;;OAIG;IACI,oCAAS,GAAhB,UAAiB,IAAa;QAE7B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IACF,uBAAC;AAAD,CAlDA,AAkDC,EAlD8B,aAAa,EAkD3C;AAED,AAA0B,iBAAjB,gBAAgB,CAAC;;;;;;;;;;ACnE1B,IAAO,aAAa,WAAc,2CAA2C,CAAC,CAAC;AAE/E,AAGA;;GADG;IACG,qBAAqB;IAAS,UAA9B,qBAAqB,UAAsB;IAEhD,SAFK,qBAAqB;QAIzB,iBAAO,CAAC;IACT,CAAC;IAED;;OAEG;IACI,yCAAS,GAAhB,UAAiB,IAAa;QAE7B,IAAI,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAEnG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAEpD,MAAM,CAAC,KAAK,CAAC;QACd,CAAC;QAED,MAAM,CAAC,gBAAK,CAAC,SAAS,YAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACF,4BAAC;AAAD,CAtBA,AAsBC,EAtBmC,aAAa,EAsBhD;AAED,AAA+B,iBAAtB,qBAAqB,CAAC;;;;AC9B/B,IAAO,UAAU,WAAc,iCAAiC,CAAC,CAAC;AAClE,IAAO,SAAS,WAAc,iCAAiC,CAAC,CAAC;AAEjE,IAAO,SAAS,WAAc,qCAAqC,CAAC,CAAC;AACrE,IAAO,aAAa,WAAa,wCAAwC,CAAC,CAAC;AAC3E,IAAO,YAAY,WAAc,uCAAuC,CAAC,CAAC;AAE1E,AAGA;;GADG;IACG,IAAI;IAAV,SAAM,IAAI;IA6TV,CAAC;IArTc,WAAM,GAApB,UAAqB,IAAQ;QAE5B,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;YAC9B,IAAI,GAAG,IAAI,IAAI,CAAC;QAEjB,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC;QAEb,MAAM,CAAU,IAAI,CAAC;IACtB,CAAC;IAEa,cAAS,GAAvB,UAAwB,IAAQ;QAE/B,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;YAC9B,IAAI,GAAG,IAAI,IAAI,CAAC;QAEjB,EAAE,CAAC,CAAC,IAAI,YAAY,SAAS,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC;QAEb,MAAM,CAAa,IAAI,CAAC;IACzB,CAAC;IAED,yCAAyC;IACzC,WAAW;IACX,6CAA6C;IAC7C,kCAAkC;IAClC,EAAE;IACF,8BAA8B;IAC9B,8BAA8B;IAC9B,EAAE;IACF,+BAA+B;IAC/B,WAAW;IAEI,UAAK,GAApB,UAAqB,GAAU;QAE9B,IAAI,MAAM,GAAkB,GAAG,CAAC,MAAM,CAAC;QACvC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAkB,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAChD,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEa,aAAQ,GAAtB,UAAuB,IAAQ;QAE9B,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,QAAiB,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAU,IAAI,CAAC,CAAC;QAElC,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;YAC9B,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAC,SAAS,CAAC,CAAC;YAE5C,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC;gBACjD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,QAAQ,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;gBAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;YAC9C,CAAC;YAED,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAE/B,EAAE,CAAC,CAAC,CAAW,IAAK,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEa,UAAK,GAAnB,UAAoB,IAAQ;QAE3B,IAAI,MAAM,GAAmB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjD,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC;IACf,CAAC;IAEa,aAAQ,GAAtB,UAAuB,IAAW;QAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;QAEb,IAAI,MAAM,GAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErC,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC;QAEf,IAAA,CAAC;YACA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC;QACf,CAAE;QAAA,KAAK,CAAC,CAAC,CAAoB,CAAC,CAA5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC;IACb,CAAC;IAEa,eAAU,GAAxB,UAAyB,IAAQ;QAEhC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;QAEb,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAChC,IAAA,CAAC;gBACA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,CAAE;YAAA,KAAK,CAAC,CAAC,CAAmB,CAAC,CAA3B,CAAC;gBACF,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;QAEb,EAAE,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC;YAChC,IAAI,GAAmB,IAAK,CAAC,gBAAgB,CAAC;QAE/C,EAAE,CAAC,CAAC,IAAI,YAAY,gBAAgB,CAAC,CAAC,CAAC;YACtC,IAAI,YAAY,GAAuC,IAAI,CAAC;YAC5D,IAAI,UAAU,GAAc,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/F,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC7B,MAAM,CAAC,UAAU,CAAC;QACnB,CAAC;QAYD,MAAM,IAAI,SAAS,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEa,kBAAa,GAA3B,UAA4B,IAAQ;QAEnC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;QAEb,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE5B,EAAE,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YAChC,IAAA,CAAC;gBACA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,CAAE;YAAA,KAAK,CAAC,CAAC,CAAmB,CAAC,CAA3B,CAAC;gBACF,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,YAAY,aAAa,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;QAEb,IAAA,CAAC;YACA,IAAI,GAAG,GAAc,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAE;QAAA,KAAK,CAAC,CAAC,CAAe,CAAC,CAAvB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,SAAS,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;IAzTc,cAAS,GAAU,wBAAwB,CAAC;IAE5C,gBAAW,GAAU,IAAI,MAAM,EAAE,CAAC;IAClC,aAAQ,GAAU,IAAI,MAAM,EAAE,CAAC;IAuT/C,WAAC;AAAD,CA7TA,AA6TC,IAAA;AAED,AAAc,iBAAL,IAAI,CAAC", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -165,7 +167,7 @@ "/**\n * This interface is used to define objects that can be used as parameters in the\n * away.base.Graphics methods, including fills, strokes, and paths. Use\n * the implementor classes of this interface to create and manage drawing property\n * data, and to reuse the same data for different instances. Then, use the methods of\n * the Graphics class to render the drawing objects.\n * \n * @see away.base.Graphics.drawGraphicsData()\n * @see away.base.Graphics.readGraphicsData()\n */\ninterface IGraphicsData\n{\n\n}\n\nexport = IGraphicsData;", "import UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * IMaterialOwner provides an interface for objects that can use materials.\n *\n * @interface away.base.IMaterialOwner\n */\ninterface IMaterialOwner extends IAsset\n{\n\t/**\n\t * The animation used by the material owner to assemble the vertex code.\n\t */\n\tanimator:IAnimator;\n\n\t/**\n\t * The material with which to render the object.\n\t */\n\tmaterial:MaterialBase;\n\n\t/**\n\t *\n\t */\n\tuvTransform:UVTransform;\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iAddRenderable(renderable:IRenderable):IRenderable;\n\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iRemoveRenderable(renderable:IRenderable):IRenderable;\n\n\t/**\n\t *\n\t * @param renderer\n\t * @private\n\t */\n\t_iCollectRenderable(renderer:IRenderer)\n}\n\nexport = IMaterialOwner;", "import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport IAnimationSet\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IRenderObject\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport IRenderablePool\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport LightPickerBase\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\n\n/**\n * IRenderObjectOwner provides an interface for objects that can use materials.\n *\n * @interface away.base.IRenderObjectOwner\n */\ninterface IRenderObjectOwner extends IAsset\n{\n\talphaThreshold:number;\n\n\tmipmap:boolean;\n\n\tsmooth:boolean;\n\n\tblendMode:string;\n\n\tlightPicker:LightPickerBase;\n\n\tanimationSet:IAnimationSet;\n\n\tiOwners:Array\n\n\t_iAddRenderObject(renderObject:IRenderObject):IRenderObject;\n\n\t_iRemoveRenderObject(renderObject:IRenderObject):IRenderObject;\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tgetRenderObject(renderablePool:IRenderablePool):IRenderObject;\n}\n\nexport = IRenderObjectOwner;", - "import UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * IRenderableOwner provides an interface for objects that can use materials.\n *\n * @interface away.base.IRenderableOwner\n */\ninterface IRenderableOwner extends IAsset\n{\n\t/**\n\t * The animation used by the material owner to assemble the vertex code.\n\t */\n\tanimator:IAnimator;\n\n\t/**\n\t *\n\t */\n\tuvTransform:UVTransform;\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iAddRenderable(renderable:IRenderable):IRenderable;\n\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iRemoveRenderable(renderable:IRenderable):IRenderable;\n\n\t/**\n\t *\n\t * @param renderer\n\t * @private\n\t */\n\t_iCollectRenderable(renderer:IRenderer)\n}\n\nexport = IRenderableOwner;", + "import UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\n\n\n/**\n * IRenderableOwner provides an interface for objects that can use materials.\n *\n * @interface away.base.IRenderableOwner\n */\ninterface IRenderableOwner extends IAsset\n{\n\t/**\n\t * The animation used by the material owner to assemble the vertex code.\n\t */\n\tanimator:IAnimator;\n\n\t/**\n\t *\n\t */\n\tuvTransform:UVTransform;\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iAddRenderable(renderable:IRenderable):IRenderable;\n\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\t_iRemoveRenderable(renderable:IRenderable):IRenderable;\n\n\t/**\n\t *\n\t * @param renderer\n\t * @private\n\t */\n\t_iCollectRenderable(rendererPool:IRendererPool)\n}\n\nexport = IRenderableOwner;", "import ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\n\n/**\n * ISubMeshClass is an interface for the constructable class definition ISubMesh that is used to\n * apply a material to a SubGeometry class\n *\n * @class away.base.ISubMeshClass\n */\ninterface ISubMeshClass\n{\n\t/**\n\t *\n\t */\n\tnew(subGeometry:SubGeometryBase, parentMesh:Mesh, material?:MaterialBase):ISubMesh;\n}\n\nexport = ISubMeshClass;", "import IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\n\n/**\n * ISubMesh is an interface for object SubMesh that is used to\n * apply a material to a SubGeometry class\n *\n * @class away.base.ISubMesh\n */\ninterface ISubMesh extends IRenderableOwner\n{\n\tsubGeometry:SubGeometryBase;\n\n\tparentMesh:Mesh;\n\n\tmaterial:MaterialBase;\n\n\t_iIndex:number;\n\n\t_iInvalidateRenderableGeometry();\n\n\t_iGetExplicitMaterial():MaterialBase;\n}\n\nexport = ISubMesh;", "/**\n * The InterpolationMethod class provides values for the\n * interpolationMethod parameter in the\n * Graphics.beginGradientFill() and\n * Graphics.lineGradientStyle() methods. This parameter\n * determines the RGB space to use when rendering the gradient.\n */\nclass InterpolationMethod\n{\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static LINEAR_RGB:string = \"linearRGB\";\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static RGB:string = \"rgb\";\n}\n\nexport = InterpolationMethod;", @@ -173,17 +175,17 @@ "import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightEvent\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport ShadowMapperBase\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\n\nclass LightBase extends DisplayObjectContainer\n{\n\tprivate _color:number = 0xffffff;\n\tprivate _colorR:number = 1;\n\tprivate _colorG:number = 1;\n\tprivate _colorB:number = 1;\n\n\tprivate _ambientColor:number = 0xffffff;\n\tprivate _ambient:number = 0;\n\tpublic _iAmbientR:number = 0;\n\tpublic _iAmbientG:number = 0;\n\tpublic _iAmbientB:number = 0;\n\n\tprivate _specular:number = 1;\n\tpublic _iSpecularR:number = 1;\n\tpublic _iSpecularG:number = 1;\n\tpublic _iSpecularB:number = 1;\n\n\tprivate _diffuse:number = 1;\n\tpublic _iDiffuseR:number = 1;\n\tpublic _iDiffuseG:number = 1;\n\tpublic _iDiffuseB:number = 1;\n\n\tprivate _castsShadows:boolean = false;\n\n\tprivate _shadowMapper:ShadowMapperBase;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tif (this._castsShadows == value)\n\t\t\treturn;\n\n\t\tthis._castsShadows = value;\n\n\t\tif (value) {\n\t\t\tif (this._shadowMapper == null)\n\t\t\t\tthis._shadowMapper = this.pCreateShadowMapper();\n\n\t\t\tthis._shadowMapper.light = this;\n\t\t} else {\n\t\t\tthis._shadowMapper.dispose();\n\t\t\tthis._shadowMapper = null;\n\t\t}\n\t\t//*/\n\t\tthis.dispatchEvent(new LightEvent(LightEvent.CASTS_SHADOW_CHANGE));\n\t}\n\n\tpublic pCreateShadowMapper():ShadowMapperBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get specular():number\n\t{\n\t\treturn this._specular;\n\t}\n\n\tpublic set specular(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._specular = value;\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get diffuse():number\n\t{\n\t\treturn this._diffuse;\n\t}\n\n\tpublic set diffuse(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._diffuse = value;\n\t\tthis.updateDiffuse();\n\t}\n\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tthis._color = value;\n\t\tthis._colorR = ((this._color >> 16) & 0xff)/0xff;\n\t\tthis._colorG = ((this._color >> 8) & 0xff)/0xff;\n\t\tthis._colorB = (this._color & 0xff)/0xff;\n\n\t\tthis.updateDiffuse();\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get ambient():number\n\t{\n\t\treturn this._ambient;\n\t}\n\n\tpublic set ambient(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tthis._ambient = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tpublic get ambientColor():number\n\t{\n\t\treturn this._ambientColor;\n\t}\n\n\tpublic set ambientColor(value:number)\n\t{\n\t\tthis._ambientColor = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tprivate updateAmbient()\n\t{\n\t\tthis._iAmbientR = ((this._ambientColor >> 16) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientG = ((this._ambientColor >> 8) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientB = (this._ambientColor & 0xff)/0xff*this._ambient;\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT;\n\t}\n\n\tprivate updateSpecular()\n\t{\n\t\tthis._iSpecularR = this._colorR*this._specular;\n\t\tthis._iSpecularG = this._colorG*this._specular;\n\t\tthis._iSpecularB = this._colorB*this._specular;\n\t}\n\n\tprivate updateDiffuse()\n\t{\n\t\tthis._iDiffuseR = this._colorR*this._diffuse;\n\t\tthis._iDiffuseG = this._colorG*this._diffuse;\n\t\tthis._iDiffuseB = this._colorB*this._diffuse;\n\t}\n\n\tpublic get shadowMapper():ShadowMapperBase\n\t{\n\t\treturn this._shadowMapper;\n\t}\n\n\tpublic set shadowMapper(value:ShadowMapperBase)\n\t{\n\t\tthis._shadowMapper = value;\n\t\tthis._shadowMapper.light = this;\n\t}\n}\n\nexport = LightBase;", "/**\n * The LineScaleMode class provides values for the scaleMode\n * parameter in the Graphics.lineStyle() method.\n */\nclass LineScaleMode\n{\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only vertically. For example, consider the following circles, drawn\n\t * with a one-pixel line, and each with the scaleMode parameter\n\t * set to LineScaleMode.VERTICAL. The circle on the left is\n\t * scaled only vertically, and the circle on the right is scaled both\n\t * vertically and horizontally.\n\t */\n\tpublic static HORIZONTAL:string = \"horizontal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line never scales.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line always scales\n\t * when the object is scaled(the default).\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only horizontally. For example, consider the following circles,\n\t * drawn with a one-pixel line, and each with the scaleMode\n\t * parameter set to LineScaleMode.HORIZONTAL. The circle on the\n\t * left is scaled only horizontally, and the circle on the right is scaled\n\t * both vertically and horizontally.\n\t */\n\tpublic static VERTICAL:string = \"vertical\";\n}\n\nexport = LineScaleMode;", "import DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport LineSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class LineSubGeometry\n */\nclass LineSubGeometry extends SubGeometryBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\tpublic static START_POSITION_DATA:string = \"startPositions\";\n\tpublic static END_POSITION_DATA:string = \"endPositions\";\n\tpublic static THICKNESS_DATA:string = \"thickness\";\n\tpublic static COLOR_DATA:string = \"colors\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static COLOR_FORMAT:string = \"float4\";\n\tpublic static THICKNESS_FORMAT:string = \"float1\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _boundingPositionDirty = true;\n\tprivate _thicknessDirty:boolean = true;\n\tprivate _colorsDirty:boolean = true;\n\n\tprivate _startPositions:Array;\n\tprivate _endPositions:Array;\n\tprivate _boundingPositions:Array\n\tprivate _thickness:Array;\n\tprivate _startColors:Array;\n\tprivate _endColors:Array;\n\n\tprivate _numSegments:number;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _thicknessUpdated:SubGeometryEvent;\n\tprivate _colorUpdated:SubGeometryEvent;\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthis._pOffset[LineSubGeometry.VERTEX_DATA] = 0;\n\n\t\tvar stride:number = 0;\n\t\tthis._pOffset[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tstride += 1;\n\n\t\tthis._pOffset[LineSubGeometry.COLOR_DATA] = stride;\n\t\tstride += 4;\n\n\t\tthis._pStride[LineSubGeometry.VERTEX_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.COLOR_DATA] = stride;\n\n\t\tvar len:number = this._pNumVertices*stride;\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(len);\n\t\telse if (this._pVertices.length != len)\n\t\t\tthis._pVertices.length = len;\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._startPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._endPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():Array\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\treturn this._thickness;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._startColors;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._endColors;\n\t}\n\n\t/**\n\t * The total amount of segments in the TriangleSubGeometry.\n\t */\n\tpublic get numSegments():number\n\t{\n\t\treturn this._numSegments;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tsuper(true);\n\n\t\tthis._pSubMeshClass = LineSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._boundingPositionDirty)\n\t\t\tthis._boundingPositions = this.startPositions.concat(this.endPositions);\n\n\t\treturn this._boundingPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\t\tvar indices:Array;\n\n\t\tthis._startPositions = startValues;\n\n\t\tif (this._startPositions == null)\n\t\t\tthis._startPositions = new Array();\n\n\t\tthis._endPositions = endValues;\n\n\t\tif (this._endPositions == null)\n\t\t\tthis._endPositions = new Array();\n\n\t\tthis._boundingPositionDirty = true;\n\n\t\tthis._numSegments = this._startPositions.length/3;\n\n\t\tthis._pNumVertices = this._numSegments*4;\n\n\t\tvar lenV:number = this._pNumVertices*this.getStride(LineSubGeometry.VERTEX_DATA);\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(lenV);\n\t\telse if (this._pVertices.length != lenV)\n\t\t\tthis._pVertices.length = lenV;\n\n\t\ti = 0;\n\t\tj = 0;\n\t\tindex = this.getOffset(LineSubGeometry.START_POSITION_DATA);\n\t\tstride = this.getStride(LineSubGeometry.START_POSITION_DATA);\n\t\tpositions = this._pVertices;\n\t\tindices = new Array();\n\n\t\twhile (i < startValues.length) {\n\t\t\tvalues = (index/stride & 1)? endValues : startValues;\n\t\t\tpositions[index] = values[i];\n\t\t\tpositions[index + 1] = values[i + 1];\n\t\t\tpositions[index + 2] = values[i + 2];\n\n\t\t\tvalues = (index/stride & 1)? startValues : endValues;\n\t\t\tpositions[index + 3] = values[i];\n\t\t\tpositions[index + 4] = values[i + 1];\n\t\t\tpositions[index + 5] = values[i + 2];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tvar o:number = index/stride - 3;\n\t\t\t\tindices.push(o, o + 1, o + 2, o + 3, o + 2, o + 1);\n\t\t\t\tj = 0;\n\t\t\t\ti += 3;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.updateIndices(indices);\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the thickness.\n\t */\n\tpublic updateThickness(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar thickness:Array;\n\n\t\tthis._thickness = values;\n\n\t\tif (values != null) {\n\t\t\ti = 0;\n\t\t\tj = 0;\n\t\t\toffset = this.getOffset(LineSubGeometry.THICKNESS_DATA);\n\t\t\tstride = this.getStride(LineSubGeometry.THICKNESS_DATA);\n\t\t\tthickness = this._pVertices;\n\n\t\t\tindex = offset\n\t\t\twhile (i < values.length) {\n\t\t\t\tthickness[index] = (Math.floor(0.5*(index - offset)/stride + 0.5) & 1)? -values[i] : values[i];\n\n\t\t\t\tif (++j == 4) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyThicknessUpdate();\n\n\t\tthis._thicknessDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateColors(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar colors:Array;\n\n\t\tthis._startColors = startValues;\n\n\t\tthis._endColors = endValues;\n\n\t\t//default to white\n\t\tif (this._startColors == null) {\n\t\t\tthis._startColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._startColors.length)\n\t\t\t\tthis._startColors[i++] = 1;\n\t\t}\n\n\t\tif (this._endColors == null) {\n\t\t\tthis._endColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._endColors.length)\n\t\t\t\tthis._endColors[i++] = 1;\n\t\t}\n\n\t\ti = 0;\n\t\tj = 0;\n\t\toffset = this.getOffset(LineSubGeometry.COLOR_DATA);\n\t\tstride = this.getStride(LineSubGeometry.COLOR_DATA);\n\t\tcolors = this._pVertices;\n\n\t\tindex = offset;\n\n\t\twhile (i < this._startColors.length) {\n\t\t\tvalues = ((index - offset)/stride & 1)? this._endColors : this._startColors;\n\t\t\tcolors[index] = values[i];\n\t\t\tcolors[index + 1] = values[i + 1];\n\t\t\tcolors[index + 2] = values[i + 2];\n\t\t\tcolors[index + 3] = values[i + 3];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tj = 0;\n\t\t\t\ti += 4;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyColorsUpdate();\n\n\t\tthis._colorsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._startPositions = null;\n\t\tthis._endPositions = null;\n\t\tthis._thickness = null;\n\t\tthis._startColors = null;\n\t\tthis._endColors = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():LineSubGeometry\n\t{\n\t\tvar clone:LineSubGeometry = new LineSubGeometry();\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\t\tclone.updateThickness(this._thickness.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyThicknessUpdate();\n\t\tthis.notifyColorsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyThicknessUpdate()\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\treturn;\n\n\t\tthis._thicknessDirty = true;\n\n\t\tif (!this._thicknessUpdated)\n\t\t\tthis._thicknessUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.THICKNESS_DATA);\n\n\t\tthis.dispatchEvent(this._thicknessUpdated);\n\t}\n\n\tprivate notifyColorsUpdate()\n\t{\n\t\tif (this._colorsDirty)\n\t\t\treturn;\n\n\t\tthis._colorsDirty = true;\n\n\t\tif (!this._colorUpdated)\n\t\t\tthis._colorUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.COLOR_DATA);\n\n\t\tthis.dispatchEvent(this._colorUpdated);\n\t}\n}\n\nexport = LineSubGeometry;", - "import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.LineSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.LineSubMesh\n */\nclass LineSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:LineSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SUB_MESH;\n\t}\n\n\t/**\n\t * The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t */\n\tpublic get subGeometry():LineSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new LineSubMesh object\n\t * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t * @param parentMesh The Mesh object to which this LineSubMesh belongs.\n\t * @param material An optional material used to render this LineSubMesh.\n\t */\n\tconstructor(subGeometry:LineSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyLineSubMesh(this);\n\t}\n}\n\nexport = LineSubMesh;", + "import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.LineSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.LineSubMesh\n */\nclass LineSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:LineSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SUB_MESH;\n\t}\n\n\t/**\n\t * The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t */\n\tpublic get subGeometry():LineSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new LineSubMesh object\n\t * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t * @param parentMesh The Mesh object to which this LineSubMesh belongs.\n\t * @param material An optional material used to render this LineSubMesh.\n\t */\n\tconstructor(subGeometry:LineSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyLineSubMesh(this);\n\t}\n}\n\nexport = LineSubMesh;", "import EventDispatcher\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport ByteArray\t\t\t\t= require(\"awayjs-core/lib/utils/ByteArray\");\n\nimport Loader\t\t\t\t\t= require(\"awayjs-display/lib/containers/Loader\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The LoaderInfo class provides information about a loaded SWF file or a\n * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for\n * any display object. The information provided includes load progress, the\n * URLs of the loader and loaded content, the number of bytes total for the\n * media, and the nominal height and width of the media.\n *\n *

You can access LoaderInfo objects in two ways:

\n *\n *
    \n *
  • The contentLoaderInfo property of a flash.display.Loader\n * object - The contentLoaderInfo property is always available\n * for any Loader object. For a Loader object that has not called the\n * load() or loadBytes() method, or that has not\n * sufficiently loaded, attempting to access many of the properties of the\n * contentLoaderInfo property throws an error.
  • \n *
  • The loaderInfo property of a display object.
  • \n *
\n *\n *

The contentLoaderInfo property of a Loader object provides\n * information about the content that the Loader object is loading, whereas\n * the loaderInfo property of a DisplayObject provides\n * information about the root SWF file for that display object.

\n *\n *

When you use a Loader object to load a display object(such as a SWF\n * file or a bitmap), the loaderInfo property of the display\n * object is the same as the contentLoaderInfo property of the\n * Loader object(DisplayObject.loaderInfo =\n * Loader.contentLoaderInfo). Because the instance of the main class of\n * the SWF file has no Loader object, the loaderInfo property is\n * the only way to access the LoaderInfo for the instance of the main class of\n * the SWF file.

\n *\n *

The following diagram shows the different uses of the LoaderInfo\n * object - for the instance of the main class of the SWF file, for the\n * contentLoaderInfo property of a Loader object, and for the\n * loaderInfo property of a loaded object:

\n *\n *

When a loading operation is not complete, some properties of the\n * contentLoaderInfo property of a Loader object are not\n * available. You can obtain some properties, such as\n * bytesLoaded, bytesTotal, url,\n * loaderURL, and applicationDomain. When the\n * loaderInfo object dispatches the init event, you\n * can access all properties of the loaderInfo object and the\n * loaded image or SWF file.

\n *\n *

Note: All properties of LoaderInfo objects are read-only.

\n *\n *

The EventDispatcher.dispatchEvent() method is not\n * applicable to LoaderInfo objects. If you call dispatchEvent()\n * on a LoaderInfo object, an IllegalOperationError exception is thrown.

\n * \n * @event complete Dispatched when data has loaded successfully. In other\n * words, it is dispatched when all the content has been\n * downloaded and the loading has finished. The\n * complete event is always dispatched after\n * the init event. The init event\n * is dispatched when the object is ready to access, though\n * the content may still be downloading.\n * @event httpStatus Dispatched when a network request is made over HTTP and\n * an HTTP status code can be detected.\n * @event init Dispatched when the properties and methods of a loaded\n * SWF file are accessible and ready for use. The content,\n * however, can still be downloading. A LoaderInfo object\n * dispatches the init event when the following\n * conditions exist:\n *
    \n *
  • All properties and methods associated with the\n * loaded object and those associated with the LoaderInfo\n * object are accessible.
  • \n *
  • The constructors for all child objects have\n * completed.
  • \n *
  • All ActionScript code in the first frame of the\n * loaded SWF's main timeline has been executed.
  • \n *
\n *\n *

For example, an Event.INIT is dispatched\n * when the first frame of a movie or animation is loaded.\n * The movie is then accessible and can be added to the\n * display list. The complete movie, however, can take\n * longer to download. The Event.COMPLETE is\n * only dispatched once the full movie is loaded.

\n *\n *

The init event always precedes the\n * complete event.

\n * @event ioError Dispatched when an input or output error occurs that\n * causes a load operation to fail.\n * @event open Dispatched when a load operation starts.\n * @event progress Dispatched when data is received as the download\n * operation progresses.\n * @event unload Dispatched by a LoaderInfo object whenever a loaded\n * object is removed by using the unload()\n * method of the Loader object, or when a second load is\n * performed by the same Loader object and the original\n * content is removed prior to the load beginning.\n */\nclass LoaderInfo extends EventDispatcher\n{\n\tprivate _bytes:ByteArray;\n\tprivate _bytesLoaded:number;\n\tprivate _bytesTotal:number;\n\tprivate _content:DisplayObject;\n\tprivate _contentType:string;\n\tprivate _loader:Loader;\n\tprivate _url:string;\n\t/**\n\t * The bytes associated with a LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get bytes():ByteArray\n\t{\n\t\treturn this._bytes;\n\t}\n\n\t/**\n\t * The number of bytes that are loaded for the media. When this number equals\n\t * the value of bytesTotal, all of the bytes are loaded.\n\t */\n\tpublic get bytesLoaded():number /*int*/\n\t{\n\t\treturn this._bytesLoaded;\n\t}\n\n\t/**\n\t * The number of compressed bytes in the entire media file.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, bytesTotal\n\t * is 0. After the first progress event from the Loader object,\n\t * bytesTotal reflects the actual number of bytes to be\n\t * downloaded.

\n\t */\n\tpublic get bytesTotal():number /*int*/\n\t{\n\t\treturn this._bytesTotal;\n\t}\n\n\t/**\n\t * The loaded object associated with this LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * The MIME type of the loaded file. The value is null if not\n\t * enough of the file has loaded in order to determine the type. The\n\t * following list gives the possible values:\n\t *
    \n\t *
  • \"application/x-shockwave-flash\"
  • \n\t *
  • \"image/jpeg\"
  • \n\t *
  • \"image/gif\"
  • \n\t *
  • \"image/png\"
  • \n\t *
\n\t */\n\tpublic get contentType():string\n\t{\n\t\treturn this._contentType;\n\t}\n\n\t/**\n\t * The Loader object associated with this LoaderInfo object. If this\n\t * LoaderInfo object is the loaderInfo property of the instance\n\t * of the main class of the SWF file, no Loader object is associated.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the Loader object because of security\n\t * restrictions. This can occur, for instance, when a\n\t * loaded SWF file attempts to access its\n\t * loaderInfo.loader property and it is\n\t * not granted security permission to access the\n\t * loading SWF file.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get loader():Loader\n\t{\n\t\treturn this._loader;\n\t}\n\n\t/**\n\t * The URL of the media being loaded.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, the value of the\n\t * url property might reflect only the initial URL specified in\n\t * the call to the load() method of the Loader object. After the\n\t * first progress event, the url property reflects\n\t * the media's final URL, after any redirects and relative URLs are\n\t * resolved.

\n\t *\n\t *

In some cases, the value of the url property is truncated;\n\t * see the isURLInaccessible property for details.

\n\t */\n\tpublic get url():string\n\t{\n\t\treturn this._url;\n\t}\n}\n\nexport = LoaderInfo;", "class OrientationMode\n{\n\t/**\n\t *\n\t */\n\tpublic static DEFAULT:string = \"default\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_PLANE:string = \"cameraPlane\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_POSITION:string = \"cameraPosition\";\n}\n\nexport = OrientationMode;", "/**\n * The PixelSnapping class is an enumeration of constant values for setting\n * the pixel snapping options by using the pixelSnapping property\n * of a Bitmap object.\n */\nclass PixelSnapping\n{\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is always snapped to the\n\t * nearest pixel, independent of any transformation.\n\t */\n\tpublic static ALWAYS:string = \"always\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is snapped to the nearest\n\t * pixel if it is drawn with no rotation or skew and it is drawn at a scale\n\t * factor of 99.9% to 100.1%. If these conditions are satisfied, the image is\n\t * drawn at 100% scale, snapped to the nearest pixel. Internally, this\n\t * setting allows the image to be drawn as fast as possible by using the\n\t * vector renderer.\n\t */\n\tpublic static AUTO:string = \"auto\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that no pixel snapping occurs.\n\t */\n\tpublic static NEVER:string = \"never\";\n}\n\nexport = PixelSnapping;", "/**\n * The SpreadMethod class provides values for the spreadMethod\n * parameter in the beginGradientFill() and\n * lineGradientStyle() methods of the Graphics class.\n *\n *

The following example shows the same gradient fill using various spread\n * methods:

\n */\nclass SpreadMethod\n{\n\t/**\n\t * Specifies that the gradient use the pad spread method.\n\t */\n\tpublic static PAD:string = \"pad\";\n\n\t/**\n\t * Specifies that the gradient use the reflect spread method.\n\t */\n\tpublic static REFLECT:string = \"reflect\";\n\n\t/**\n\t * Specifies that the gradient use the repeat spread method.\n\t */\n\tpublic static REPEAT:string = \"repeat\";\n}\n\nexport = SpreadMethod;", "import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMeshClass\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass SubGeometryBase extends NamedAssetBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\n\tpublic _pStrideOffsetDirty:boolean = true;\n\n\tpublic _pIndices:Array /*uint*/;\n\tpublic _pVertices:Array;\n\n\tprivate _numIndices:number;\n\tprivate _numTriangles:number;\n\tpublic _pNumVertices:number;\n\n\tpublic _pConcatenateArrays:boolean = true;\n\n\tprivate _indicesUpdated:SubGeometryEvent;\n\n\tpublic _pStride:Object = new Object();\n\tpublic _pOffset:Object = new Object();\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _pSubMeshClass:ISubMeshClass;\n\n\tpublic get subMeshClass():ISubMeshClass\n\t{\n\t\treturn this._pSubMeshClass;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get concatenateArrays():boolean\n\t{\n\t\treturn this._pConcatenateArrays;\n\t}\n\n\tpublic set concatenateArrays(value:boolean)\n\t{\n\t\tif (this._pConcatenateArrays == value)\n\t\t\treturn;\n\n\t\tthis._pConcatenateArrays = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (value)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * The raw index data that define the faces.\n\t */\n\tpublic get indices():Array\n\t{\n\t\treturn this._pIndices;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tthis.updateVertices();\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t * The total amount of triangles in the TriangleSubGeometry.\n\t */\n\tpublic get numTriangles():number\n\t{\n\t\treturn this._numTriangles;\n\t}\n\n\tpublic get numVertices():number\n\t{\n\t\treturn this._pNumVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper();\n\n\t\tthis._pConcatenateArrays = concatenatedArrays;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getStride(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pStride[dataType];\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getOffset(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pOffset[dataType];\n\t}\n\n\tpublic updateVertices()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pIndices = null;\n\t\tthis._pVertices = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tthis._pIndices = indices;\n\t\tthis._numIndices = indices.length;\n\n\t\tthis._numTriangles = this._numIndices/3;\n\n\t\tthis.notifyIndicesUpdate();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():SubGeometryBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tprivate notifyIndicesUpdate()\n\t{\n\t\tif (!this._indicesUpdated)\n\t\t\tthis._indicesUpdated = new SubGeometryEvent(SubGeometryEvent.INDICES_UPDATED);\n\n\t\tthis.dispatchEvent(this._indicesUpdated);\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = SubGeometryBase;", - "import AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.SubMeshBase\n */\nclass SubMeshBase extends NamedAssetBase\n{\n\tpublic _pParentMesh:Mesh;\n\tpublic _uvTransform:UVTransform;\n\n\tpublic _iIndex:number = 0;\n\n\tpublic _material:MaterialBase;\n\tprivate _renderables:Array = new Array();\n\n\t//TODO test shader picking\n//\t\tpublic get shaderPickingDetails():boolean\n//\t\t{\n//\n//\t\t\treturn this.sourceEntity.shaderPickingDetails;\n//\t\t}\n\n\t/**\n\t * The animator object that provides the state for the TriangleSubMesh's animation.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._pParentMesh.animator;\n\t}\n\n\t/**\n\t * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material || this._pParentMesh.material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (this.material)\n\t\t\tthis.material.iRemoveOwner(this);\n\n\t\tthis._material = value;\n\n\t\tif (this.material)\n\t\t\tthis.material.iAddOwner(this);\n\t}\n\n\t/**\n\t * The scene transform object that transforms from model to world space.\n\t */\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\treturn this._pParentMesh.sceneTransform;\n\t}\n\n\t/**\n\t * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object).\n\t */\n\tpublic get parentMesh():Mesh\n\t{\n\t\treturn this._pParentMesh;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform || this._pParentMesh.uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Creates a new SubMeshBase object\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param camera\n\t * @returns {away.geom.Matrix3D}\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\treturn this._pParentMesh.getRenderSceneTransform(camera);\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\tpublic _iInvalidateRenderableGeometry()\n\t{\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].invalidateGeometry();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iGetExplicitMaterial():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n}\n\nexport = SubMeshBase;", + "import AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Mesh\t\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.SubMeshBase\n */\nclass SubMeshBase extends NamedAssetBase\n{\n\tpublic _pParentMesh:Mesh;\n\tpublic _uvTransform:UVTransform;\n\n\tpublic _iIndex:number = 0;\n\n\tpublic _material:MaterialBase;\n\tprivate _renderables:Array = new Array();\n\n\t//TODO test shader picking\n//\t\tpublic get shaderPickingDetails():boolean\n//\t\t{\n//\n//\t\t\treturn this.sourceEntity.shaderPickingDetails;\n//\t\t}\n\n\t/**\n\t * The animator object that provides the state for the TriangleSubMesh's animation.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._pParentMesh.animator;\n\t}\n\n\t/**\n\t * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material || this._pParentMesh.material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (this.material)\n\t\t\tthis.material.iRemoveOwner(this);\n\n\t\tthis._material = value;\n\n\t\tif (this.material)\n\t\t\tthis.material.iAddOwner(this);\n\t}\n\n\t/**\n\t * The scene transform object that transforms from model to world space.\n\t */\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\treturn this._pParentMesh.sceneTransform;\n\t}\n\n\t/**\n\t * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object).\n\t */\n\tpublic get parentMesh():Mesh\n\t{\n\t\treturn this._pParentMesh;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform || this._pParentMesh.uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Creates a new SubMeshBase object\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param camera\n\t * @returns {away.geom.Matrix3D}\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\treturn this._pParentMesh.getRenderSceneTransform(camera);\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\tpublic _iInvalidateRenderableGeometry()\n\t{\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].invalidateGeometry();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iGetExplicitMaterial():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n}\n\nexport = SubMeshBase;", "import ColorTransform\t\t\t= require(\"awayjs-core/lib/geom/ColorTransform\");\nimport Matrix\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The Transform class provides access to color adjustment properties and two-\n * or three-dimensional transformation objects that can be applied to a\n * display object. During the transformation, the color or the orientation and\n * position of a display object is adjusted(offset) from the current values\n * or coordinates to new values or coordinates. The Transform class also\n * collects data about color and two-dimensional matrix transformations that\n * are applied to a display object and all of its parent objects. You can\n * access these combined transformations through the\n * concatenatedColorTransform and concatenatedMatrix\n * properties.\n *\n *

To apply color transformations: create a ColorTransform object, set the\n * color adjustments using the object's methods and properties, and then\n * assign the colorTransformation property of the\n * transform property of the display object to the new\n * ColorTransformation object.

\n *\n *

To apply two-dimensional transformations: create a Matrix object, set\n * the matrix's two-dimensional transformation, and then assign the\n * transform.matrix property of the display object to the new\n * Matrix object.

\n *\n *

To apply three-dimensional transformations: start with a\n * three-dimensional display object. A three-dimensional display object has a\n * z property value other than zero. You do not need to create\n * the Matrix3D object. For all three-dimensional objects, a Matrix3D object\n * is created automatically when you assign a z value to a\n * display object. You can access the display object's Matrix3D object through\n * the display object's transform property. Using the methods of\n * the Matrix3D class, you can add to or modify the existing transformation\n * settings. Also, you can create a custom Matrix3D object, set the custom\n * Matrix3D object's transformation elements, and then assign the new Matrix3D\n * object to the display object using the transform.matrix\n * property.

\n *\n *

To modify a perspective projection of the stage or root object: use the\n * transform.matrix property of the root display object to gain\n * access to the PerspectiveProjection object. Or, apply different perspective\n * projection properties to a display object by setting the perspective\n * projection properties of the display object's parent. The child display\n * object inherits the new properties. Specifically, create a\n * PerspectiveProjection object and set its properties, then assign the\n * PerspectiveProjection object to the perspectiveProjection\n * property of the parent display object's transform property.\n * The specified projection transformation then applies to all the display\n * object's three-dimensional children.

\n *\n *

Since both PerspectiveProjection and Matrix3D objects perform\n * perspective transformations, do not assign both to a display object at the\n * same time. Use the PerspectiveProjection object for focal length and\n * projection center changes. For more control over the perspective\n * transformation, create a perspective projection Matrix3D object.

\n */\nclass Transform\n{\n\tprivate _displayObject:DisplayObject;\n\tprivate _concatenatedColorTransform:ColorTransform;\n\tprivate _concatenatedMatrix:Matrix;\n\tprivate _pixelBounds:Rectangle;\n\tpublic _position:Vector3D = new Vector3D();\n\n\t/**\n\t *\n\t */\n\tpublic get backVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A ColorTransform object containing values that universally adjust the\n\t * colors in the display object.\n\t * \n\t * @throws TypeError The colorTransform is null when being set\n\t */\n\tpublic colorTransform:ColorTransform;\n\n\t/**\n\t * A ColorTransform object representing the combined color transformations\n\t * applied to the display object and all of its parent objects, back to the\n\t * root level. If different color transformations have been applied at\n\t * different levels, all of those transformations are concatenated into one\n\t * ColorTransform object for this property.\n\t */\n\tpublic get concatenatedColorTransform():ColorTransform\n\t{\n\t\treturn this._concatenatedColorTransform; //TODO\n\t}\n\n\t/**\n\t * A Matrix object representing the combined transformation matrixes of the\n\t * display object and all of its parent objects, back to the root level. If\n\t * different transformation matrixes have been applied at different levels,\n\t * all of those matrixes are concatenated into one matrix for this property.\n\t * Also, for resizeable SWF content running in the browser, this property\n\t * factors in the difference between stage coordinates and window coordinates\n\t * due to window resizing. Thus, the property converts local coordinates to\n\t * window coordinates, which may not be the same coordinate space as that of\n\t * the Stage.\n\t */\n\tpublic get concatenatedMatrix():Matrix\n\t{\n\t\treturn this._concatenatedMatrix; //TODO\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get downVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get forwardVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get leftVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A Matrix object containing values that alter the scaling, rotation, and\n\t * translation of the display object.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t * \n\t * @throws TypeError The matrix is null when being set\n\t */\n\tpublic matrix:Matrix;\n\n\t/**\n\t * Provides access to the Matrix3D object of a three-dimensional display\n\t * object. The Matrix3D object represents a transformation matrix that\n\t * determines the display object's position and orientation. A Matrix3D\n\t * object can also perform perspective projection.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t */\n\tpublic get matrix3D():Matrix3D\n\t{\n\t\treturn this._displayObject._iMatrix3D;\n\t}\n\n\tpublic set matrix3D(val:Matrix3D)\n\t{\n\t\tthis._displayObject._iMatrix3D = val;\n\t}\n\n\t/**\n\t * Provides access to the PerspectiveProjection object of a three-dimensional\n\t * display object. The PerspectiveProjection object can be used to modify the\n\t * perspective transformation of the stage or to assign a perspective\n\t * transformation to all the three-dimensional children of a display object.\n\t *\n\t *

Based on the field of view and aspect ratio(dimensions) of the stage,\n\t * a default PerspectiveProjection object is assigned to the root object.

\n\t */\n\tpublic perspectiveProjection:PerspectiveProjection;\n\n\t/**\n\t * A Rectangle object that defines the bounding rectangle of the display\n\t * object on the stage.\n\t */\n\tpublic get pixelBounds():Rectangle\n\t{\n\t\treturn this._pixelBounds;\n\t}\n\n\t/**\n\t * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get position():Vector3D\n\t{\n\t\treturn this._displayObject._iMatrix3D.position\n\t}\n\n\tpublic set position(value:Vector3D)\n\t{\n\t\tthis._displayObject.x = value.x;\n\t\tthis._displayObject.y = value.y;\n\t\tthis._displayObject.z = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get rightVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get rotation():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.rotationX, this._displayObject.rotationY, this._displayObject.rotationZ);\n\t}\n\n\tpublic set rotation(value:Vector3D)\n\t{\n\t\tthis._displayObject.rotationX = value.x;\n\t\tthis._displayObject.rotationY = value.y;\n\t\tthis._displayObject.rotationZ = value.z;\n\t}\n\n\t/**\n\t * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get scale():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.scaleX, this._displayObject.scaleY, this._displayObject.scaleZ);\n\t}\n\n\tpublic set scale(value:Vector3D)\n\t{\n\t\tthis._displayObject.scaleX = value.x;\n\t\tthis._displayObject.scaleY = value.y;\n\t\tthis._displayObject.scaleZ = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get upVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t}\n\n\tconstructor(displayObject:DisplayObject)\n\t{\n\t\tthis._displayObject = displayObject;\n\t}\n\n\t/**\n\t * Returns a Matrix3D object, which can transform the space of a specified\n\t * display object in relation to the current display object's space. You can\n\t * use the getRelativeMatrix3D() method to move one\n\t * three-dimensional display object relative to another three-dimensional\n\t * display object.\n\t * \n\t * @param relativeTo The display object relative to which the transformation\n\t * occurs. To get a Matrix3D object relative to the stage,\n\t * set the parameter to the root or\n\t * stage object. To get the world-relative\n\t * matrix of the display object, set the parameter to a\n\t * display object that has a perspective transformation\n\t * applied to it.\n\t * @return A Matrix3D object that can be used to transform the space from the\n\t * relativeTo display object to the current display\n\t * object space.\n\t */\n\tpublic getRelativeMatrix3D(relativeTo:DisplayObject):Matrix3D\n\t{\n\t\treturn new Matrix3D(); //TODO\n\t}\n\n\n\t/**\n\t * Moves the 3d object forwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveForward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveBackward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\n\tpublic moveLeft(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveRight(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveUp(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveDown(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, -distance);\n\t}\n}\n\nexport = Transform;\n", "/**\n * Defines codes for culling algorithms that determine which triangles not to\n * render when drawing triangle paths.\n *\n *

The terms POSITIVE and NEGATIVE refer to the\n * sign of a triangle's normal along the z-axis. The normal is a 3D vector\n * that is perpendicular to the surface of the triangle.

\n *\n *

A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order\n * has a positive normal value. That is, its normal points in a positive\n * z-axis direction, away from the current view point. When the\n * TriangleCulling.POSITIVE algorithm is used, triangles with\n * positive normals are not rendered. Another term for this is backface\n * culling.

\n *\n *

A triangle whose vertices are arranged in a counter-clockwise order has\n * a negative normal value. That is, its normal points in a negative z-axis\n * direction, toward the current view point. When the\n * TriangleCulling.NEGATIVE algorithm is used, triangles with\n * negative normals will not be rendered.

\n */\nclass TriangleCulling\n{\n\t/**\n\t * Specifies culling of all triangles facing toward the current view point.\n\t */\n\tpublic static NEGATIVE:string = \"negative\";\n\n\t/**\n\t * Specifies no culling. All triangles in the path are rendered.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Specifies culling of all triangles facing away from the current view\n\t * point. This is also known as backface culling.\n\t */\n\tpublic static POSITIVE:string = \"positive\";\n}\n\nexport = TriangleCulling;", "import Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubMesh\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass TriangleSubGeometry extends SubGeometryBase\n{\n\tpublic static POSITION_DATA:string = \"positions\";\n\tpublic static NORMAL_DATA:string = \"vertexNormals\";\n\tpublic static TANGENT_DATA:string = \"vertexTangents\";\n\tpublic static UV_DATA:string = \"uvs\";\n\tpublic static SECONDARY_UV_DATA:string = \"secondaryUVs\";\n\tpublic static JOINT_INDEX_DATA:string = \"jointIndices\";\n\tpublic static JOINT_WEIGHT_DATA:string = \"jointWeights\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static NORMAL_FORMAT:string = \"float3\";\n\tpublic static TANGENT_FORMAT:string = \"float3\";\n\tpublic static UV_FORMAT:string = \"float2\";\n\tpublic static SECONDARY_UV_FORMAT:string = \"float2\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _faceNormalsDirty:boolean = true;\n\tprivate _faceTangentsDirty:boolean = true;\n\tprivate _vertexNormalsDirty:boolean = true;\n\tprivate _vertexTangentsDirty:boolean = true;\n\tprivate _uvsDirty:boolean = true;\n\tprivate _secondaryUVsDirty:boolean = true;\n\tprivate _jointIndicesDirty:boolean = true;\n\tprivate _jointWeightsDirty:boolean = true;\n\n\tprivate _positions:Array;\n\tprivate _vertexNormals:Array;\n\tprivate _vertexTangents:Array;\n\tprivate _uvs:Array;\n\tprivate _secondaryUVs:Array;\n\tprivate _jointIndices:Array;\n\tprivate _jointWeights:Array;\n\n\tprivate _useCondensedIndices:boolean;\n\tprivate _condensedJointIndices:Array;\n\tprivate _condensedIndexLookUp:Array;\n\tprivate _numCondensedJoints:number;\n\n\tprivate _jointsPerVertex:number;\n\n\tprivate _concatenateArrays:boolean = true;\n\tprivate _autoDeriveNormals:boolean = true;\n\tprivate _autoDeriveTangents:boolean = true;\n\tprivate _autoDeriveUVs:boolean = false;\n\tprivate _useFaceWeights:boolean = false;\n\n\tprivate _faceNormals:Array;\n\tprivate _faceTangents:Array;\n\tprivate _faceWeights:Array;\n\n\tprivate _scaleU:number = 1;\n\tprivate _scaleV:number = 1;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _normalsUpdated:SubGeometryEvent;\n\tprivate _tangentsUpdated:SubGeometryEvent;\n\tprivate _uvsUpdated:SubGeometryEvent;\n\tprivate _secondaryUVsUpdated:SubGeometryEvent;\n\tprivate _jointIndicesUpdated:SubGeometryEvent;\n\tprivate _jointWeightsUpdated:SubGeometryEvent;\n\n\t/**\n\t *\n\t */\n\tpublic get scaleU():number\n\t{\n\t\treturn this._scaleU;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scaleV():number\n\t{\n\t\treturn this._scaleV;\n\t}\n\n\t/**\n\t * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints\n\t * by condensing the number of joint index values required per mesh. Only applicable to\n\t * skeleton animations that utilise more than one mesh object. Defaults to false.\n\t */\n\tpublic get useCondensedIndices():boolean\n\t{\n\t\treturn this._useCondensedIndices;\n\t}\n\n\tpublic set useCondensedIndices(value:boolean)\n\t{\n\t\tif (this._useCondensedIndices == value)\n\t\t\treturn;\n\n\t\tthis._useCondensedIndices = value;\n\n\t\tthis.notifyJointIndicesUpdate();\n\t}\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tif (this._concatenateArrays) {\n\t\t\tthis._pOffset[TriangleSubGeometry.VERTEX_DATA] = 0;\n\n\t\t\t//always have positions\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tvar stride:number = 3;\n\n\t\t\tif (this._vertexNormals != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._vertexTangents != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._uvs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._secondaryUVs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._jointIndices != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tif (this._jointWeights != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tthis._pStride[TriangleSubGeometry.VERTEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\n\t\t\tvar len:number = this._pNumVertices*stride;\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t} else {\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = 0;\n\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = this._jointsPerVertex;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = this._jointsPerVertex;\n\t\t}\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointsPerVertex():number\n\t{\n\t\treturn this._jointsPerVertex;\n\t}\n\n\tpublic set jointsPerVertex(value:number)\n\t{\n\t\tif (this._jointsPerVertex == value)\n\t\t\treturn;\n\n\t\tthis._jointsPerVertex = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (this._pConcatenateArrays)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * Defines whether a UV buffer should be automatically generated to contain dummy UV coordinates.\n\t * Set to true if a geometry lacks UV data but uses a material that requires it, or leave as false\n\t * in cases where UV data is explicitly defined or the material does not require UV data.\n\t */\n\tpublic get autoDeriveUVs():boolean\n\t{\n\t\treturn this._autoDeriveUVs;\n\t}\n\n\tpublic set autoDeriveUVs(value:boolean)\n\t{\n\t\tif (this._autoDeriveUVs == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveUVs = value;\n\n\t\tif (value)\n\t\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex normals should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveNormals():boolean\n\t{\n\t\treturn this._autoDeriveNormals;\n\t}\n\n\tpublic set autoDeriveNormals(value:boolean)\n\t{\n\t\tif (this._autoDeriveNormals == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveNormals = value;\n\n\t\tif (value)\n\t\t\tthis.notifyNormalsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex tangents should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveTangents():boolean\n\t{\n\t\treturn this._autoDeriveTangents;\n\t}\n\n\tpublic set autoDeriveTangents(value:boolean)\n\t{\n\t\tif (this._autoDeriveTangents == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveTangents = value;\n\n\t\tif (value)\n\t\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get positions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexNormals():Array\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\treturn this._vertexNormals;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexTangents():Array\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\treturn this._vertexTangents;\n\t}\n\n\t/**\n\t * The raw data of the face normals, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceNormals():Array\n\t{\n\t\tif (this._faceNormalsDirty)\n\t\t\tthis.updateFaceNormals();\n\n\t\treturn this._faceNormals;\n\t}\n\n\t/**\n\t * The raw data of the face tangets, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceTangents():Array\n\t{\n\t\tif (this._faceTangentsDirty)\n\t\t\tthis.updateFaceTangents();\n\n\t\treturn this._faceTangents;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvs():Array\n\t{\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\treturn this._uvs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get secondaryUVs():Array\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\treturn this._secondaryUVs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointIndices():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._useCondensedIndices)\n\t\t\treturn this._condensedJointIndices;\n\n\t\treturn this._jointIndices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointWeights():Array\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._jointWeights;\n\t}\n\n\t/**\n\t * Indicates whether or not to take the size of faces into account when auto-deriving vertex normals and tangents.\n\t */\n\tpublic get useFaceWeights():boolean\n\t{\n\t\treturn this._useFaceWeights;\n\t}\n\n\tpublic set useFaceWeights(value:boolean)\n\t{\n\t\tif (this._useFaceWeights == value)\n\t\t\treturn;\n\n\t\tthis._useFaceWeights = value;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._faceNormalsDirty = true;\n\t}\n\n\tpublic get numCondensedJoints():number\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._numCondensedJoints;\n\t}\n\n\tpublic get condensedIndexLookUp():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._condensedIndexLookUp;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper(concatenatedArrays);\n\n\t\tthis._pSubMeshClass = TriangleSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tthis._positions = values;\n\n\t\tif (this._positions == null)\n\t\t\tthis._positions = new Array();\n\n\t\tthis._pNumVertices = this._positions.length/3;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tvar len:number = this._pNumVertices*this.getStride(TriangleSubGeometry.VERTEX_DATA);\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t\ti = 0;\n\t\t\tindex = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\t\tpositions = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tpositions[index] = values[i++];\n\t\t\t\tpositions[index + 1] = values[i++];\n\t\t\t\tpositions[index + 2] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis.notifyUVsUpdate()\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex normals based on the geometry.\n\t */\n\tpublic updateVertexNormals(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar normals:Array;\n\n\t\tif (!this._autoDeriveNormals) {\n\t\t\tif ((this._vertexNormals == null || values == null) && (this._vertexNormals != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._vertexNormals = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tnormals = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tnormals[index] = values[i++];\n\t\t\t\t\tnormals[index + 1] = values[i++];\n\t\t\t\t\tnormals[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexNormals == null) {\n\t\t\t\tthis._vertexNormals = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceNormalsDirty)\n\t\t\t\tthis.updateFaceNormals();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\n\t\t\t//autoderived normals\n\t\t\tnormals = this._concatenateArrays? this._pVertices : this._vertexNormals;\n\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear normal values\n\t\t\tvar lenV:number = normals.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tnormals[index] = 0;\n\t\t\t\tnormals[index + 1] = 0;\n\t\t\t\tnormals[index + 2] = 0;\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\tvar weight:number;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face normals\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average normals collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = normals[index];\n\t\t\t\tvar vy:number = normals[index + 1];\n\t\t\t\tvar vz:number = normals[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index] = vx*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\tnormals[index] = vx*d;\n\t\t\t\t\tnormals[index + 1] = vy*d;\n\t\t\t\t\tnormals[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyNormalsUpdate();\n\n\t\tthis._vertexNormalsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex tangents based on the geometry.\n\t */\n\tpublic updateVertexTangents(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar tangents:Array;\n\n\t\tif (!this._autoDeriveTangents) {\n\t\t\tif ((this._vertexTangents == null || values == null) && (this._vertexTangents != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\n\t\t\tthis._vertexTangents = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\ttangents = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\ttangents[index] = values[i++];\n\t\t\t\t\ttangents[index + 1] = values[i++];\n\t\t\t\t\ttangents[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexTangents == null) {\n\t\t\t\tthis._vertexTangents = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceTangentsDirty)\n\t\t\t\tthis.updateFaceTangents();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\t\t//autoderived tangents\n\t\t\ttangents = this._concatenateArrays? this._pVertices : this._vertexTangents;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear tangent values\n\t\t\tvar lenV:number = tangents.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\ttangents[index] = 0;\n\t\t\t\ttangents[index + 1] = 0;\n\t\t\t\ttangents[index + 2] = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar weight:number;\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face tangents\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average tangents collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = tangents[index];\n\t\t\t\tvar vy:number = tangents[index + 1];\n\t\t\t\tvar vz:number = tangents[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index] = vx*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\ttangents[index] = vx*d;\n\t\t\t\t\ttangents[index + 1] = vy*d;\n\t\t\t\t\ttangents[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._vertexTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the uvs based on the geometry.\n\t */\n\tpublic updateUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (!this._autoDeriveUVs) {\n\t\t\tif ((this._uvs == null || values == null) && (this._uvs != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._uvs = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\t\t\t\tuvs = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tuvs[index] = values[i++];\n\t\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (this._uvs == null) {\n\t\t\t\tthis._uvs = new Array(this._positions.length*2/3);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\n\t\t\t//autoderived uvs\n\t\t\tuvs = this._concatenateArrays? this._pVertices : this._uvs;\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tvar uvIdx:number = 0;\n\n\t\t\t//clear uv values\n\t\t\tvar lenV:number = uvs.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._uvs[i++] = uvs[index] = uvIdx*.5;\n\t\t\t\t\tthis._uvs[i++] = uvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t} else {\n\t\t\t\t\tuvs[index] = uvIdx*.5;\n\t\t\t\t\tuvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t}\n\n\t\t\t\tif (++uvIdx == 3)\n\t\t\t\t\tuvIdx = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis.notifyUVsUpdate();\n\n\t\tthis._uvsDirty = false;\n\t}\n\n\t/**\n\t * Updates the secondary uvs based on the geometry.\n\t */\n\tpublic updateSecondaryUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (this._concatenateArrays && (this._secondaryUVs == null || values == null) && (this._secondaryUVs != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._secondaryUVs = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.SECONDARY_UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tuvs = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tuvs[index] = values[i++];\n\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifySecondaryUVsUpdate();\n\n\t\tthis._secondaryUVsDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint indices\n\t */\n\tpublic updateJointIndices(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointIndices:Array;\n\n\t\tif (this._concatenateArrays && (this._jointIndices == null || values == null) && (this._jointIndices != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointIndices = values;\n\n\t\tif (values != null) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tif (this._useCondensedIndices) {\n\t\t\t\ti = 0;\n\t\t\t\tj = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._concatenateArrays? this._pVertices : this._condensedJointIndices;\n\t\t\t\tvar oldIndex:number;\n\t\t\t\tvar newIndex:number = 0;\n\t\t\t\tvar dic:Object = new Object();\n\n\t\t\t\tif (!this._concatenateArrays)\n\t\t\t\t\tthis._condensedJointIndices = new Array(values.length);\n\n\t\t\t\tthis._condensedIndexLookUp = new Array();\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tfor (j = 0; j < this._jointsPerVertex; j++) {\n\t\t\t\t\t\toldIndex = values[i++];\n\n\t\t\t\t\t\t// if we encounter a new index, assign it a new condensed index\n\t\t\t\t\t\tif (dic[oldIndex] == undefined) {\n\t\t\t\t\t\t\tdic[oldIndex] = newIndex*3; //3 required for the three vectors that store the matrix\n\t\t\t\t\t\t\tthis._condensedIndexLookUp[newIndex++] = oldIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjointIndices[index + j] = dic[oldIndex];\n\t\t\t\t\t}\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t\tthis._numCondensedJoints = newIndex;\n\t\t\t} else if (this._concatenateArrays) {\n\n\t\t\t\ti = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\t\tjointIndices[index + j++] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointIndicesUpdate();\n\n\t\tthis._jointIndicesDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint weights.\n\t */\n\tpublic updateJointWeights(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointWeights:Array;\n\n\t\tif (this._concatenateArrays && (this._jointWeights == null || values == null) && (this._jointWeights != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointWeights = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tjointWeights = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tj = 0;\n\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\tjointWeights[index + j++] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointWeightsUpdate();\n\n\t\tthis._jointWeightsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._positions = null;\n\t\tthis._vertexNormals = null;\n\t\tthis._vertexTangents = null;\n\t\tthis._uvs = null;\n\t\tthis._secondaryUVs = null;\n\t\tthis._jointIndices = null;\n\t\tthis._jointWeights = null;\n\n\t\tthis._faceNormals = null;\n\t\tthis._faceWeights = null;\n\t\tthis._faceTangents = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tsuper.updateIndices(indices);\n\n\t\tthis._faceNormalsDirty = true;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis._uvsDirty = true;\n\t}\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():TriangleSubGeometry\n\t{\n\t\tvar clone:TriangleSubGeometry = new TriangleSubGeometry(this._concatenateArrays);\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._positions.concat());\n\n\t\tif (this._vertexNormals && !this._autoDeriveNormals)\n\t\t\tclone.updateVertexNormals(this._vertexNormals.concat());\n\t\telse\n\t\t\tclone.updateVertexNormals(null);\n\n\t\tif (this._uvs && !this._autoDeriveUVs)\n\t\t\tclone.updateUVs(this._uvs.concat());\n\t\telse\n\t\t\tclone.updateUVs(null);\n\n\t\tif (this._vertexTangents && !this._autoDeriveTangents)\n\t\t\tclone.updateVertexTangents(this._vertexTangents.concat());\n\t\telse\n\t\t\tclone.updateVertexTangents(null);\n\n\t\tif (this._secondaryUVs)\n\t\t\tclone.updateSecondaryUVs(this._secondaryUVs.concat());\n\n\t\tif (this._jointIndices) {\n\t\t\tclone.jointsPerVertex = this._jointsPerVertex;\n\t\t\tclone.updateJointIndices(this._jointIndices.concat());\n\t\t}\n\n\t\tif (this._jointWeights)\n\t\t\tclone.updateJointWeights(this._jointWeights.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tuvs = this._uvs;\n\n\t\tvar ratioU:number = scaleU/this._scaleU;\n\t\tvar ratioV:number = scaleV/this._scaleV;\n\n\t\tthis._scaleU = scaleU;\n\t\tthis._scaleV = scaleV;\n\n\t\tvar len:number = uvs.length;\n\n\t\toffset = 0;\n\t\tstride = 2;\n\n\t\tindex = offset;\n\n\t\twhile (index < len) {\n\t\t\tuvs[index] *= ratioU;\n\t\t\tuvs[index + 1] *= ratioV;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tpositions = this._positions;\n\n\t\tvar len:number = positions.length;\n\n\t\toffset = 0;\n\t\tstride = 3;\n\n\t\ti = 0;\n\t\tindex = offset;\n\t\twhile (i < len) {\n\t\t\tpositions[index] *= scale;\n\t\t\tpositions[index + 1] *= scale;\n\t\t\tpositions[index + 2] *= scale;\n\n\t\t\ti += 3;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tpositions = this._pVertices;\n\t\t\tnormals = this._pVertices;\n\t\t\ttangents = this._pVertices;\n\t\t} else {\n\t\t\tpositions = this._positions;\n\t\t\tnormals = this._vertexNormals;\n\t\t\ttangents = this._vertexTangents;\n\t\t}\n\n\t\tvar len:number = this._positions.length/3;\n\t\tvar i:number;\n\t\tvar i1:number;\n\t\tvar i2:number;\n\t\tvar vector:Vector3D = new Vector3D();\n\n\t\tvar bakeNormals:boolean = this._vertexNormals != null;\n\t\tvar bakeTangents:boolean = this._vertexTangents != null;\n\t\tvar invTranspose:Matrix3D;\n\n\t\tif (bakeNormals || bakeTangents) {\n\t\t\tinvTranspose = transform.clone();\n\t\t\tinvTranspose.invert();\n\t\t\tinvTranspose.transpose();\n\t\t}\n\n\t\tvar vi0:number = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\tvar ni0:number = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar ti0:number = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tvar vStride:number = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\tvar nStride:number = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar tStride:number = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\ti1 = vi0 + 1;\n\t\t\ti2 = vi0 + 2;\n\n\t\t\t// bake position\n\t\t\tvector.x = positions[vi0];\n\t\t\tvector.y = positions[i1];\n\t\t\tvector.z = positions[i2];\n\t\t\tvector = transform.transformVector(vector);\n\t\t\tpositions[vi0] = vector.x;\n\t\t\tpositions[i1] = vector.y;\n\t\t\tpositions[i2] = vector.z;\n\t\t\tvi0 += vStride;\n\n\t\t\t// bake normal\n\t\t\tif (bakeNormals) {\n\t\t\t\ti1 = ni0 + 1;\n\t\t\t\ti2 = ni0 + 2;\n\t\t\t\tvector.x = normals[ni0];\n\t\t\t\tvector.y = normals[i1];\n\t\t\t\tvector.z = normals[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\tnormals[ni0] = vector.x;\n\t\t\t\tnormals[i1] = vector.y;\n\t\t\t\tnormals[i2] = vector.z;\n\t\t\t\tni0 += nStride;\n\t\t\t}\n\n\t\t\t// bake tangent\n\t\t\tif (bakeTangents) {\n\t\t\t\ti1 = ti0 + 1;\n\t\t\t\ti2 = ti0 + 2;\n\t\t\t\tvector.x = tangents[ti0];\n\t\t\t\tvector.y = tangents[i1];\n\t\t\t\tvector.z = tangents[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\ttangents[ti0] = vector.x;\n\t\t\t\ttangents[i1] = vector.y;\n\t\t\t\ttangents[i2] = vector.z;\n\t\t\t\tti0 += tStride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t * Updates the tangents for each face.\n\t */\n\tprivate updateFaceTangents()\n\t{\n\t\tvar i:number = 0;\n\t\tvar index1:number;\n\t\tvar index2:number;\n\t\tvar index3:number;\n\t\tvar vi:number;\n\t\tvar v0:number;\n\t\tvar dv1:number;\n\t\tvar dv2:number;\n\t\tvar denom:number;\n\t\tvar x0:number, y0:number, z0:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\n\t\tvar positions:Array = this._positions\n\t\tvar uvs:Array = this._uvs;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceTangents == null)\n\t\t\tthis._faceTangents = new Array(len);\n\n\t\twhile (i < len) {\n\t\t\tindex1 = this._pIndices[i];\n\t\t\tindex2 = this._pIndices[i + 1];\n\t\t\tindex3 = this._pIndices[i + 2];\n\n\t\t\tv0 = uvs[index1*2 + 1];\n\t\t\tdv1 = uvs[index2*2 + 1] - v0;\n\t\t\tdv2 = uvs[index3*2 + 1] - v0;\n\n\t\t\tvi = index1*3;\n\t\t\tx0 = positions[vi];\n\t\t\ty0 = positions[vi + 1];\n\t\t\tz0 = positions[vi + 2];\n\t\t\tvi = index2*3;\n\t\t\tdx1 = positions[vi] - x0;\n\t\t\tdy1 = positions[vi + 1] - y0;\n\t\t\tdz1 = positions[vi + 2] - z0;\n\t\t\tvi = index3*3;\n\t\t\tdx2 = positions[vi] - x0;\n\t\t\tdy2 = positions[vi + 1] - y0;\n\t\t\tdz2 = positions[vi + 2] - z0;\n\n\t\t\tcx = dv2*dx1 - dv1*dx2;\n\t\t\tcy = dv2*dy1 - dv1*dy2;\n\t\t\tcz = dv2*dz1 - dv1*dz2;\n\t\t\tdenom = 1/Math.sqrt(cx*cx + cy*cy + cz*cz);\n\n\t\t\tthis._faceTangents[i++] = denom*cx;\n\t\t\tthis._faceTangents[i++] = denom*cy;\n\t\t\tthis._faceTangents[i++] = denom*cz;\n\t\t}\n\n\t\tthis._faceTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the normals for each face.\n\t */\n\tprivate updateFaceNormals()\n\t{\n\t\tvar i:number = 0;\n\t\tvar j:number = 0;\n\t\tvar k:number = 0;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\n\t\tvar x1:number, x2:number, x3:number;\n\t\tvar y1:number, y2:number, y3:number;\n\t\tvar z1:number, z2:number, z3:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\t\tvar d:number;\n\n\t\tvar positions:Array = this._positions;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceNormals == null)\n\t\t\tthis._faceNormals = new Array(len);\n\n\t\tif (this._useFaceWeights && this._faceWeights == null)\n\t\t\tthis._faceWeights = new Array(len/3);\n\n\t\twhile (i < len) {\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx1 = positions[index];\n\t\t\ty1 = positions[index + 1];\n\t\t\tz1 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx2 = positions[index];\n\t\t\ty2 = positions[index + 1];\n\t\t\tz2 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx3 = positions[index];\n\t\t\ty3 = positions[index + 1];\n\t\t\tz3 = positions[index + 2];\n\t\t\tdx1 = x3 - x1;\n\t\t\tdy1 = y3 - y1;\n\t\t\tdz1 = z3 - z1;\n\t\t\tdx2 = x2 - x1;\n\t\t\tdy2 = y2 - y1;\n\t\t\tdz2 = z2 - z1;\n\t\t\tcx = dz1*dy2 - dy1*dz2;\n\t\t\tcy = dx1*dz2 - dz1*dx2;\n\t\t\tcz = dy1*dx2 - dx1*dy2;\n\t\t\td = Math.sqrt(cx*cx + cy*cy + cz*cz);\n\t\t\t// length of cross product = 2*triangle area\n\n\t\t\tif (this._useFaceWeights) {\n\t\t\t\tvar w:number = d*10000;\n\n\t\t\t\tif (w < 1)\n\t\t\t\t\tw = 1;\n\n\t\t\t\tthis._faceWeights[k++] = w;\n\t\t\t}\n\n\t\t\td = 1/d;\n\n\t\t\tthis._faceNormals[j++] = cx*d;\n\t\t\tthis._faceNormals[j++] = cy*d;\n\t\t\tthis._faceNormals[j++] = cz*d;\n\t\t}\n\n\t\tthis._faceNormalsDirty = false;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t\tthis.notifyUVsUpdate();\n\t\tthis.notifySecondaryUVsUpdate();\n\t\tthis.notifyJointIndicesUpdate();\n\t\tthis.notifyJointWeightsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyNormalsUpdate()\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (!this._normalsUpdated)\n\t\t\tthis._normalsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.NORMAL_DATA);\n\n\t\tthis.dispatchEvent(this._normalsUpdated);\n\t}\n\n\tprivate notifyTangentsUpdate()\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (!this._tangentsUpdated)\n\t\t\tthis._tangentsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.TANGENT_DATA);\n\n\t\tthis.dispatchEvent(this._tangentsUpdated);\n\t}\n\n\tprivate notifyUVsUpdate()\n\t{\n\t\tif (this._uvsDirty)\n\t\t\treturn;\n\n\t\tthis._uvsDirty = true;\n\n\t\tif (!this._uvsUpdated)\n\t\t\tthis._uvsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.UV_DATA);\n\n\t\tthis.dispatchEvent(this._uvsUpdated);\n\t}\n\n\tprivate notifySecondaryUVsUpdate()\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\treturn;\n\n\t\tthis._secondaryUVsDirty = true;\n\n\t\tif (!this._secondaryUVsUpdated)\n\t\t\tthis._secondaryUVsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\tthis.dispatchEvent(this._secondaryUVsUpdated);\n\t}\n\n\tprivate notifyJointIndicesUpdate()\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\treturn;\n\n\t\tthis._jointIndicesDirty = true;\n\n\t\tif (!this._jointIndicesUpdated)\n\t\t\tthis._jointIndicesUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_INDEX_DATA);\n\n\t\tthis.dispatchEvent(this._jointIndicesUpdated);\n\t}\n\n\tprivate notifyJointWeightsUpdate()\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\treturn;\n\n\t\tthis._jointWeightsDirty = true;\n\n\t\tif (!this._jointWeightsUpdated)\n\t\t\tthis._jointWeightsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\tthis.dispatchEvent(this._jointWeightsUpdated);\n\t}\n}\n\nexport = TriangleSubGeometry;", - "import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\n\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * TriangleSubMesh wraps a TriangleSubGeometry as a scene graph instantiation. A TriangleSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.TriangleSubMesh\n */\nclass TriangleSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:TriangleSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.TRIANGLE_SUB_MESH;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t */\n\tpublic get subGeometry():TriangleSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new TriangleSubMesh object\n\t * @param subGeometry The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t * @param parentMesh The Mesh object to which this TriangleSubMesh belongs.\n\t * @param material An optional material used to render this TriangleSubMesh.\n\t */\n\tconstructor(subGeometry:TriangleSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyTriangleSubMesh(this);\n\t}\n}\n\nexport = TriangleSubMesh;", + "import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\n\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * TriangleSubMesh wraps a TriangleSubGeometry as a scene graph instantiation. A TriangleSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.TriangleSubMesh\n */\nclass TriangleSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:TriangleSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.TRIANGLE_SUB_MESH;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t */\n\tpublic get subGeometry():TriangleSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new TriangleSubMesh object\n\t * @param subGeometry The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t * @param parentMesh The Mesh object to which this TriangleSubMesh belongs.\n\t * @param material An optional material used to render this TriangleSubMesh.\n\t */\n\tconstructor(subGeometry:TriangleSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyTriangleSubMesh(this);\n\t}\n}\n\nexport = TriangleSubMesh;", "import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport ArgumentError\t\t\t\t= require(\"awayjs-core/lib/errors/ArgumentError\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\nimport RangeError\t\t\t\t\t= require(\"awayjs-core/lib/errors/RangeError\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\n\n/**\n * The DisplayObjectContainer class is the base class for all objects that can\n * serve as display object containers on the display list. The display list\n * manages all objects displayed in the Flash runtimes. Use the\n * DisplayObjectContainer class to arrange the display objects in the display\n * list. Each DisplayObjectContainer object has its own child list for\n * organizing the z-order of the objects. The z-order is the front-to-back\n * order that determines which object is drawn in front, which is behind, and\n * so on.\n *\n *

DisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject() throws an\n * ArgumentError exception.

\n * The DisplayObjectContainer class is an abstract base class for all objects\n * that can contain child objects. It cannot be instantiated directly; calling\n * the new DisplayObjectContainer() constructor throws an\n * ArgumentError exception.\n *\n *

For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.

\n */\nclass DisplayObjectContainer extends DisplayObject implements IAsset\n{\n\tprivate _mouseChildren:boolean = true;\n\tprivate _children:Array = new Array();\n\tpublic _iIsRoot:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CONTAINER;\n\t}\n\n\t/**\n\t * Determines whether or not the children of the object are mouse, or user\n\t * input device, enabled. If an object is enabled, a user can interact with\n\t * it by using a mouse or user input device. The default is\n\t * true.\n\t *\n\t *

This property is useful when you create a button with an instance of\n\t * the Sprite class(instead of using the SimpleButton class). When you use a\n\t * Sprite instance to create a button, you can choose to decorate the button\n\t * by using the addChild() method to add additional Sprite\n\t * instances. This process can cause unexpected behavior with mouse events\n\t * because the Sprite instances you add as children can become the target\n\t * object of a mouse event when you expect the parent instance to be the\n\t * target object. To ensure that the parent instance serves as the target\n\t * objects for mouse events, you can set the mouseChildren\n\t * property of the parent instance to false.

\n\t *\n\t *

No event is dispatched by setting this property. You must use the\n\t * addEventListener() method to create interactive\n\t * functionality.

\n\t */\n\tpublic get mouseChildren():boolean\n\t{\n\t\treturn this._mouseChildren;\n\t}\n\n\tpublic set mouseChildren(value:boolean)\n\t{\n\t\tif (this._mouseChildren == value)\n\t\t\treturn;\n\n\t\tthis._mouseChildren = value;\n\n\t\tthis._pUpdateImplicitMouseEnabled(this._pParent? this._pParent.mouseChildren : true);\n\t}\n\n\t/**\n\t * Returns the number of children of this object.\n\t */\n\tpublic get numChildren():number /*int*/\n\t{\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Determines whether the children of the object are tab enabled. Enables or\n\t * disables tabbing for the children of the object. The default is\n\t * true.\n\t *\n\t *

Note: Do not use the tabChildren property with\n\t * Flex. Instead, use the\n\t * mx.core.UIComponent.hasFocusableChildren property.

\n\t *\n\t * @throws IllegalOperationError Calling this property of the Stage object\n\t * throws an exception. The Stage object does\n\t * not implement this property.\n\t */\n\tpublic tabChildren:boolean;\n\n\t/**\n\t * Calling the new DisplayObjectContainer() constructor throws\n\t * an ArgumentError exception. You can, however, call\n\t * constructors for the following subclasses of DisplayObjectContainer:\n\t *
    \n\t *
  • new Loader()
  • \n\t *
  • new Sprite()
  • \n\t *
  • new MovieClip()
  • \n\t *
\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added to the front(top) of all other children in\n\t * this DisplayObjectContainer instance.(To add a child to a specific index\n\t * position, use the addChildAt() method.)\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t *

Note: The command stage.addChild() can cause\n\t * problems with a published SWF file, including security problems and\n\t * conflicts with other loaded SWF files. There is only one Stage within a\n\t * Flash runtime instance, no matter how many SWF files you load into the\n\t * runtime. So, generally, objects should not be added to the Stage,\n\t * directly, at all. The only object the Stage should contain is the root\n\t * object. Create a DisplayObjectContainer to contain all of the items on the\n\t * display list. Then, if necessary, add that DisplayObjectContainer instance\n\t * to the Stage.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null.\");\n\n\t\t//if child already has a parent, remove it.\n\t\tif (child._pParent)\n\t\t\tchild._pParent.removeChildInternal(child);\n\n\t\tchild.iSetParent(this);\n\n\t\tthis._children.push(child);\n\n\t\treturn child;\n\t}\n\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added at the index position specified. An index of\n\t * 0 represents the back(bottom) of the display list for this\n\t * DisplayObjectContainer object.\n\t *\n\t *

For example, the following example shows three display objects, labeled\n\t * a, b, and c, at index positions 0, 2, and 1, respectively:

\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @param index The index position to which the child is added. If you\n\t * specify a currently occupied index position, the child object\n\t * that exists at that position and all higher positions are\n\t * moved up one position in the child list.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @throws RangeError Throws if the index position does not exist in the\n\t * child list.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChildAt(child:DisplayObject, index:number /*int*/):DisplayObject\n\t{\n\t\treturn child;\n\t}\n\n\tpublic addChildren(...childarray:Array)\n\t{\n\t\tvar len:number = childarray.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis.addChild(childarray[i]);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:DisplayObjectContainer = new DisplayObjectContainer();\n\t\tclone.pivot = this.pivot;\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.partition = this.partition;\n\t\tclone.name = name;\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone.addChild(this._children[i].clone());\n\n\t\t// todo: implement for all subtypes\n\t\treturn clone;\n\t}\n\n\t/**\n\t * Determines whether the specified display object is a child of the\n\t * DisplayObjectContainer instance or the instance itself. The search\n\t * includes the entire display list including this DisplayObjectContainer\n\t * instance. Grandchildren, great-grandchildren, and so on each return\n\t * true.\n\t *\n\t * @param child The child object to test.\n\t * @return true if the child object is a child of\n\t * the DisplayObjectContainer or the container itself; otherwise\n\t * false.\n\t */\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._children.indexOf(child) >= 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic disposeWithChildren()\n\t{\n\t\tthis.dispose();\n\n\t\twhile (this.numChildren > 0)\n\t\t\tthis.getChildAt(0).dispose();\n\t}\n\n\t/**\n\t * Returns the child display object instance that exists at the specified\n\t * index.\n\t *\n\t * @param index The index position of the child object.\n\t * @return The child display object at the specified index position.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic getChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\tvar child:DisplayObject = this._children[index];\n\n\t\tif (child == null)\n\t\t\tthrow new RangeError(\"Index does not exist in the child list of the caller\");\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Returns the child display object that exists with the specified name. If\n\t * more that one child display object has the specified name, the method\n\t * returns the first object in the child list.\n\t *\n\t *

The getChildAt() method is faster than the\n\t * getChildByName() method. The getChildAt() method\n\t * accesses a child from a cached array, whereas the\n\t * getChildByName() method has to traverse a linked list to\n\t * access a child.

\n\t *\n\t * @param name The name of the child to return.\n\t * @return The child display object with the specified name.\n\t */\n\tpublic getChildByName(name:string):DisplayObject\n\t{\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tif (this._children[i].name == name)\n\t\t\t\treturn this._children[i];\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the index position of a child DisplayObject instance.\n\t *\n\t * @param child The DisplayObject instance to identify.\n\t * @return The index position of the child display object to identify.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic getChildIndex(child:DisplayObject):number /*int*/\n\t{\n\t\tvar childIndex:number = this._children.indexOf(child);\n\n\t\tif (childIndex == -1)\n\t\t\tthrow new ArgumentError(\"Child parameter is not a child of the caller\");\n\n\t\treturn childIndex;\n\t}\n\n\t/**\n\t * Returns an array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this DisplayObjectContainer\n\t * instance. Any child objects that are inaccessible for security reasons are\n\t * omitted from the returned array. To determine whether this security\n\t * restriction affects the returned array, call the\n\t * areInaccessibleObjectsUnderPoint() method.\n\t *\n\t *

The point parameter is in the coordinate space of the\n\t * Stage, which may differ from the coordinate space of the display object\n\t * container(unless the display object container is the Stage). You can use\n\t * the globalToLocal() and the localToGlobal()\n\t * methods to convert points between these coordinate spaces.

\n\t *\n\t * @param point The point under which to look.\n\t * @return An array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this\n\t * DisplayObjectContainer instance.\n\t */\n\tpublic getObjectsUnderPoint(point:Point):Array\n\t{\n\t\treturn new Array();\n\t}\n\n\t/**\n\t * Removes the specified child DisplayObject instance from the\n\t * child list of the DisplayObjectContainer instance. The parent\n\t * property of the removed child is set to null , and the object\n\t * is garbage collected if no other references to the child exist. The index\n\t * positions of any display objects above the child in the\n\t * DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param child The DisplayObject instance to remove.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic removeChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null\");\n\n\t\tthis.removeChildInternal(child);\n\n\t\tchild.iSetParent(null);\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Removes a child DisplayObject from the specified index\n\t * position in the child list of the DisplayObjectContainer. The\n\t * parent property of the removed child is set to\n\t * null, and the object is garbage collected if no other\n\t * references to the child exist. The index positions of any display objects\n\t * above the child in the DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param index The child index of the DisplayObject to remove.\n\t * @return The DisplayObject instance that was removed.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t * @throws SecurityError This child display object belongs to a sandbox to\n\t * which the calling object does not have access. You\n\t * can avoid this situation by having the child movie\n\t * call the Security.allowDomain() method.\n\t */\n\tpublic removeChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\treturn this.removeChild(this._children[index]);\n\t}\n\n\t/**\n\t * Removes all child DisplayObject instances from the child list\n\t * of the DisplayObjectContainer instance. The parent property\n\t * of the removed children is set to null, and the objects are\n\t * garbage collected if no other references to the children exist.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable or\n\t * object is no longer actively referenced or stored somewhere, the garbage\n\t * collector sweeps through and wipes out the memory space it used to occupy\n\t * if no other references to it exist.\n\t *\n\t * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.\n\t * @param endIndex The ending position. A value smaller than 0 throws a RangeError.\n\t * @throws RangeError Throws if the beginIndex or endIndex positions do\n\t * not exist in the child list.\n\t */\n\tpublic removeChildren(beginIndex:number /*int*/ = 0, endIndex:number /*int*/ = 2147483647)\n\t{\n\t\tif (beginIndex < 0)\n\t\t\tthrow new RangeError(\"beginIndex is out of range of the child list\");\n\n\t\tif (endIndex > this._children.length)\n\t\t\tthrow new RangeError(\"endIndex is out of range of the child list\");\n\n\t\tfor(var i:number /*uint*/ = beginIndex; i < endIndex; i++)\n\t\t\tthis.removeChild(this._children[i]);\n\t}\n\n\t/**\n\t * Changes the position of an existing child in the display object container.\n\t * This affects the layering of child objects. For example, the following\n\t * example shows three display objects, labeled a, b, and c, at index\n\t * positions 0, 1, and 2, respectively:\n\t *\n\t *

When you use the setChildIndex() method and specify an\n\t * index position that is already occupied, the only positions that change\n\t * are those in between the display object's former and new position. All\n\t * others will stay the same. If a child is moved to an index LOWER than its\n\t * current index, all children in between will INCREASE by 1 for their index\n\t * reference. If a child is moved to an index HIGHER than its current index,\n\t * all children in between will DECREASE by 1 for their index reference. For\n\t * example, if the display object container in the previous example is named\n\t * container, you can swap the position of the display objects\n\t * labeled a and b by calling the following code:

\n\t *\n\t *

This code results in the following arrangement of objects:

\n\t *\n\t * @param child The child DisplayObject instance for which you want to change\n\t * the index number.\n\t * @param index The resulting index number for the child display\n\t * object.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic setChildIndex(child:DisplayObject, index:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order (front-to-back order) of the two specified child\n\t * objects. All other child objects in the display object container remain in\n\t * the same index positions.\n\t *\n\t * @param child1 The first child object.\n\t * @param child2 The second child object.\n\t * @throws ArgumentError Throws if either child parameter is not a child of\n\t * this object.\n\t */\n\tpublic swapChildren(child1:DisplayObject, child2:DisplayObject)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order(front-to-back order) of the child objects at the two\n\t * specified index positions in the child list. All other child objects in\n\t * the display object container remain in the same index positions.\n\t *\n\t * @param index1 The index position of the first child object.\n\t * @param index2 The index position of the second child object.\n\t * @throws RangeError If either index does not exist in the child list.\n\t */\n\tpublic swapChildrenAt(index1:number /*int*/, index2:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i].pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tsuper._pUpdateScene(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateScene(value);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitMouseEnabled(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitMouseEnabled(this._mouseChildren);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitVisibility(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitVisibility(this._pImplicitVisibility);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\tsuper._pUpdateImplicitPartition(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitPartition(this._pImplicitPartition);\n\t}\n\n\t/**\n\t * @private\n\t *\n\t * @param child\n\t */\n\tprivate removeChildInternal(child:DisplayObject):DisplayObject\n\t{\n\t\tthis._children.splice(this.getChildIndex(child), 1);\n\n\t\treturn child;\n\t}\n}\n\nexport = DisplayObjectContainer;", "import AssetLibraryBundle\t\t\t= require(\"awayjs-core/lib/library/AssetLibraryBundle\");\nimport AssetLoader\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoader\");\nimport AssetLoaderContext\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderContext\");\nimport AssetLoaderToken\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderToken\");\nimport URLRequest\t\t\t\t\t= require(\"awayjs-core/lib/net/URLRequest\");\nimport AssetEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/AssetEvent\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IOErrorEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/IOErrorEvent\");\nimport LoaderEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/LoaderEvent\");\nimport ParserEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/ParserEvent\");\nimport ParserBase\t\t\t\t\t= require(\"awayjs-core/lib/parsers/ParserBase\");\n\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LoaderInfo\t\t\t\t\t= require(\"awayjs-display/lib/base/LoaderInfo\");\n\n/**\n * The Loader class is used to load SWF files or image(JPG, PNG, or GIF)\n * files. Use the load() method to initiate loading. The loaded\n * display object is added as a child of the Loader object.\n *\n *

Use the URLLoader class to load text or binary data.

\n *\n *

The Loader class overrides the following methods that it inherits,\n * because a Loader object can only have one child display object - the\n * display object that it loads. Calling the following methods throws an\n * exception: addChild(), addChildAt(),\n * removeChild(), removeChildAt(), and\n * setChildIndex(). To remove a loaded display object, you must\n * remove the Loader object from its parent DisplayObjectContainer\n * child array.

\n *\n *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes\n * are not used in ActionScript 3.0. The Loader and URLLoader classes replace\n * them.

\n *\n *

When you use the Loader class, consider the Flash Player and Adobe AIR\n * security model:

\n *\n *
    \n *
  • You can load content from any accessible source.
  • \n *
  • Loading is not allowed if the calling SWF file is in a network\n * sandbox and the file to be loaded is local.
  • \n *
  • If the loaded content is a SWF file written with ActionScript 3.0, it\n * cannot be cross-scripted by a SWF file in another security sandbox unless\n * that cross-scripting arrangement was approved through a call to the\n * System.allowDomain() or the\n * System.allowInsecureDomain() method in the loaded content\n * file.
  • \n *
  • If the loaded content is an AVM1 SWF file(written using ActionScript\n * 1.0 or 2.0), it cannot be cross-scripted by an AVM2 SWF file(written using\n * ActionScript 3.0). However, you can communicate between the two SWF files\n * by using the LocalConnection class.
  • \n *
  • If the loaded content is an image, its data cannot be accessed by a\n * SWF file outside of the security sandbox, unless the domain of that SWF\n * file was included in a URL policy file at the origin domain of the\n * image.
  • \n *
  • Movie clips in the local-with-file-system sandbox cannot script movie\n * clips in the local-with-networking sandbox, and the reverse is also\n * prevented.
  • \n *
  • You cannot connect to commonly reserved ports. For a complete list of\n * blocked ports, see \"Restricting Networking APIs\" in the ActionScript 3.0\n * Developer's Guide.
  • \n *
\n *\n *

However, in AIR, content in the application security\n * sandbox(content installed with the AIR application) are not restricted by\n * these security limitations.

\n *\n *

For more information related to security, see the Flash Player Developer\n * Center Topic: Security.

\n *\n *

When loading a SWF file from an untrusted source(such as a domain other\n * than that of the Loader object's root SWF file), you may want to define a\n * mask for the Loader object, to prevent the loaded content(which is a child\n * of the Loader object) from drawing to portions of the Stage outside of that\n * mask, as shown in the following code:

\n */\nclass Loader extends DisplayObjectContainer\n{\n\t/**\n\t * Dispatched when any asset finishes parsing. Also see specific events for each\n\t * individual asset type (meshes, materials et c.)\n\t *\n\t * @eventType AssetEvent\n\t */\n\t//[Event(name=\"assetComplete\", type=\"AssetEvent\")]\n\n\n\t/**\n\t * Dispatched when a full resource (including dependencies) finishes loading.\n\t *\n\t * @eventType LoaderEvent\n\t */\n\t//[Event(name=\"resourceComplete\", type=\"LoaderEvent\")]\n\n\tprivate _loadingSessions:Array;\n\tprivate _useAssetLib:boolean;\n\tprivate _assetLibId:string;\n\tprivate _onResourceCompleteDelegate:Function;\n\tprivate _onAssetCompleteDelegate:Function;\n\n\tprivate _content:DisplayObject;\n\tprivate _contentLoaderInfo:LoaderInfo;\n\n\t/**\n\t * Contains the root display object of the SWF file or image(JPG, PNG, or\n\t * GIF) file that was loaded by using the load() or\n\t * loadBytes() methods.\n\t *\n\t * @throws SecurityError The loaded SWF file or image file belongs to a\n\t * security sandbox to which you do not have access.\n\t * For a loaded SWF file, you can avoid this situation\n\t * by having the file call the\n\t * Security.allowDomain() method or by\n\t * having the loading file specify a\n\t * loaderContext parameter with its\n\t * securityDomain property set to\n\t * SecurityDomain.currentDomain when you\n\t * call the load() or\n\t * loadBytes() method.\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * Returns a LoaderInfo object corresponding to the object being loaded.\n\t * LoaderInfo objects are shared between the Loader object and the loaded\n\t * content object. The LoaderInfo object supplies loading progress\n\t * information and statistics about the loaded file.\n\t *\n\t *

Events related to the load are dispatched by the LoaderInfo object\n\t * referenced by the contentLoaderInfo property of the Loader\n\t * object. The contentLoaderInfo property is set to a valid\n\t * LoaderInfo object, even before the content is loaded, so that you can add\n\t * event listeners to the object prior to the load.

\n\t *\n\t *

To detect uncaught errors that happen in a loaded SWF, use the\n\t * Loader.uncaughtErrorEvents property, not the\n\t * Loader.contentLoaderInfo.uncaughtErrorEvents property.

\n\t */\n\tpublic get contentLoaderInfo():LoaderInfo\n\t{\n\t\treturn this._contentLoaderInfo;\n\t}\n\n\t/**\n\t * Creates a Loader object that you can use to load files, such as SWF, JPEG,\n\t * GIF, or PNG files. Call the load() method to load the asset\n\t * as a child of the Loader instance. You can then add the Loader object to\n\t * the display list(for instance, by using the addChild()\n\t * method of a DisplayObjectContainer instance). The asset appears on the\n\t * Stage as it loads.\n\t *\n\t *

You can also use a Loader instance \"offlist,\" that is without adding it\n\t * to a display object container on the display list. In this mode, the\n\t * Loader instance might be used to load a SWF file that contains additional\n\t * modules of an application.

\n\t *\n\t *

To detect when the SWF file is finished loading, you can use the events\n\t * of the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object. At that\n\t * point, the code in the module SWF file can be executed to initialize and\n\t * start the module. In the offlist mode, a Loader instance might also be\n\t * used to load a SWF file that contains components or media assets. Again,\n\t * you can use the LoaderInfo object event notifications to detect when the\n\t * components are finished loading. At that point, the application can start\n\t * using the components and media assets in the library of the SWF file by\n\t * instantiating the ActionScript 3.0 classes that represent those components\n\t * and assets.

\n\t *\n\t *

To determine the status of a Loader object, monitor the following\n\t * events that the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object:

\n\t *\n\t *
    \n\t *
  • The open event is dispatched when loading begins.
  • \n\t *
  • The ioError or securityError event is\n\t * dispatched if the file cannot be loaded or if an error occured during the\n\t * load process.
  • \n\t *
  • The progress event fires continuously while the file is\n\t * being loaded.
  • \n\t *
  • The complete event is dispatched when a file completes\n\t * downloading, but before the loaded movie clip's methods and properties are\n\t * available.
  • \n\t *
  • The init event is dispatched after the properties and\n\t * methods of the loaded SWF file are accessible, so you can begin\n\t * manipulating the loaded SWF file. This event is dispatched before the\n\t * complete handler. In streaming SWF files, the\n\t * init event can occur significantly earlier than the\n\t * complete event. For most purposes, use the init\n\t * handler.
  • \n\t *
\n\t */\n\tconstructor(useAssetLibrary:boolean = true, assetLibraryId:string = null)\n\t{\n\t\tsuper();\n\n\t\tthis._loadingSessions = new Array();\n\t\tthis._useAssetLib = useAssetLibrary;\n\t\tthis._assetLibId = assetLibraryId;\n\n\t\tthis._onResourceCompleteDelegate = (event:LoaderEvent) => this.onResourceComplete(event);\n\t\tthis._onAssetCompleteDelegate = (event:AssetEvent) => this.onAssetComplete(event);\n\t}\n\n\t/**\n\t * Cancels a load() method operation that is currently in\n\t * progress for the Loader instance.\n\t *\n\t */\n\tpublic close()\n\t{\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\tlib.stopAllLoadingSessions();\n\t\t\tthis._loadingSessions = null;\n\t\t\treturn\n\t\t}\n\t\tvar i:number /*int*/;\n\t\tvar length:number /*int*/ = this._loadingSessions.length;\n\t\tfor (i = 0; i < length; i++) {\n\t\t\tthis.removeListeners(this._loadingSessions[i]);\n\t\t\tthis._loadingSessions[i].stop();\n\t\t\tthis._loadingSessions[i] = null;\n\t\t}\n\t\tthis._loadingSessions = null;\n\t}\n\n\t/**\n\t * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an\n\t * object that is a child of this Loader object. If you load an animated GIF\n\t * file, only the first frame is displayed. As the Loader object can contain\n\t * only a single child, issuing a subsequent load() request\n\t * terminates the previous request, if still pending, and commences a new\n\t * load.\n\t *\n\t *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a\n\t * loaded image is 8,191 pixels in width or height, and the total number of\n\t * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191\n\t * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and\n\t * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height\n\t * and 2,880 pixels in width.

\n\t *\n\t *

A SWF file or image loaded into a Loader object inherits the position,\n\t * rotation, and scale properties of the parent display objects of the Loader\n\t * object.

\n\t *\n\t *

Use the unload() method to remove movies or images loaded\n\t * with this method, or to cancel a load operation that is in progress.

\n\t *\n\t *

You can prevent a SWF file from using this method by setting the\n\t * allowNetworking parameter of the the object and\n\t * embed tags in the HTML page that contains the SWF\n\t * content.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t *

In Flash Player 10 and later, if you use a multipart Content-Type(for\n\t * example \"multipart/form-data\") that contains an upload(indicated by a\n\t * \"filename\" parameter in a \"content-disposition\" header within the POST\n\t * body), the POST operation is subject to the security rules applied to\n\t * uploads:

\n\t *\n\t *
    \n\t *
  • The POST operation must be performed in response to a user-initiated\n\t * action, such as a mouse click or key press.
  • \n\t *
  • If the POST operation is cross-domain(the POST target is not on the\n\t * same server as the SWF file that is sending the POST request), the target\n\t * server must provide a URL policy file that permits cross-domain\n\t * access.
  • \n\t *
\n\t *\n\t *

Also, for any multipart Content-Type, the syntax must be valid\n\t * (according to the RFC2046 standard). If the syntax appears to be invalid,\n\t * the POST operation is subject to the security rules applied to\n\t * uploads.

\n\t *\n\t *

For more information related to security, see the Flash Player\n\t * Developer Center Topic: Security.

\n\t *\n\t * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG\n\t * file to be loaded. A relative path must be relative to the\n\t * main SWF file. Absolute URLs must include the protocol\n\t * reference, such as http:// or file:///. Filenames cannot\n\t * include disk drive specifications.\n\t * @param context A LoaderContext object, which has properties that define\n\t * the following:\n\t *
    \n\t *
  • Whether or not to check for the existence of a policy\n\t * file upon loading the object
  • \n\t *
  • The ApplicationDomain for the loaded object
  • \n\t *
  • The SecurityDomain for the loaded object
  • \n\t *
  • The ImageDecodingPolicy for the loaded image\n\t * object
  • \n\t *
\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the loaded content remains in\n\t * its own security domain.

\n\t *\n\t *

For complete details, see the description of the\n\t * properties in the LoaderContext\n\t * class.

\n\t * @param ns An optional namespace string under which the file is to be\n\t * loaded, allowing the differentiation of two resources with\n\t * identical assets.\n\t * @param parser An optional parser object for translating the loaded data\n\t * into a usable resource. If not provided, AssetLoader will\n\t * attempt to auto-detect the file type.\n\t * @throws IOError The digest property of the\n\t * request object is not\n\t * null. You should only set the\n\t * digest property of a URLRequest\n\t * object when calling the\n\t * URLLoader.load() method when\n\t * loading a SWZ file(an Adobe platform\n\t * component).\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError The value of\n\t * LoaderContext.securityDomain\n\t * must be either null or\n\t * SecurityDomain.currentDomain.\n\t * This reflects the fact that you can only\n\t * place the loaded media in its natural\n\t * security sandbox or your own(the latter\n\t * requires a policy file).\n\t * @throws SecurityError Local SWF files may not set\n\t * LoaderContext.securityDomain to anything\n\t * other than null. It is not\n\t * permitted to import non-local media into a\n\t * local sandbox, or to place other local media\n\t * in anything other than its natural sandbox.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @throws SecurityError If the applicationDomain or\n\t * securityDomain properties of\n\t * the context parameter are from\n\t * a disallowed domain.\n\t * @throws SecurityError If a local SWF file is attempting to use the\n\t * securityDomain property of the\n\t * context parameter.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the file has completed loading. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event httpStatus Dispatched by the contentLoaderInfo\n\t * object when a network request is made over HTTP and\n\t * Flash Player can detect the HTTP status code.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * SWF file are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when an input or output error occurs that\n\t * causes a load operation to fail.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the loading operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is received while load operation\n\t * progresses.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if a SWF file in the local-with-filesystem\n\t * sandbox attempts to load content in the\n\t * local-with-networking sandbox, or vice versa.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic load(request:URLRequest, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.load(request, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.load(request, context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Loads from binary data stored in a ByteArray object.\n\t *\n\t *

The loadBytes() method is asynchronous. You must wait for\n\t * the \"init\" event before accessing the properties of a loaded object.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t * @param bytes A ByteArray object. The contents of the ByteArray can be\n\t * any of the file formats supported by the Loader class: SWF,\n\t * GIF, JPEG, or PNG.\n\t * @param context A LoaderContext object. Only the\n\t * applicationDomain property of the\n\t * LoaderContext object applies; the\n\t * checkPolicyFile and\n\t * securityDomain properties of the LoaderContext\n\t * object do not apply.\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the content is loaded into the\n\t * current security domain - a process referred to as \"import\n\t * loading\" in Flash Player security documentation.\n\t * Specifically, if the loading SWF file trusts the remote SWF\n\t * by incorporating the remote SWF into its code, then the\n\t * loading SWF can import it directly into its own security\n\t * domain.

\n\t *\n\t *

For more information related to security, see the Flash\n\t * Player Developer Center Topic: Security.

\n\t * @throws ArgumentError If the length property of the\n\t * ByteArray object is not greater than 0.\n\t * @throws IllegalOperationError If the checkPolicyFile or\n\t * securityDomain property of the\n\t * context parameter are non-null.\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError If the provided\n\t * applicationDomain property of\n\t * the context property is from a\n\t * disallowed domain.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the operation is complete. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * data are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when the runtime cannot parse the data in the\n\t * byte array.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is transfered in memory.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic loadData(data:any, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.loadData(data, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.loadData(data, '', context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Removes a child of this Loader object that was loaded by using the\n\t * load() method. The property of the associated\n\t * LoaderInfo object is reset to null. The child is not\n\t * necessarily destroyed because other objects might have references to it;\n\t * however, it is no longer a child of the Loader object.\n\t *\n\t *

As a best practice, before you unload a child SWF file, you should\n\t * explicitly close any streams in the child SWF file's objects, such as\n\t * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,\n\t * audio in the child SWF file might continue to play, even though the child\n\t * SWF file was unloaded. To close streams in the child SWF file, add an\n\t * event listener to the child that listens for the unload\n\t * event. When the parent calls Loader.unload(), the\n\t * unload event is dispatched to the child. The following code\n\t * shows how you might do this:

\n\t *
 public closeAllStreams(evt:Event) {\n\t * myNetStream.close(); mySound.close(); myNetConnection.close();\n\t * myLocalConnection.close(); }\n\t * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,\n\t * closeAllStreams);
\n\t *\n\t */\n\tpublic unload()\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Enables a specific parser.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClass The parser class to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParser(parserClass:Object)\n\t{\n\t\tAssetLoader.enableParser(parserClass);\n\t}\n\n\t/**\n\t * Enables a list of parsers.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClasses A Vector of parser classes to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParsers(parserClasses:Array)\n\t{\n\t\tAssetLoader.enableParsers(parserClasses);\n\t}\n\n\n\tprivate removeListeners(dispatcher:EventDispatcher)\n\t{\n\t\tdispatcher.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\tdispatcher.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\t}\n\n\tprivate onAssetComplete(event:AssetEvent)\n\t{\n\t\tthis.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Called when an error occurs during loading\n\t */\n\tprivate onLoadError(event:LoaderEvent):boolean\n\t{\n\t\tif (this.hasEventListener(IOErrorEvent.IO_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when a an error occurs during parsing\n\t */\n\tprivate onParseError(event:ParserEvent):boolean\n\t{\n\t\tif (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when the resource and all of its dependencies was retrieved.\n\t */\n\tprivate onResourceComplete(event:LoaderEvent)\n\t{\n\t\tthis._content = event.content;\n\n\t\tif (this._content)\n\t\t\tthis.addChild(this._content);\n\n\t\tthis.dispatchEvent(event);\n\t}\n}\n\nexport = Loader;", "import EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport SceneEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\nclass Scene extends EventDispatcher\n{\n\tprivate _expandedPartitions:Array = new Array();\n\tprivate _partitions:Array = new Array();\n\n\tpublic _iSceneGraphRoot:DisplayObjectContainer;\n\tpublic _iCollectionMark = 0;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iSceneGraphRoot = new DisplayObjectContainer();\n\n\t\tthis._iSceneGraphRoot._iSetScene(this);\n\t\tthis._iSceneGraphRoot._iIsRoot = true;\n\t\tthis._iSceneGraphRoot.partition = new Partition(new NodeBase());\n\t}\n\n\tpublic traversePartitions(traverser:ICollector)\n\t{\n\t\tvar i:number = 0;\n\t\tvar len:number = this._partitions.length;\n\n\t\ttraverser.scene = this;\n\n\t\twhile (i < len) {\n\t\t\tthis._iCollectionMark++;\n\t\t\tthis._partitions[i++].traverse(traverser);\n\t\t}\n\t}\n\n\tpublic get partition():Partition\n\t{\n\t\treturn this._iSceneGraphRoot.partition;\n\t}\n\n\tpublic set partition(value:Partition)\n\t{\n\t\tthis._iSceneGraphRoot.partition = value;\n\n\t\tthis.dispatchEvent(new SceneEvent(SceneEvent.PARTITION_CHANGED, this._iSceneGraphRoot));\n\t}\n\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._iSceneGraphRoot.contains(child);\n\t}\n\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.addChild(child);\n\t}\n\n\tpublic removeChild(child:DisplayObject)\n\t{\n\t\tthis._iSceneGraphRoot.removeChild(child);\n\t}\n\n\tpublic removeChildAt(index:number)\n\t{\n\t\tthis._iSceneGraphRoot.removeChildAt(index);\n\t}\n\n\n\tpublic getChildAt(index:number):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.getChildAt(index);\n\t}\n\n\tpublic get numChildren():number\n\t{\n\t\treturn this._iSceneGraphRoot.numChildren;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iRegisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iMarkForUpdate(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.push(partition);\n\n\t\t//ensure duplicates are not found in partitions array\n\t\tif (this._partitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.push(partition);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iUnregisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iRemoveEntity(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.splice(this._expandedPartitions.indexOf(partition), 1);\n\n\t\t//if no more partition references found, remove from partitions array\n\t\tif (this._expandedPartitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.splice(this._partitions.indexOf(partition), 1);\n\t}\n}\n\nexport = Scene;", @@ -196,16 +198,16 @@ "import Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LookAtController\t\t\t= require(\"awayjs-display/lib/controllers/LookAtController\");\n\n/**\n * Uses spring physics to animate the target object towards a position that is\n * defined as the lookAtTarget object's position plus the vector defined by the\n * positionOffset property.\n */\nclass SpringController extends LookAtController\n{\n\tprivate _velocity:Vector3D;\n\tprivate _dv:Vector3D;\n\tprivate _stretch:Vector3D;\n\tprivate _force:Vector3D;\n\tprivate _acceleration:Vector3D;\n\tprivate _desiredPosition:Vector3D;\n\n\t/**\n\t * Stiffness of the spring, how hard is it to extend. The higher it is, the more \"fixed\" the cam will be.\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic stiffness:number;\n\n\t/**\n\t * Damping is the spring internal friction, or how much it resists the \"boinggggg\" effect. Too high and you'll lose it!\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic damping:number;\n\n\t/**\n\t * Mass of the camera, if over 120 and it'll be very heavy to move.\n\t */\n\tpublic mass:number;\n\n\t/**\n\t * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.\n\t */\n\tpublic positionOffset:Vector3D = new Vector3D(0, 500, -1000);\n\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, stiffness:number = 1, mass:number = 40, damping:number = 4)\n\t{\n\t\tsuper(targetObject, lookAtObject);\n\n\t\tthis.stiffness = stiffness;\n\t\tthis.damping = damping;\n\t\tthis.mass = mass;\n\n\t\tthis._velocity = new Vector3D();\n\t\tthis._dv = new Vector3D();\n\t\tthis._stretch = new Vector3D();\n\t\tthis._force = new Vector3D();\n\t\tthis._acceleration = new Vector3D();\n\t\tthis._desiredPosition = new Vector3D();\n\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tvar offs:Vector3D;\n\n\t\tif (!this._pLookAtObject || !this._pTargetObject)\n\t\t\treturn;\n\n\t\toffs = this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);\n\t\tthis._desiredPosition.x = this._pLookAtObject.x + offs.x;\n\t\tthis._desiredPosition.y = this._pLookAtObject.y + offs.y;\n\t\tthis._desiredPosition.z = this._pLookAtObject.z + offs.z;\n\n\t\tthis._stretch = this._pTargetObject.transform.position.add(this._desiredPosition);\n\t\tthis._stretch.scaleBy(-this.stiffness);\n\n\t\tthis._dv.copyFrom(this._velocity);\n\t\tthis._dv.scaleBy(this.damping);\n\n\t\tthis._force.x = this._stretch.x - this._dv.x;\n\t\tthis._force.y = this._stretch.y - this._dv.y;\n\t\tthis._force.z = this._stretch.z - this._dv.z;\n\n\t\tthis._acceleration.copyFrom(this._force);\n\t\tthis._acceleration.scaleBy(1/this.mass);\n\n\t\tthis._velocity.incrementBy(this._acceleration);\n\n\t\tthis._pTargetObject.transform.position = this._pTargetObject.transform.position.add(this._velocity);\n\n\t\tsuper.update();\n\t}\n}\n\nexport = SpringController;", "class ContextMode\n{\n\tstatic AUTO:string = \"auto\";\n\tstatic WEBGL:string = \"webgl\";\n\tstatic FLASH:string = \"flash\";\n\tstatic NATIVE:string = \"native\";\n}\n\nexport = ContextMode;", "import Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\n/**\n *\n * @class away.base.IContext\n */\ninterface IContext\n{\n\tcontainer:HTMLElement;\n\n\tclear(red?: number, green?: number, blue?: number, alpha?: number, depth?: number, stencil?: number, mask?: number);\n\n\tconfigureBackBuffer(width:number, height:number, antiAlias:number, enableDepthAndStencil?:boolean);\n\n\tdispose();\n\n\tpresent();\n\n\tsetScissorRectangle(rect:Rectangle);\n}\n\nexport = IContext;", - "import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialEvent\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * The Billboard class represents display objects that represent bitmap images.\n * These can be images that you load with the flash.Assets or\n * flash.display.Loader classes, or they can be images that you\n * create with the Billboard() constructor.\n *\n *

The Billboard() constructor allows you to create a Billboard\n * object that contains a reference to a BitmapData object. After you create a\n * Billboard object, use the addChild() or addChildAt()\n * method of the parent DisplayObjectContainer instance to place the bitmap on\n * the display list.

\n *\n *

A Billboard object can share its BitmapData reference among several Billboard\n * objects, independent of translation or rotation properties. Because you can\n * create multiple Billboard objects that reference the same BitmapData object,\n * multiple display objects can use the same complex BitmapData object without\n * incurring the memory overhead of a BitmapData object for each display\n * object instance.

\n *\n *

A BitmapData object can be drawn to the screen by a Billboard object in one\n * of two ways: by using the default hardware renderer with a single hardware surface,\n * or by using the slower software renderer when 3D acceleration is not available.

\n *\n *

If you would prefer to perform a batch rendering command, rather than using a\n * single surface for each Billboard object, you can also draw to the screen using the\n * drawTiles() or drawTriangles() methods which are\n * available to flash.display.Tilesheet and flash.display.Graphics\n * objects.

\n *\n *

Note: The Billboard class is not a subclass of the InteractiveObject\n * class, so it cannot dispatch mouse events. However, you can use the\n * addEventListener() method of the display object container that\n * contains the Billboard object.

\n */\n\nclass Billboard extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _billboardWidth:number;\n\tprivate _billboardHeight:number;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.BILLBOARD;\n\t}\n\n\t/**\n\t * The BitmapData object being referenced.\n\t */\n\tpublic bitmapData:BitmapData; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get billboardHeight():number\n\t{\n\t\treturn this._billboardHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get billboardWidth():number\n\t{\n\t\treturn this._billboardWidth;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t * Controls whether or not the Billboard object is snapped to the nearest pixel.\n\t * This value is ignored in the native and HTML5 targets.\n\t * The PixelSnapping class includes possible values:\n\t *
    \n\t *
  • PixelSnapping.NEVER - No pixel snapping occurs.
  • \n\t *
  • PixelSnapping.ALWAYS - The image is always snapped to\n\t * the nearest pixel, independent of transformation.
  • \n\t *
  • PixelSnapping.AUTO - The image is snapped to the\n\t * nearest pixel if it is drawn with no rotation or skew and it is drawn at a\n\t * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the\n\t * bitmap image is drawn at 100% scale, snapped to the nearest pixel.\n\t * When targeting Flash Player, this value allows the image to be drawn as fast\n\t * as possible using the internal vector renderer.
  • \n\t *
\n\t */\n\tpublic pixelSnapping:string; //TODO\n\n\t/**\n\t * Controls whether or not the bitmap is smoothed when scaled. If\n\t * true, the bitmap is smoothed when scaled. If\n\t * false, the bitmap is not smoothed when scaled.\n\t */\n\tpublic smoothing:boolean; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\tconstructor(material:MaterialBase, pixelSnapping:string = \"auto\", smoothing:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._billboardWidth = material.width;\n\t\tthis._billboardHeight = material.height;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(0, 0, 0, this._billboardWidth, this._billboardHeight, 0);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testBillboardCollision(this, this._pPickingCollisionVO, shortestCollisionDistance);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis._billboardWidth = this._material.width;\n\t\tthis._billboardHeight = this._material.height;\n\n\t\tthis._pBoundsInvalid = true;\n\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyBillboard(this);\n\t}\n}\n\nexport = Billboard;", - "import BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ProjectionEvent\t\t\t= require(\"awayjs-core/lib/events/ProjectionEvent\");\nimport IProjection\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CameraEvent\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport CameraNode\t\t\t\t= require(\"awayjs-display/lib/partition/CameraNode\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\nclass Camera extends DisplayObjectContainer implements IEntity\n{\n\tprivate _viewProjection:Matrix3D = new Matrix3D();\n\tprivate _viewProjectionDirty:Boolean = true;\n\tprivate _projection:IProjection;\n\tprivate _frustumPlanes:Array;\n\tprivate _frustumPlanesDirty:Boolean = true;\n\tprivate _onProjectionMatrixChangedDelegate:(event:ProjectionEvent) => void;\n\n\tconstructor(projection:IProjection = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._onProjectionMatrixChangedDelegate = (event:ProjectionEvent) => this.onProjectionMatrixChanged(event);\n\n\t\tthis._projection = projection || new PerspectiveProjection();\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\n\t\tthis._frustumPlanes = [];\n\n\t\tfor (var i:number = 0; i < 6; ++i)\n\t\t\tthis._frustumPlanes[i] = new Plane3D();\n\n\t\tthis.z = -1000;\n\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new CameraNode(this);\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CAMERA;\n\t}\n\n\tprivate onProjectionMatrixChanged(event:ProjectionEvent)\n\t{\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t\tthis.dispatchEvent(event);\n\t}\n\n\tpublic get frustumPlanes():Array\n\t{\n\t\tif (this._frustumPlanesDirty)\n\t\t\tthis.updateFrustum();\n\n\t\treturn this._frustumPlanes;\n\t}\n\n\tprivate updateFrustum()\n\t{\n\t\tvar a:number, b:number, c:number;\n\t\t//var d : Number;\n\t\tvar c11:number, c12:number, c13:number, c14:number;\n\t\tvar c21:number, c22:number, c23:number, c24:number;\n\t\tvar c31:number, c32:number, c33:number, c34:number;\n\t\tvar c41:number, c42:number, c43:number, c44:number;\n\t\tvar p:Plane3D;\n\t\tvar raw:number[] = new Array(16);\n\t\t;//new Array(16 );away.utils.Matrix3DUtils.RAW_DATA_CONTAINER;//[];\n\t\tvar invLen:number;\n\t\tthis.viewProjection.copyRawDataTo(raw);\n\n\t\tc11 = raw[0];\n\t\tc12 = raw[4];\n\t\tc13 = raw[8];\n\t\tc14 = raw[12];\n\t\tc21 = raw[1];\n\t\tc22 = raw[5];\n\t\tc23 = raw[9];\n\t\tc24 = raw[13];\n\t\tc31 = raw[2];\n\t\tc32 = raw[6];\n\t\tc33 = raw[10];\n\t\tc34 = raw[14];\n\t\tc41 = raw[3];\n\t\tc42 = raw[7];\n\t\tc43 = raw[11];\n\t\tc44 = raw[15];\n\n\t\t// left plane\n\t\tp = this._frustumPlanes[0];\n\t\ta = c41 + c11;\n\t\tb = c42 + c12;\n\t\tc = c43 + c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c14)*invLen;\n\n\t\t// right plane\n\t\tp = this._frustumPlanes[1];\n\t\ta = c41 - c11;\n\t\tb = c42 - c12;\n\t\tc = c43 - c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c14 - c44)*invLen;\n\n\t\t// bottom\n\t\tp = this._frustumPlanes[2];\n\t\ta = c41 + c21;\n\t\tb = c42 + c22;\n\t\tc = c43 + c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c24)*invLen;\n\n\t\t// top\n\t\tp = this._frustumPlanes[3];\n\t\ta = c41 - c21;\n\t\tb = c42 - c22;\n\t\tc = c43 - c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c24 - c44)*invLen;\n\n\t\t// near\n\t\tp = this._frustumPlanes[4];\n\t\ta = c31;\n\t\tb = c32;\n\t\tc = c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -c34*invLen;\n\n\t\t// far\n\t\tp = this._frustumPlanes[5];\n\t\ta = c41 - c31;\n\t\tb = c42 - c32;\n\t\tc = c43 - c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c34 - c44)*invLen;\n\n\t\tthis._frustumPlanesDirty = false;\n\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t\tthis._pBounds.nullify();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get projection():IProjection\n\t{\n\t\treturn this._projection;\n\t}\n\n\tpublic set projection(value:IProjection)\n\t{\n\t\tif (this._projection == value)\n\t\t\treturn;\n\n\t\tif (!value)\n\t\t\tthrow new Error(\"Projection cannot be null!\");\n\n\t\tthis._projection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis._projection = value;\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis.dispatchEvent(new CameraEvent(CameraEvent.PROJECTION_CHANGED, this));\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get viewProjection():Matrix3D\n\t{\n\t\tif (this._viewProjectionDirty) {\n\t\t\tthis._viewProjection.copyFrom(this.inverseSceneTransform);\n\t\t\tthis._viewProjection.append(this._projection.matrix);\n\t\t\tthis._viewProjectionDirty = false;\n\t\t}\n\n\t\treturn this._viewProjection;\n\t}\n\n\t/**\n\t * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right.\n\t * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The ray from the camera to the scene space position of the given screen coordinates.\n\t */\n\tpublic getRay(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.deltaTransformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\t/**\n\t * Calculates the normalised position in screen space of the given scene position.\n\t *\n\t * @param point3d the position vector of the scene coordinates to be projected.\n\t * @return The normalised screen position of the given scene coordinates.\n\t */\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\treturn this._projection.project(this.inverseSceneTransform.transformVector(point3d));\n\t}\n\n\t/**\n\t * Calculates the scene position of the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.\n\t * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The scene position of the given screen coordinates.\n\t */\n\tpublic unproject(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.transformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = Camera;", - "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLightNode\t\t\t= require(\"awayjs-display/lib/partition/DirectionalLightNode\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass DirectionalLight extends LightBase implements IEntity\n{\n\tprivate _direction:Vector3D;\n\tprivate _tmpLookAt:Vector3D;\n\tprivate _sceneDirection:Vector3D;\n\tprivate _projAABBPoints:Array;\n\n\tconstructor(xDir:number = 0, yDir:number = -1, zDir:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.direction = new Vector3D(xDir, yDir, zDir);\n\n\t\tthis._sceneDirection = new Vector3D();\n\t}\n\n\tpublic get sceneDirection():Vector3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._sceneDirection;\n\t}\n\n\tpublic get direction():Vector3D\n\t{\n\t\treturn this._direction;\n\t}\n\n\tpublic set direction(value:Vector3D)\n\t{\n\t\tthis._direction = value;\n\n\t\tif (!this._tmpLookAt)\n\t\t\tthis._tmpLookAt = new Vector3D();\n\n\t\tthis._tmpLookAt.x = this.x + this._direction.x;\n\t\tthis._tmpLookAt.y = this.y + this._direction.y;\n\t\tthis._tmpLookAt.z = this.z + this._direction.z;\n\n\t\tthis.lookAt(this._tmpLookAt);\n\t}\n\n\t/**\n\t *\n\t * @returns {away.bounds.NullBounds}\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//directional lights are to be considered global, hence always in view\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t}\n\n\t//@override\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tsuper.pUpdateSceneTransform();\n\t\tthis.sceneTransform.copyColumnTo(2, this._sceneDirection);\n\t\tthis._sceneDirection.normalize();\n\t}\n\n\t//@override\n\tpublic pCreateShadowMapper():DirectionalShadowMapper\n\t{\n\t\treturn new DirectionalShadowMapper();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new DirectionalLightNode(this);\n\t}\n\n\t//override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tif (!this._projAABBPoints)\n\t\t\tthis._projAABBPoints = [];\n\n\t\tm.transformVectors(bounds.aabbPoints, this._projAABBPoints);\n\n\t\tvar xMin:number = Infinity, xMax:number = -Infinity;\n\t\tvar yMin:number = Infinity, yMax:number = -Infinity;\n\t\tvar zMin:number = Infinity, zMax:number = -Infinity;\n\t\tvar d:number;\n\t\tfor (var i:number = 0; i < 24;) {\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < xMin)\n\t\t\t\txMin = d;\n\n\t\t\tif (d > xMax)\n\t\t\t\txMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < yMin)\n\t\t\t\tyMin = d;\n\n\t\t\tif (d > yMax)\n\t\t\t\tyMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < zMin)\n\t\t\t\tzMin = d;\n\n\t\t\tif (d > zMax)\n\t\t\t\tzMax = d;\n\t\t}\n\n\t\tvar invXRange:number = 1/(xMax - xMin);\n\t\tvar invYRange:number = 1/(yMax - yMin);\n\t\tvar invZRange:number = 1/(zMax - zMin);\n\t\traw[0] = 2*invXRange;\n\t\traw[5] = 2*invYRange;\n\t\traw[10] = invZRange;\n\t\traw[12] = -(xMax + xMin)*invXRange;\n\t\traw[13] = -(yMax + yMin)*invYRange;\n\t\traw[14] = -zMin*invZRange;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\t\traw[15] = 1;\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = DirectionalLight;", - "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport Transform\t\t\t\t\t= require(\"awayjs-display/lib/base/Transform\");\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport ControllerBase\t\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IPickingCollider\t\t\t\t= require(\"awayjs-display/lib/pick/IPickingCollider\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\ninterface IEntity extends IAsset\n{\n\tx:number;\n\ty:number;\n\tz:number;\n\n\trotationX:number;\n\trotationY:number;\n\trotationZ:number;\n\n\tscaleX:number;\n\tscaleY:number;\n\tscaleZ:number;\n\n\t/**\n\t *\n\t */\n\tbounds:BoundingVolumeBase;\n\n\t/**\n\t *\n\t */\n\tcastsShadows:boolean;\n\n\t/**\n\t *\n\t */\n\tinverseSceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tpartitionNode:EntityNode;\n\n\t/**\n\t *\n\t */\n\tpickingCollider:IPickingCollider;\n\n\t/**\n\t *\n\t */\n\ttransform:Transform;\n\n\t/**\n\t *\n\t */\n\tscene:Scene;\n\n\t/**\n\t *\n\t */\n\tscenePosition:Vector3D;\n\n\t/**\n\t *\n\t */\n\tsceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tworldBounds:BoundingVolumeBase;\n\n\t/**\n\t *\n\t */\n\tzOffset:number\n\n\t/**\n\t *\n\t */\n\tisIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean;\n\n\t/**\n\t *\n\t *\n\t * @param target\n\t * @param upAxis\n\t */\n\tlookAt(target:Vector3D, upAxis?:Vector3D);\n\n\t/**\n\t * @internal\n\t */\n\t_iPickingCollisionVO:PickingCollisionVO;\n\n\t/**\n\t * @internal\n\t */\n\t_iController:ControllerBase;\n\n\t/**\n\t * @internal\n\t */\n\t_iAssignedPartition:Partition;\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\t_iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean;\n\n\t/**\n\t * @internal\n\t */\n\t_iIsMouseEnabled():boolean\n\n\t/**\n\t * @internal\n\t */\n\t_iIsVisible():boolean\n\n\t_iInternalUpdate()\n\n\t/**\n\t * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render.\n\t * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would\n\t * return the scene transform.\n\t */\n\tgetRenderSceneTransform(camera:Camera):Matrix3D;\n\n\t/**\n\t *\n\t * @param renderer\n\t * @private\n\t */\n\t_iCollectRenderables(renderer:IRenderer);\n}\n\nexport = IEntity;", - "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport LightProbeNode\t\t\t\t= require(\"awayjs-display/lib/partition/LightProbeNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nclass LightProbe extends LightBase implements IEntity\n{\n\tprivate _diffuseMap:CubeTextureBase;\n\tprivate _specularMap:CubeTextureBase;\n\n\tconstructor(diffuseMap:CubeTextureBase, specularMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._diffuseMap = diffuseMap;\n\t\tthis._specularMap = specularMap;\n\t}\n\n\tpublic get diffuseMap():CubeTextureBase\n\t{\n\t\treturn this._diffuseMap;\n\t}\n\n\tpublic set diffuseMap(value:CubeTextureBase)\n\t{\n\t\tthis._diffuseMap = value;\n\t}\n\n\tpublic get specularMap():CubeTextureBase\n\t{\n\t\treturn this._specularMap;\n\t}\n\n\tpublic set specularMap(value:CubeTextureBase)\n\t{\n\t\tthis._specularMap = value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new LightProbeNode(this);\n\t}\n\n\t//@override\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t//@override\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t//@override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new Error(\"Object projection matrices are not supported for LightProbe objects!\");\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = LightProbe;", - "import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Line Segment primitive.\n */\nclass LineSegment extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\tpublic _startPosition:Vector3D;\n\tpublic _endPosition:Vector3D;\n\tpublic _halfThickness:number;\n\n\n\t/**\n\t * Defines the animator of the line segment. Act on the line segment's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SEGMENT;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPostion():Vector3D\n\t{\n\t\treturn this._startPosition;\n\t}\n\n\tpublic set startPosition(value:Vector3D)\n\t{\n\t\tif (this._startPosition == value)\n\t\t\treturn;\n\n\t\tthis._startPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPosition():Vector3D\n\t{\n\t\treturn this._endPosition;\n\t}\n\n\tpublic set endPosition(value:Vector3D)\n\t{\n\t\tif (this._endPosition == value)\n\t\t\treturn;\n\n\t\tthis._endPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():number\n\t{\n\t\treturn this._halfThickness*2;\n\t}\n\n\tpublic set thickness(value:number)\n\t{\n\t\tif (this._halfThickness == value)\n\t\t\treturn;\n\n\t\tthis._halfThickness = value*0.5;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a line segment\n\t *\n\t * @param startPosition Start position of the line segment\n\t * @param endPosition Ending position of the line segment\n\t * @param thickness Thickness of the line\n\t */\n\tconstructor(material:MaterialBase, startPosition:Vector3D, endPosition:Vector3D, thickness:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._startPosition = startPosition;\n\t\tthis._endPosition = endPosition;\n\t\tthis._halfThickness = thickness*0.5;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._startPosition = null;\n\t\tthis._endPosition = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(this._startPosition.x, this._startPosition.y, this._startPosition.z, this._endPosition.x, this._endPosition.y, this._endPosition.z);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRenderableUpdate()\n\t{\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = LineSegment;", - "import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport TriangleSubGeometry\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation\n * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts\n * of the geometry to be assigned different materials.\n */\nclass Mesh extends DisplayObjectContainer implements IEntity\n{\n\tprivate _uvTransform:UVTransform;\n\n\tprivate _subMeshes:Array;\n\tprivate _geometry:Geometry;\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\tprivate _castsShadows:boolean = true;\n\tprivate _shareAnimationGeometry:boolean = true;\n\n\tprivate _onGeometryBoundsInvalidDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryAddedDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryRemovedDelegate:(event:GeometryEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Default value is null.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\tpublic set animator(value:IAnimator)\n\t{\n\t\tif (this._animator)\n\t\t\tthis._animator.removeOwner(this);\n\n\t\tthis._animator = value;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\t// cause material to be unregistered and registered again to work with the new animation type (if possible)\n\t\t\tif (subMesh.material) {\n\t\t\t\tsubMesh.material.iRemoveOwner(subMesh);\n\t\t\t\tsubMesh.material.iAddOwner(subMesh);\n\t\t\t}\n\n\t\t\t//invalidate any existing renderables in case they need to pull new geometry\n\t\t\tsubMesh._iInvalidateRenderableGeometry();\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tthis._animator.addOwner(this);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MESH;\n\t}\n\n\t/**\n\t * Indicates whether or not the Mesh can cast shadows. Default value is true.\n\t */\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tthis._castsShadows = value;\n\t}\n\n\t/**\n\t * The geometry used by the mesh that provides it with its shape.\n\t */\n\tpublic get geometry():Geometry\n\t{\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\tpublic set geometry(value:Geometry)\n\t{\n\t\tvar i:number;\n\n\t\tif (this._geometry) {\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tfor (i = 0; i < this._subMeshes.length; ++i)\n\t\t\t\tthis._subMeshes[i].dispose();\n\n\t\t\tthis._subMeshes.length = 0;\n\t\t}\n\n\t\tthis._geometry = value;\n\n\t\tif (this._geometry) {\n\n\t\t\tthis._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\n\t\t\tfor (i = 0; i < subGeoms.length; ++i)\n\t\t\t\tthis.addSubMesh(subGeoms[i]);\n\t\t}\n\t}\n\n\t/**\n\t * The material with which to render the Mesh.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tvar i:number;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iRemoveOwner(subMesh);\n\n\t\tthis._material = value;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iAddOwner(subMesh);\n\t}\n\n\t/**\n\t * Indicates whether or not the mesh share the same animation geometry.\n\t */\n\tpublic get shareAnimationGeometry():boolean\n\t{\n\t\treturn this._shareAnimationGeometry;\n\t}\n\n\tpublic set shareAnimationGeometry(value:boolean)\n\t{\n\t\tthis._shareAnimationGeometry = value;\n\t}\n\n\t/**\n\t * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's\n\t * material.\n\t */\n\tpublic get subMeshes():Array\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._subMeshes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a new Mesh object.\n\t *\n\t * @param geometry The geometry used by the mesh that provides it with its shape.\n\t * @param material [optional] The material with which to render the Mesh.\n\t */\n\tconstructor(geometry:Geometry, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._subMeshes = new Array();\n\n\t\tthis._onGeometryBoundsInvalidDelegate = (event:GeometryEvent) => this.onGeometryBoundsInvalid(event);\n\t\tthis._onSubGeometryAddedDelegate = (event:GeometryEvent) => this.onSubGeometryAdded(event);\n\t\tthis._onSubGeometryRemovedDelegate = (event:GeometryEvent) => this.onSubGeometryRemoved(event);\n\n\t\t//this should never happen, but if people insist on trying to create their meshes before they have geometry to fill it, it becomes necessary\n\t\tthis.geometry = geometry || new Geometry();\n\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic bakeTransformations()\n\t{\n\t\tthis.geometry.applyTransformation(this._iMatrix3D);\n\t\tthis._iMatrix3D.identity();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis.material = null;\n\t\tthis.geometry = null;\n\t}\n\n\t/**\n\t * Disposes mesh including the animator and children. This is a merely a convenience method.\n\t * @return\n\t */\n\tpublic disposeWithAnimatorAndChildren()\n\t{\n\t\tthis.disposeWithChildren();\n\n\t\t if (this._animator)\n\t\t\tthis._animator.dispose();\n\t}\n\n\t/**\n\t * Clones this Mesh instance along with all it's children, while re-using the same\n\t * material, geometry and animation set. The returned result will be a copy of this mesh,\n\t * containing copies of all of it's children.\n\t *\n\t * Properties that are re-used (i.e. not cloned) by the new copy include name,\n\t * geometry, and material. Properties that are cloned or created anew for the copy\n\t * include subMeshes, children of the mesh, and the animator.\n\t *\n\t * If you want to copy just the mesh, reusing it's geometry and material while not\n\t * cloning it's children, the simplest way is to create a new mesh manually:\n\t *\n\t * \n\t * var clone : Mesh = new Mesh(original.geometry, original.material);\n\t * \n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:Mesh = new Mesh(this._geometry, this._material);\n\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.pivot = this.pivot;\n\t\tclone.partition = this.partition;\n\t\tclone.bounds = this.bounds.clone();\n\n\n\t\tclone.name = this.name;\n\t\tclone.castsShadows = this.castsShadows;\n\t\tclone.shareAnimationGeometry = this.shareAnimationGeometry;\n\t\tclone.mouseEnabled = this.mouseEnabled;\n\t\tclone.mouseChildren = this.mouseChildren;\n\t\t//this is of course no proper cloning\n\t\t//maybe use this instead?: http://blog.another-d-mention.ro/programming/how-to-clone-duplicate-an-object-in-actionscript-3/\n\t\tclone.extra = this.extra;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone._subMeshes[i].material = this._subMeshes[i]._iGetExplicitMaterial();\n\n\n\t\tlen = this.numChildren;\n\t\tvar obj:any;\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\tobj = this.getChildAt(i).clone();\n\t\t\tclone.addChild( obj);\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tclone.animator = this._animator.clone();\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param subGeometry\n\t * @returns {SubMeshBase}\n\t */\n\tpublic getSubMeshFromSubGeometry(subGeometry:SubGeometryBase):ISubMesh\n\t{\n\t\treturn this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)];\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tvar i:number, j:number, p:number;\n\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\t\tvar subGeom:SubGeometryBase;\n\t\tvar boundingPositions:Array;\n\t\tvar numSubGeoms:number = subGeoms.length;\n\t\tvar minX:number, minY:number, minZ:number;\n\t\tvar maxX:number, maxY:number, maxZ:number;\n\n\t\tif (numSubGeoms > 0) {\n\t\t\ti = 0;\n\t\t\tsubGeom = subGeoms[0];\n\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\tminX = maxX = boundingPositions[i];\n\t\t\tminY = maxY = boundingPositions[i + 1];\n\t\t\tminZ = maxZ = boundingPositions[i + 2];\n\n\t\t\tj = numSubGeoms;\n\t\t\twhile (j--) {\n\t\t\t\tsubGeom = subGeoms[j];\n\t\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\t\ti = boundingPositions.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tp = boundingPositions[i];\n\t\t\t\t\tif (p < minX)\n\t\t\t\t\t\tminX = p;\n\t\t\t\t\telse if (p > maxX)\n\t\t\t\t\t\tmaxX = p;\n\n\t\t\t\t\tp = boundingPositions[i + 1];\n\n\t\t\t\t\tif (p < minY)\n\t\t\t\t\t\tminY = p;\n\t\t\t\t\telse if (p > maxY)\n\t\t\t\t\t\tmaxY = p;\n\n\t\t\t\t\tp = boundingPositions[i + 2];\n\n\t\t\t\t\tif (p < minZ)\n\t\t\t\t\t\tminZ = p;\n\t\t\t\t\telse if (p > maxZ)\n\t\t\t\t\t\tmaxZ = p;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._pBounds.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);\n\t\t} else {\n\t\t\tthis._pBounds.fromExtremes(0, 0, 0, 0, 0, 0);\n\t\t}\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @private\n\t */\n\tprivate onGeometryBoundsInvalid(event:GeometryEvent)\n\t{\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * Called when a SubGeometry was added to the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryAdded(event:GeometryEvent)\n\t{\n\t\tthis.addSubMesh(event.subGeometry);\n\t}\n\n\t/**\n\t * Called when a SubGeometry was removed from the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryRemoved(event:GeometryEvent)\n\t{\n\t\tvar subMesh:ISubMesh;\n\t\tvar subGeom:SubGeometryBase = event.subGeometry;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar i:number;\n\n\t\t// Important! This has to be done here, and not delayed until the\n\t\t// next render loop, since this may be caused by the geometry being\n\t\t// rebuilt IN THE RENDER LOOP. Invalidating and waiting will delay\n\t\t// it until the NEXT RENDER FRAME which is probably not desirable.\n\t\tfor (i = 0; i < len; ++i) {\n\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\tif (subMesh.subGeometry == subGeom) {\n\t\t\t\tsubMesh.dispose();\n\n\t\t\t\tthis._subMeshes.splice(i, 1);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t--len;\n\t\tfor (; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iIndex = i;\n\t}\n\n\t/**\n\t * Adds a SubMeshBase wrapping a SubGeometry.\n\t *\n\t * @param subGeometry\n\t */\n\tprivate addSubMesh(subGeometry:SubGeometryBase)\n\t{\n\t\tvar SubMeshClass:ISubMeshClass = subGeometry.subMeshClass;\n\n\t\tvar subMesh:ISubMesh = new SubMeshClass(subGeometry, this, null);\n\t\tvar len:number = this._subMeshes.length;\n\n\t\tsubMesh._iIndex = len;\n\n\t\tthis._subMeshes[len] = subMesh;\n\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testMeshCollision(this, this._pPickingCollisionVO, shortestCollisionDistance, findClosest);\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tvar len:number /*uint*/ = this._subMeshes.length;\n\t\tfor (var i:number /*uint*/ = 0; i < len; i++)\n\t\t\tthis._subMeshes[i]._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iInvalidateRenderableGeometries()\n\t{\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iInvalidateRenderableGeometry();\n\t}\n}\n\nexport = Mesh;", - "import BoundingSphere\t\t\t\t= require(\"awayjs-core/lib/bounds/BoundingSphere\");\nimport BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Box\t\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Box\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport PointLightNode\t\t\t\t= require(\"awayjs-display/lib/partition/PointLightNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeMapShadowMapper\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper\");\n\nclass PointLight extends LightBase implements IEntity\n{\n\tpublic _pRadius:number = 90000;\n\tpublic _pFallOff:number = 100000;\n\tpublic _pFallOffFactor:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._pFallOffFactor = 1/(this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t}\n\n\tpublic pCreateShadowMapper():CubeMapShadowMapper\n\t{\n\t\treturn new CubeMapShadowMapper();\n\t}\n\n\tpublic get radius():number\n\t{\n\t\treturn this._pRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pRadius = value;\n\n\t\tif (this._pRadius < 0) {\n\t\t\tthis._pRadius = 0;\n\t\t} else if (this._pRadius > this._pFallOff) {\n\t\t\tthis._pFallOff = this._pRadius;\n\t\t\tthis.pInvalidateBounds();\n\t\t}\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius );\n\t}\n\n\tpublic iFallOffFactor():number\n\t{\n\t\treturn this._pFallOffFactor;\n\t}\n\n\tpublic get fallOff():number\n\t{\n\t\treturn this._pFallOff;\n\t}\n\n\tpublic set fallOff(value:number)\n\t{\n\t\tthis._pFallOff = value;\n\n\t\tif (this._pFallOff < 0)\n\t\t\tthis._pFallOff = 0;\n\n\t\tif (this._pFallOff < this._pRadius)\n\t\t\tthis._pRadius = this._pFallOff;\n\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new PointLightNode(this);\n\t}\n\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromSphere(new Vector3D(), this._pFallOff);\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//point lights are culled based on their falloff radius\n\t\treturn new BoundingSphere();\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:number[] = new Array(16);\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\t// todo: do not use lookAt on Light\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this._pParent.inverseSceneTransform);\n\t\tthis.lookAt(m.position);\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tvar box:Box = bounds.aabb;\n\t\tvar v1:Vector3D = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));\n\t\tvar v2:Vector3D = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));\n\t\tvar d1:number = v1.x*v1.x + v1.y*v1.y + v1.z*v1.z;\n\t\tvar d2:number = v2.x*v2.x + v2.y*v2.y + v2.z*v2.z;\n\t\tvar d:number = Math.sqrt(d1 > d2? d1 : d2);\n\t\tvar zMin:number;\n\t\tvar zMax:number;\n\n\t\tvar z:number = m.rawData[14];\n\t\tzMin = z - d;\n\t\tzMax = z + d;\n\n\t\traw[5] = raw[0] = zMin/d;\n\t\traw[10] = zMax/(zMax - zMin);\n\t\traw[11] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[12] = raw[13] = raw[15] = 0;\n\t\traw[14] = -zMin*raw[10];\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = PointLight;", + "import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialEvent\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * The Billboard class represents display objects that represent bitmap images.\n * These can be images that you load with the flash.Assets or\n * flash.display.Loader classes, or they can be images that you\n * create with the Billboard() constructor.\n *\n *

The Billboard() constructor allows you to create a Billboard\n * object that contains a reference to a BitmapData object. After you create a\n * Billboard object, use the addChild() or addChildAt()\n * method of the parent DisplayObjectContainer instance to place the bitmap on\n * the display list.

\n *\n *

A Billboard object can share its BitmapData reference among several Billboard\n * objects, independent of translation or rotation properties. Because you can\n * create multiple Billboard objects that reference the same BitmapData object,\n * multiple display objects can use the same complex BitmapData object without\n * incurring the memory overhead of a BitmapData object for each display\n * object instance.

\n *\n *

A BitmapData object can be drawn to the screen by a Billboard object in one\n * of two ways: by using the default hardware renderer with a single hardware surface,\n * or by using the slower software renderer when 3D acceleration is not available.

\n *\n *

If you would prefer to perform a batch rendering command, rather than using a\n * single surface for each Billboard object, you can also draw to the screen using the\n * drawTiles() or drawTriangles() methods which are\n * available to flash.display.Tilesheet and flash.display.Graphics\n * objects.

\n *\n *

Note: The Billboard class is not a subclass of the InteractiveObject\n * class, so it cannot dispatch mouse events. However, you can use the\n * addEventListener() method of the display object container that\n * contains the Billboard object.

\n */\n\nclass Billboard extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _billboardWidth:number;\n\tprivate _billboardHeight:number;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.BILLBOARD;\n\t}\n\n\t/**\n\t * The BitmapData object being referenced.\n\t */\n\tpublic bitmapData:BitmapData; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get billboardHeight():number\n\t{\n\t\treturn this._billboardHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get billboardWidth():number\n\t{\n\t\treturn this._billboardWidth;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t * Controls whether or not the Billboard object is snapped to the nearest pixel.\n\t * This value is ignored in the native and HTML5 targets.\n\t * The PixelSnapping class includes possible values:\n\t *
    \n\t *
  • PixelSnapping.NEVER - No pixel snapping occurs.
  • \n\t *
  • PixelSnapping.ALWAYS - The image is always snapped to\n\t * the nearest pixel, independent of transformation.
  • \n\t *
  • PixelSnapping.AUTO - The image is snapped to the\n\t * nearest pixel if it is drawn with no rotation or skew and it is drawn at a\n\t * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the\n\t * bitmap image is drawn at 100% scale, snapped to the nearest pixel.\n\t * When targeting Flash Player, this value allows the image to be drawn as fast\n\t * as possible using the internal vector renderer.
  • \n\t *
\n\t */\n\tpublic pixelSnapping:string; //TODO\n\n\t/**\n\t * Controls whether or not the bitmap is smoothed when scaled. If\n\t * true, the bitmap is smoothed when scaled. If\n\t * false, the bitmap is not smoothed when scaled.\n\t */\n\tpublic smoothing:boolean; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\tconstructor(material:MaterialBase, pixelSnapping:string = \"auto\", smoothing:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._billboardWidth = material.width;\n\t\tthis._billboardHeight = material.height;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(0, 0, 0, this._billboardWidth, this._billboardHeight, 0);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testBillboardCollision(this, this._pPickingCollisionVO, shortestCollisionDistance);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis._billboardWidth = this._material.width;\n\t\tthis._billboardHeight = this._material.height;\n\n\t\tthis._pBoundsInvalid = true;\n\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyBillboard(this);\n\t}\n}\n\nexport = Billboard;", + "import BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ProjectionEvent\t\t\t= require(\"awayjs-core/lib/events/ProjectionEvent\");\nimport IProjection\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CameraEvent\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport CameraNode\t\t\t\t= require(\"awayjs-display/lib/partition/CameraNode\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\n\n\nclass Camera extends DisplayObjectContainer implements IEntity\n{\n\tprivate _viewProjection:Matrix3D = new Matrix3D();\n\tprivate _viewProjectionDirty:Boolean = true;\n\tprivate _projection:IProjection;\n\tprivate _frustumPlanes:Array;\n\tprivate _frustumPlanesDirty:Boolean = true;\n\tprivate _onProjectionMatrixChangedDelegate:(event:ProjectionEvent) => void;\n\n\tconstructor(projection:IProjection = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._onProjectionMatrixChangedDelegate = (event:ProjectionEvent) => this.onProjectionMatrixChanged(event);\n\n\t\tthis._projection = projection || new PerspectiveProjection();\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\n\t\tthis._frustumPlanes = [];\n\n\t\tfor (var i:number = 0; i < 6; ++i)\n\t\t\tthis._frustumPlanes[i] = new Plane3D();\n\n\t\tthis.z = -1000;\n\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new CameraNode(this);\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CAMERA;\n\t}\n\n\tprivate onProjectionMatrixChanged(event:ProjectionEvent)\n\t{\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t\tthis.dispatchEvent(event);\n\t}\n\n\tpublic get frustumPlanes():Array\n\t{\n\t\tif (this._frustumPlanesDirty)\n\t\t\tthis.updateFrustum();\n\n\t\treturn this._frustumPlanes;\n\t}\n\n\tprivate updateFrustum()\n\t{\n\t\tvar a:number, b:number, c:number;\n\t\t//var d : Number;\n\t\tvar c11:number, c12:number, c13:number, c14:number;\n\t\tvar c21:number, c22:number, c23:number, c24:number;\n\t\tvar c31:number, c32:number, c33:number, c34:number;\n\t\tvar c41:number, c42:number, c43:number, c44:number;\n\t\tvar p:Plane3D;\n\t\tvar raw:number[] = new Array(16);\n\t\t;//new Array(16 );away.utils.Matrix3DUtils.RAW_DATA_CONTAINER;//[];\n\t\tvar invLen:number;\n\t\tthis.viewProjection.copyRawDataTo(raw);\n\n\t\tc11 = raw[0];\n\t\tc12 = raw[4];\n\t\tc13 = raw[8];\n\t\tc14 = raw[12];\n\t\tc21 = raw[1];\n\t\tc22 = raw[5];\n\t\tc23 = raw[9];\n\t\tc24 = raw[13];\n\t\tc31 = raw[2];\n\t\tc32 = raw[6];\n\t\tc33 = raw[10];\n\t\tc34 = raw[14];\n\t\tc41 = raw[3];\n\t\tc42 = raw[7];\n\t\tc43 = raw[11];\n\t\tc44 = raw[15];\n\n\t\t// left plane\n\t\tp = this._frustumPlanes[0];\n\t\ta = c41 + c11;\n\t\tb = c42 + c12;\n\t\tc = c43 + c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c14)*invLen;\n\n\t\t// right plane\n\t\tp = this._frustumPlanes[1];\n\t\ta = c41 - c11;\n\t\tb = c42 - c12;\n\t\tc = c43 - c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c14 - c44)*invLen;\n\n\t\t// bottom\n\t\tp = this._frustumPlanes[2];\n\t\ta = c41 + c21;\n\t\tb = c42 + c22;\n\t\tc = c43 + c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c24)*invLen;\n\n\t\t// top\n\t\tp = this._frustumPlanes[3];\n\t\ta = c41 - c21;\n\t\tb = c42 - c22;\n\t\tc = c43 - c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c24 - c44)*invLen;\n\n\t\t// near\n\t\tp = this._frustumPlanes[4];\n\t\ta = c31;\n\t\tb = c32;\n\t\tc = c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -c34*invLen;\n\n\t\t// far\n\t\tp = this._frustumPlanes[5];\n\t\ta = c41 - c31;\n\t\tb = c42 - c32;\n\t\tc = c43 - c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c34 - c44)*invLen;\n\n\t\tthis._frustumPlanesDirty = false;\n\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t\tthis._pBounds.nullify();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get projection():IProjection\n\t{\n\t\treturn this._projection;\n\t}\n\n\tpublic set projection(value:IProjection)\n\t{\n\t\tif (this._projection == value)\n\t\t\treturn;\n\n\t\tif (!value)\n\t\t\tthrow new Error(\"Projection cannot be null!\");\n\n\t\tthis._projection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis._projection = value;\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis.dispatchEvent(new CameraEvent(CameraEvent.PROJECTION_CHANGED, this));\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get viewProjection():Matrix3D\n\t{\n\t\tif (this._viewProjectionDirty) {\n\t\t\tthis._viewProjection.copyFrom(this.inverseSceneTransform);\n\t\t\tthis._viewProjection.append(this._projection.matrix);\n\t\t\tthis._viewProjectionDirty = false;\n\t\t}\n\n\t\treturn this._viewProjection;\n\t}\n\n\t/**\n\t * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right.\n\t * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The ray from the camera to the scene space position of the given screen coordinates.\n\t */\n\tpublic getRay(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.deltaTransformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\t/**\n\t * Calculates the normalised position in screen space of the given scene position.\n\t *\n\t * @param point3d the position vector of the scene coordinates to be projected.\n\t * @return The normalised screen position of the given scene coordinates.\n\t */\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\treturn this._projection.project(this.inverseSceneTransform.transformVector(point3d));\n\t}\n\n\t/**\n\t * Calculates the scene position of the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.\n\t * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The scene position of the given screen coordinates.\n\t */\n\tpublic unproject(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.transformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = Camera;", + "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLightNode\t\t\t= require(\"awayjs-display/lib/partition/DirectionalLightNode\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass DirectionalLight extends LightBase implements IEntity\n{\n\tprivate _direction:Vector3D;\n\tprivate _tmpLookAt:Vector3D;\n\tprivate _sceneDirection:Vector3D;\n\tprivate _projAABBPoints:Array;\n\n\tconstructor(xDir:number = 0, yDir:number = -1, zDir:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.direction = new Vector3D(xDir, yDir, zDir);\n\n\t\tthis._sceneDirection = new Vector3D();\n\t}\n\n\tpublic get sceneDirection():Vector3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._sceneDirection;\n\t}\n\n\tpublic get direction():Vector3D\n\t{\n\t\treturn this._direction;\n\t}\n\n\tpublic set direction(value:Vector3D)\n\t{\n\t\tthis._direction = value;\n\n\t\tif (!this._tmpLookAt)\n\t\t\tthis._tmpLookAt = new Vector3D();\n\n\t\tthis._tmpLookAt.x = this.x + this._direction.x;\n\t\tthis._tmpLookAt.y = this.y + this._direction.y;\n\t\tthis._tmpLookAt.z = this.z + this._direction.z;\n\n\t\tthis.lookAt(this._tmpLookAt);\n\t}\n\n\t/**\n\t *\n\t * @returns {away.bounds.NullBounds}\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//directional lights are to be considered global, hence always in view\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t}\n\n\t//@override\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tsuper.pUpdateSceneTransform();\n\t\tthis.sceneTransform.copyColumnTo(2, this._sceneDirection);\n\t\tthis._sceneDirection.normalize();\n\t}\n\n\t//@override\n\tpublic pCreateShadowMapper():DirectionalShadowMapper\n\t{\n\t\treturn new DirectionalShadowMapper();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new DirectionalLightNode(this);\n\t}\n\n\t//override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tif (!this._projAABBPoints)\n\t\t\tthis._projAABBPoints = [];\n\n\t\tm.transformVectors(bounds.aabbPoints, this._projAABBPoints);\n\n\t\tvar xMin:number = Infinity, xMax:number = -Infinity;\n\t\tvar yMin:number = Infinity, yMax:number = -Infinity;\n\t\tvar zMin:number = Infinity, zMax:number = -Infinity;\n\t\tvar d:number;\n\t\tfor (var i:number = 0; i < 24;) {\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < xMin)\n\t\t\t\txMin = d;\n\n\t\t\tif (d > xMax)\n\t\t\t\txMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < yMin)\n\t\t\t\tyMin = d;\n\n\t\t\tif (d > yMax)\n\t\t\t\tyMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < zMin)\n\t\t\t\tzMin = d;\n\n\t\t\tif (d > zMax)\n\t\t\t\tzMax = d;\n\t\t}\n\n\t\tvar invXRange:number = 1/(xMax - xMin);\n\t\tvar invYRange:number = 1/(yMax - yMin);\n\t\tvar invZRange:number = 1/(zMax - zMin);\n\t\traw[0] = 2*invXRange;\n\t\traw[5] = 2*invYRange;\n\t\traw[10] = invZRange;\n\t\traw[12] = -(xMax + xMin)*invXRange;\n\t\traw[13] = -(yMax + yMin)*invYRange;\n\t\traw[14] = -zMin*invZRange;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\t\traw[15] = 1;\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = DirectionalLight;", + "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport Transform\t\t\t\t\t= require(\"awayjs-display/lib/base/Transform\");\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport ControllerBase\t\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IPickingCollider\t\t\t\t= require(\"awayjs-display/lib/pick/IPickingCollider\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\n\ninterface IEntity extends IAsset\n{\n\tx:number;\n\ty:number;\n\tz:number;\n\n\trotationX:number;\n\trotationY:number;\n\trotationZ:number;\n\n\tscaleX:number;\n\tscaleY:number;\n\tscaleZ:number;\n\n\t/**\n\t *\n\t */\n\tbounds:BoundingVolumeBase;\n\n\t/**\n\t *\n\t */\n\tcastsShadows:boolean;\n\n\t/**\n\t *\n\t */\n\tinverseSceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tpartitionNode:EntityNode;\n\n\t/**\n\t *\n\t */\n\tpickingCollider:IPickingCollider;\n\n\t/**\n\t *\n\t */\n\ttransform:Transform;\n\n\t/**\n\t *\n\t */\n\tscene:Scene;\n\n\t/**\n\t *\n\t */\n\tscenePosition:Vector3D;\n\n\t/**\n\t *\n\t */\n\tsceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tworldBounds:BoundingVolumeBase;\n\n\t/**\n\t *\n\t */\n\tzOffset:number\n\n\t/**\n\t *\n\t */\n\tisIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean;\n\n\t/**\n\t *\n\t *\n\t * @param target\n\t * @param upAxis\n\t */\n\tlookAt(target:Vector3D, upAxis?:Vector3D);\n\n\t/**\n\t * @internal\n\t */\n\t_iPickingCollisionVO:PickingCollisionVO;\n\n\t/**\n\t * @internal\n\t */\n\t_iController:ControllerBase;\n\n\t/**\n\t * @internal\n\t */\n\t_iAssignedPartition:Partition;\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\t_iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean;\n\n\t/**\n\t * @internal\n\t */\n\t_iIsMouseEnabled():boolean\n\n\t/**\n\t * @internal\n\t */\n\t_iIsVisible():boolean\n\n\t_iInternalUpdate()\n\n\t/**\n\t * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render.\n\t * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would\n\t * return the scene transform.\n\t */\n\tgetRenderSceneTransform(camera:Camera):Matrix3D;\n\n\t/**\n\t *\n\t * @param renderer\n\t * @private\n\t */\n\t_iCollectRenderables(rendererPool:IRendererPool);\n}\n\nexport = IEntity;", + "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport LightProbeNode\t\t\t\t= require(\"awayjs-display/lib/partition/LightProbeNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nclass LightProbe extends LightBase implements IEntity\n{\n\tprivate _diffuseMap:CubeTextureBase;\n\tprivate _specularMap:CubeTextureBase;\n\n\tconstructor(diffuseMap:CubeTextureBase, specularMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._diffuseMap = diffuseMap;\n\t\tthis._specularMap = specularMap;\n\t}\n\n\tpublic get diffuseMap():CubeTextureBase\n\t{\n\t\treturn this._diffuseMap;\n\t}\n\n\tpublic set diffuseMap(value:CubeTextureBase)\n\t{\n\t\tthis._diffuseMap = value;\n\t}\n\n\tpublic get specularMap():CubeTextureBase\n\t{\n\t\treturn this._specularMap;\n\t}\n\n\tpublic set specularMap(value:CubeTextureBase)\n\t{\n\t\tthis._specularMap = value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new LightProbeNode(this);\n\t}\n\n\t//@override\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t//@override\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t//@override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new Error(\"Object projection matrices are not supported for LightProbe objects!\");\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = LightProbe;", + "import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Line Segment primitive.\n */\nclass LineSegment extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\tpublic _startPosition:Vector3D;\n\tpublic _endPosition:Vector3D;\n\tpublic _halfThickness:number;\n\n\n\t/**\n\t * Defines the animator of the line segment. Act on the line segment's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SEGMENT;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPostion():Vector3D\n\t{\n\t\treturn this._startPosition;\n\t}\n\n\tpublic set startPosition(value:Vector3D)\n\t{\n\t\tif (this._startPosition == value)\n\t\t\treturn;\n\n\t\tthis._startPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPosition():Vector3D\n\t{\n\t\treturn this._endPosition;\n\t}\n\n\tpublic set endPosition(value:Vector3D)\n\t{\n\t\tif (this._endPosition == value)\n\t\t\treturn;\n\n\t\tthis._endPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():number\n\t{\n\t\treturn this._halfThickness*2;\n\t}\n\n\tpublic set thickness(value:number)\n\t{\n\t\tif (this._halfThickness == value)\n\t\t\treturn;\n\n\t\tthis._halfThickness = value*0.5;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a line segment\n\t *\n\t * @param startPosition Start position of the line segment\n\t * @param endPosition Ending position of the line segment\n\t * @param thickness Thickness of the line\n\t */\n\tconstructor(material:MaterialBase, startPosition:Vector3D, endPosition:Vector3D, thickness:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._startPosition = startPosition;\n\t\tthis._endPosition = endPosition;\n\t\tthis._halfThickness = thickness*0.5;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._startPosition = null;\n\t\tthis._endPosition = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(this._startPosition.x, this._startPosition.y, this._startPosition.z, this._endPosition.x, this._endPosition.y, this._endPosition.z);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRenderableUpdate()\n\t{\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = LineSegment;", + "import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport TriangleSubGeometry\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation\n * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts\n * of the geometry to be assigned different materials.\n */\nclass Mesh extends DisplayObjectContainer implements IEntity\n{\n\tprivate _uvTransform:UVTransform;\n\n\tprivate _subMeshes:Array;\n\tprivate _geometry:Geometry;\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\tprivate _castsShadows:boolean = true;\n\tprivate _shareAnimationGeometry:boolean = true;\n\n\tprivate _onGeometryBoundsInvalidDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryAddedDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryRemovedDelegate:(event:GeometryEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Default value is null.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\tpublic set animator(value:IAnimator)\n\t{\n\t\tif (this._animator)\n\t\t\tthis._animator.removeOwner(this);\n\n\t\tthis._animator = value;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\t// cause material to be unregistered and registered again to work with the new animation type (if possible)\n\t\t\tif (subMesh.material) {\n\t\t\t\tsubMesh.material.iRemoveOwner(subMesh);\n\t\t\t\tsubMesh.material.iAddOwner(subMesh);\n\t\t\t}\n\n\t\t\t//invalidate any existing renderables in case they need to pull new geometry\n\t\t\tsubMesh._iInvalidateRenderableGeometry();\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tthis._animator.addOwner(this);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MESH;\n\t}\n\n\t/**\n\t * Indicates whether or not the Mesh can cast shadows. Default value is true.\n\t */\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tthis._castsShadows = value;\n\t}\n\n\t/**\n\t * The geometry used by the mesh that provides it with its shape.\n\t */\n\tpublic get geometry():Geometry\n\t{\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\tpublic set geometry(value:Geometry)\n\t{\n\t\tvar i:number;\n\n\t\tif (this._geometry) {\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tfor (i = 0; i < this._subMeshes.length; ++i)\n\t\t\t\tthis._subMeshes[i].dispose();\n\n\t\t\tthis._subMeshes.length = 0;\n\t\t}\n\n\t\tthis._geometry = value;\n\n\t\tif (this._geometry) {\n\n\t\t\tthis._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\n\t\t\tfor (i = 0; i < subGeoms.length; ++i)\n\t\t\t\tthis.addSubMesh(subGeoms[i]);\n\t\t}\n\t}\n\n\t/**\n\t * The material with which to render the Mesh.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tvar i:number;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iRemoveOwner(subMesh);\n\n\t\tthis._material = value;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iAddOwner(subMesh);\n\t}\n\n\t/**\n\t * Indicates whether or not the mesh share the same animation geometry.\n\t */\n\tpublic get shareAnimationGeometry():boolean\n\t{\n\t\treturn this._shareAnimationGeometry;\n\t}\n\n\tpublic set shareAnimationGeometry(value:boolean)\n\t{\n\t\tthis._shareAnimationGeometry = value;\n\t}\n\n\t/**\n\t * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's\n\t * material.\n\t */\n\tpublic get subMeshes():Array\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._subMeshes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a new Mesh object.\n\t *\n\t * @param geometry The geometry used by the mesh that provides it with its shape.\n\t * @param material [optional] The material with which to render the Mesh.\n\t */\n\tconstructor(geometry:Geometry, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._subMeshes = new Array();\n\n\t\tthis._onGeometryBoundsInvalidDelegate = (event:GeometryEvent) => this.onGeometryBoundsInvalid(event);\n\t\tthis._onSubGeometryAddedDelegate = (event:GeometryEvent) => this.onSubGeometryAdded(event);\n\t\tthis._onSubGeometryRemovedDelegate = (event:GeometryEvent) => this.onSubGeometryRemoved(event);\n\n\t\t//this should never happen, but if people insist on trying to create their meshes before they have geometry to fill it, it becomes necessary\n\t\tthis.geometry = geometry || new Geometry();\n\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic bakeTransformations()\n\t{\n\t\tthis.geometry.applyTransformation(this._iMatrix3D);\n\t\tthis._iMatrix3D.identity();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis.material = null;\n\t\tthis.geometry = null;\n\t}\n\n\t/**\n\t * Disposes mesh including the animator and children. This is a merely a convenience method.\n\t * @return\n\t */\n\tpublic disposeWithAnimatorAndChildren()\n\t{\n\t\tthis.disposeWithChildren();\n\n\t\t if (this._animator)\n\t\t\tthis._animator.dispose();\n\t}\n\n\t/**\n\t * Clones this Mesh instance along with all it's children, while re-using the same\n\t * material, geometry and animation set. The returned result will be a copy of this mesh,\n\t * containing copies of all of it's children.\n\t *\n\t * Properties that are re-used (i.e. not cloned) by the new copy include name,\n\t * geometry, and material. Properties that are cloned or created anew for the copy\n\t * include subMeshes, children of the mesh, and the animator.\n\t *\n\t * If you want to copy just the mesh, reusing it's geometry and material while not\n\t * cloning it's children, the simplest way is to create a new mesh manually:\n\t *\n\t * \n\t * var clone : Mesh = new Mesh(original.geometry, original.material);\n\t * \n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:Mesh = new Mesh(this._geometry, this._material);\n\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.pivot = this.pivot;\n\t\tclone.partition = this.partition;\n\t\tclone.bounds = this.bounds.clone();\n\n\n\t\tclone.name = this.name;\n\t\tclone.castsShadows = this.castsShadows;\n\t\tclone.shareAnimationGeometry = this.shareAnimationGeometry;\n\t\tclone.mouseEnabled = this.mouseEnabled;\n\t\tclone.mouseChildren = this.mouseChildren;\n\t\t//this is of course no proper cloning\n\t\t//maybe use this instead?: http://blog.another-d-mention.ro/programming/how-to-clone-duplicate-an-object-in-actionscript-3/\n\t\tclone.extra = this.extra;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone._subMeshes[i].material = this._subMeshes[i]._iGetExplicitMaterial();\n\n\n\t\tlen = this.numChildren;\n\t\tvar obj:any;\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\tobj = this.getChildAt(i).clone();\n\t\t\tclone.addChild( obj);\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tclone.animator = this._animator.clone();\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param subGeometry\n\t * @returns {SubMeshBase}\n\t */\n\tpublic getSubMeshFromSubGeometry(subGeometry:SubGeometryBase):ISubMesh\n\t{\n\t\treturn this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)];\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tvar i:number, j:number, p:number;\n\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\t\tvar subGeom:SubGeometryBase;\n\t\tvar boundingPositions:Array;\n\t\tvar numSubGeoms:number = subGeoms.length;\n\t\tvar minX:number, minY:number, minZ:number;\n\t\tvar maxX:number, maxY:number, maxZ:number;\n\n\t\tif (numSubGeoms > 0) {\n\t\t\ti = 0;\n\t\t\tsubGeom = subGeoms[0];\n\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\tminX = maxX = boundingPositions[i];\n\t\t\tminY = maxY = boundingPositions[i + 1];\n\t\t\tminZ = maxZ = boundingPositions[i + 2];\n\n\t\t\tj = numSubGeoms;\n\t\t\twhile (j--) {\n\t\t\t\tsubGeom = subGeoms[j];\n\t\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\t\ti = boundingPositions.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tp = boundingPositions[i];\n\t\t\t\t\tif (p < minX)\n\t\t\t\t\t\tminX = p;\n\t\t\t\t\telse if (p > maxX)\n\t\t\t\t\t\tmaxX = p;\n\n\t\t\t\t\tp = boundingPositions[i + 1];\n\n\t\t\t\t\tif (p < minY)\n\t\t\t\t\t\tminY = p;\n\t\t\t\t\telse if (p > maxY)\n\t\t\t\t\t\tmaxY = p;\n\n\t\t\t\t\tp = boundingPositions[i + 2];\n\n\t\t\t\t\tif (p < minZ)\n\t\t\t\t\t\tminZ = p;\n\t\t\t\t\telse if (p > maxZ)\n\t\t\t\t\t\tmaxZ = p;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._pBounds.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);\n\t\t} else {\n\t\t\tthis._pBounds.fromExtremes(0, 0, 0, 0, 0, 0);\n\t\t}\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @private\n\t */\n\tprivate onGeometryBoundsInvalid(event:GeometryEvent)\n\t{\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * Called when a SubGeometry was added to the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryAdded(event:GeometryEvent)\n\t{\n\t\tthis.addSubMesh(event.subGeometry);\n\t}\n\n\t/**\n\t * Called when a SubGeometry was removed from the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryRemoved(event:GeometryEvent)\n\t{\n\t\tvar subMesh:ISubMesh;\n\t\tvar subGeom:SubGeometryBase = event.subGeometry;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar i:number;\n\n\t\t// Important! This has to be done here, and not delayed until the\n\t\t// next render loop, since this may be caused by the geometry being\n\t\t// rebuilt IN THE RENDER LOOP. Invalidating and waiting will delay\n\t\t// it until the NEXT RENDER FRAME which is probably not desirable.\n\t\tfor (i = 0; i < len; ++i) {\n\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\tif (subMesh.subGeometry == subGeom) {\n\t\t\t\tsubMesh.dispose();\n\n\t\t\t\tthis._subMeshes.splice(i, 1);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t--len;\n\t\tfor (; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iIndex = i;\n\t}\n\n\t/**\n\t * Adds a SubMeshBase wrapping a SubGeometry.\n\t *\n\t * @param subGeometry\n\t */\n\tprivate addSubMesh(subGeometry:SubGeometryBase)\n\t{\n\t\tvar SubMeshClass:ISubMeshClass = subGeometry.subMeshClass;\n\n\t\tvar subMesh:ISubMesh = new SubMeshClass(subGeometry, this, null);\n\t\tvar len:number = this._subMeshes.length;\n\n\t\tsubMesh._iIndex = len;\n\n\t\tthis._subMeshes[len] = subMesh;\n\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testMeshCollision(this, this._pPickingCollisionVO, shortestCollisionDistance, findClosest);\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tvar len:number /*uint*/ = this._subMeshes.length;\n\t\tfor (var i:number /*uint*/ = 0; i < len; i++)\n\t\t\tthis._subMeshes[i]._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iInvalidateRenderableGeometries()\n\t{\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iInvalidateRenderableGeometry();\n\t}\n}\n\nexport = Mesh;", + "import BoundingSphere\t\t\t\t= require(\"awayjs-core/lib/bounds/BoundingSphere\");\nimport BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Box\t\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Box\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport PointLightNode\t\t\t\t= require(\"awayjs-display/lib/partition/PointLightNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeMapShadowMapper\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper\");\n\nclass PointLight extends LightBase implements IEntity\n{\n\tpublic _pRadius:number = 90000;\n\tpublic _pFallOff:number = 100000;\n\tpublic _pFallOffFactor:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._pFallOffFactor = 1/(this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t}\n\n\tpublic pCreateShadowMapper():CubeMapShadowMapper\n\t{\n\t\treturn new CubeMapShadowMapper();\n\t}\n\n\tpublic get radius():number\n\t{\n\t\treturn this._pRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pRadius = value;\n\n\t\tif (this._pRadius < 0) {\n\t\t\tthis._pRadius = 0;\n\t\t} else if (this._pRadius > this._pFallOff) {\n\t\t\tthis._pFallOff = this._pRadius;\n\t\t\tthis.pInvalidateBounds();\n\t\t}\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius );\n\t}\n\n\tpublic iFallOffFactor():number\n\t{\n\t\treturn this._pFallOffFactor;\n\t}\n\n\tpublic get fallOff():number\n\t{\n\t\treturn this._pFallOff;\n\t}\n\n\tpublic set fallOff(value:number)\n\t{\n\t\tthis._pFallOff = value;\n\n\t\tif (this._pFallOff < 0)\n\t\t\tthis._pFallOff = 0;\n\n\t\tif (this._pFallOff < this._pRadius)\n\t\t\tthis._pRadius = this._pFallOff;\n\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new PointLightNode(this);\n\t}\n\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromSphere(new Vector3D(), this._pFallOff);\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//point lights are culled based on their falloff radius\n\t\treturn new BoundingSphere();\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:number[] = new Array(16);\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\t// todo: do not use lookAt on Light\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this._pParent.inverseSceneTransform);\n\t\tthis.lookAt(m.position);\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tvar box:Box = bounds.aabb;\n\t\tvar v1:Vector3D = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));\n\t\tvar v2:Vector3D = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));\n\t\tvar d1:number = v1.x*v1.x + v1.y*v1.y + v1.z*v1.z;\n\t\tvar d2:number = v2.x*v2.x + v2.y*v2.y + v2.z*v2.z;\n\t\tvar d:number = Math.sqrt(d1 > d2? d1 : d2);\n\t\tvar zMin:number;\n\t\tvar zMax:number;\n\n\t\tvar z:number = m.rawData[14];\n\t\tzMin = z - d;\n\t\tzMax = z + d;\n\n\t\traw[5] = raw[0] = zMin/d;\n\t\traw[10] = zMax/(zMax - zMin);\n\t\traw[11] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[12] = raw[13] = raw[15] = 0;\n\t\traw[14] = -zMin*raw[10];\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = PointLight;", "import DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Graphics\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Graphics\");\n\n/**\n * This class is used to create lightweight shapes using the ActionScript\n * drawing application program interface(API). The Shape class includes a\n * graphics property, which lets you access methods from the\n * Graphics class.\n *\n *

The Sprite class also includes a graphicsproperty, and it\n * includes other features not available to the Shape class. For example, a\n * Sprite object is a display object container, whereas a Shape object is not\n * (and cannot contain child display objects). For this reason, Shape objects\n * consume less memory than Sprite objects that contain the same graphics.\n * However, a Sprite object supports user input events, while a Shape object\n * does not.

\n */\nclass Shape extends DisplayObject\n{\n\tprivate _graphics:Graphics;\n\n\t/**\n\t * Specifies the Graphics object belonging to this Shape object, where vector\n\t * drawing commands can occur.\n\t */\n\tget graphics():Graphics\n\t{\n\t\treturn this._graphics;\n\t}\n\n\t/**\n\t * Creates a new Shape object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n}\n\nexport = Shape;", - "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport SkyboxNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/SkyboxNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as\n * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring\n * the sky box is always as large as possible without being clipped.\n */\nclass Skybox extends DisplayObject implements IEntity, IRenderableOwner, IRenderObjectOwner\n{\n\tprivate _cubeMap:CubeTextureBase;\n\tpublic _pAlphaThreshold:number = 0;\n\tprivate _animationSet:IAnimationSet;\n\tpublic _pLightPicker:LightPickerBase;\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\tprivate _renderObjects:Array = new Array();\n\tprivate _renderables:Array = new Array();\n\tprivate _uvTransform:UVTransform;\n\tprivate _owners:Array;\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\t\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\t\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pInvalidateProperties()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateProperties();\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t* The cube texture to use as the skybox.\n\t*/\n\tpublic get cubeMap():CubeTextureBase\n\t{\n\t\treturn this._cubeMap;\n\t}\n\n\tpublic set cubeMap(value:CubeTextureBase)\n\t{\n\t\tif (value && this._cubeMap && (value.hasMipmaps != this._cubeMap.hasMipmaps || value.format != this._cubeMap.format))\n\t\t\tthis._pInvalidateRenderObject();\n\n\t\tthis._cubeMap = value;\n\t}\n\n\t/**\n\t * Create a new Skybox object.\n\t *\n\t * @param material\tThe material with which to render the Skybox.\n\t */\n\tconstructor(cubeMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\t\tthis._owners = new Array(this);\n\n\t\tthis.cubeMap = cubeMap;\n\t}\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.SKYBOX;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\t// dead end\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():SkyboxNode\n\t{\n\t\treturn new SkyboxNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//skybox do not get collected in the standard entity list\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool)\n\t{\n\t\treturn renderablePool.getSkyboxRenderObject(this);\n\t}\n}\n\nexport = Skybox;", + "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport SkyboxNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/SkyboxNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as\n * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring\n * the sky box is always as large as possible without being clipped.\n */\nclass Skybox extends DisplayObject implements IEntity, IRenderableOwner, IRenderObjectOwner\n{\n\tprivate _cubeMap:CubeTextureBase;\n\tpublic _pAlphaThreshold:number = 0;\n\tprivate _animationSet:IAnimationSet;\n\tpublic _pLightPicker:LightPickerBase;\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\tprivate _renderObjects:Array = new Array();\n\tprivate _renderables:Array = new Array();\n\tprivate _uvTransform:UVTransform;\n\tprivate _owners:Array;\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\t\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\t\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pIinvalidatePasses()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidatePasses();\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t* The cube texture to use as the skybox.\n\t*/\n\tpublic get cubeMap():CubeTextureBase\n\t{\n\t\treturn this._cubeMap;\n\t}\n\n\tpublic set cubeMap(value:CubeTextureBase)\n\t{\n\t\tif (value && this._cubeMap && (value.hasMipmaps != this._cubeMap.hasMipmaps || value.format != this._cubeMap.format))\n\t\t\tthis._pInvalidateRenderObject();\n\n\t\tthis._cubeMap = value;\n\t}\n\n\t/**\n\t * Create a new Skybox object.\n\t *\n\t * @param material\tThe material with which to render the Skybox.\n\t */\n\tconstructor(cubeMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\t\tthis._owners = new Array(this);\n\n\t\tthis.cubeMap = cubeMap;\n\t}\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.SKYBOX;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\t// dead end\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():SkyboxNode\n\t{\n\t\treturn new SkyboxNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//skybox do not get collected in the standard entity list\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool)\n\t{\n\t\treturn renderablePool.getSkyboxRenderObject(this);\n\t}\n}\n\nexport = Skybox;", "import Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport AntiAliasType\t\t\t\t= require(\"awayjs-display/lib/text/AntiAliasType\");\nimport GridFitType\t\t\t\t\t= require(\"awayjs-display/lib/text/GridFitType\");\nimport TextFieldAutoSize\t\t\t= require(\"awayjs-display/lib/text/TextFieldAutoSize\");\nimport TextFieldType\t\t\t\t= require(\"awayjs-display/lib/text/TextFieldType\");\nimport TextFormat\t\t\t\t\t= require(\"awayjs-display/lib/text/TextFormat\");\nimport TextInteractionMode\t\t\t= require(\"awayjs-display/lib/text/TextInteractionMode\");\nimport TextLineMetrics\t\t\t\t= require(\"awayjs-display/lib/text/TextLineMetrics\");\n\n/**\n * The TextField class is used to create display objects for text display and\n * input. You can use the TextField class to\n * perform low-level text rendering. However, in Flex, you typically use the\n * Label, Text, TextArea, and TextInput controls to process text. You can give a text field an instance name in the\n * Property inspector and use the methods and properties of the TextField\n * class to manipulate it with ActionScript. TextField instance names are\n * displayed in the Movie Explorer and in the Insert Target Path dialog box in\n * the Actions panel.\n *\n *

To create a text field dynamically, use the TextField()\n * constructor.

\n *\n *

The methods of the TextField class let you set, select, and manipulate\n * text in a dynamic or input text field that you create during authoring or\n * at runtime.

\n *\n *

ActionScript provides several ways to format your text at runtime. The\n * TextFormat class lets you set character and paragraph formatting for\n * TextField objects. You can apply Cascading Style Sheets(CSS) styles to\n * text fields by using the TextField.styleSheet property and the\n * StyleSheet class. You can use CSS to style built-in HTML tags, define new\n * formatting tags, or apply styles. You can assign HTML formatted text, which\n * optionally uses CSS styles, directly to a text field. HTML text that you\n * assign to a text field can contain embedded media(movie clips, SWF files,\n * GIF files, PNG files, and JPEG files). The text wraps around the embedded\n * media in the same way that a web browser wraps text around media embedded\n * in an HTML document.

\n *\n *

Flash Player supports a subset of HTML tags that you can use to format\n * text. See the list of supported HTML tags in the description of the\n * htmlText property.

\n * \n * @event change Dispatched after a control value is\n * modified, unlike the\n * textInput event, which is\n * dispatched before the value is modified.\n * Unlike the W3C DOM Event Model version of\n * the change event, which\n * dispatches the event only after the\n * control loses focus, the ActionScript 3.0\n * version of the change event\n * is dispatched any time the control\n * changes. For example, if a user types text\n * into a text field, a change\n * event is dispatched after every keystroke.\n * @event link Dispatched when a user clicks a hyperlink\n * in an HTML-enabled text field, where the\n * URL begins with \"event:\". The remainder of\n * the URL after \"event:\" is placed in the\n * text property of the LINK event.\n *\n *

Note: The default behavior,\n * adding the text to the text field, occurs\n * only when Flash Player generates the\n * event, which in this case happens when a\n * user attempts to input text. You cannot\n * put text into a text field by sending it\n * textInput events.

\n * @event scroll Dispatched by a TextField object\n * after the user scrolls.\n * @event textInput Flash Player dispatches the\n * textInput event when a user\n * enters one or more characters of text.\n * Various text input methods can generate\n * this event, including standard keyboards,\n * input method editors(IMEs), voice or\n * speech recognition systems, and even the\n * act of pasting plain text with no\n * formatting or style information.\n * @event textInteractionModeChange Flash Player dispatches the\n * textInteractionModeChange\n * event when a user changes the interaction\n * mode of a text field. for example on\n * Android, one can toggle from NORMAL mode\n * to SELECTION mode using context menu\n * options\n */\nclass TextField extends DisplayObject\n{\n\tprivate _bottomScrollV:number;\n\tprivate _caretIndex:number;\n\tprivate _length:number;\n\tprivate _maxScrollH:number;\n\tprivate _maxScrollV:number;\n\tprivate _numLines:number;\n\tprivate _selectionBeginIndex:number;\n\tprivate _selectionEndIndex:number;\n\tprivate _text:string = \"\";\n\tprivate _textHeight:number;\n\tprivate _textInteractionMode:TextInteractionMode;\n\tprivate _textWidth:number;\n\n\tprivate _charBoundaries:Rectangle;\n\tprivate _charIndexAtPoint:number;\n\tprivate _firstCharInParagraph:number;\n\tprivate _imageReference:DisplayObject\n\tprivate _lineIndexAtPoint:number;\n\tprivate _lineIndexOfChar:number;\n\tprivate _lineLength:number;\n\tprivate _lineMetrics:TextLineMetrics;\n\tprivate _lineOffset:number;\n\tprivate _lineText:string;\n\tprivate _paragraphLength:number;\n\tprivate _textFormat:TextFormat;\n\n\t/**\n\t * When set to true and the text field is not in focus, Flash\n\t * Player highlights the selection in the text field in gray. When set to\n\t * false and the text field is not in focus, Flash Player does\n\t * not highlight the selection in the text field.\n\t * \n\t * @default false\n\t */\n\tpublic alwaysShowSelection:boolean\n\n\t/**\n\t * The type of anti-aliasing used for this text field. Use\n\t * flash.text.AntiAliasType constants for this property. You can\n\t * control this setting only if the font is embedded(with the\n\t * embedFonts property set to true). The default\n\t * setting is flash.text.AntiAliasType.NORMAL.\n\t *\n\t *

To set values for this property, use the following string values:

\n\t */\n\tpublic antiAliasType:AntiAliasType;\n\n\t/**\n\t * Controls automatic sizing and alignment of text fields. Acceptable values\n\t * for the TextFieldAutoSize constants:\n\t * TextFieldAutoSize.NONE(the default),\n\t * TextFieldAutoSize.LEFT, TextFieldAutoSize.RIGHT,\n\t * and TextFieldAutoSize.CENTER.\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.NONE\n\t * (the default) no resizing occurs.

\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.LEFT,\n\t * the text is treated as left-justified text, meaning that the left margin\n\t * of the text field remains fixed and any resizing of a single line of the\n\t * text field is on the right margin. If the text includes a line break(for\n\t * example, \"\\n\" or \"\\r\"), the bottom is also\n\t * resized to fit the next line of text. If wordWrap is also set\n\t * to true, only the bottom of the text field is resized and the\n\t * right side remains fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.RIGHT, the text is treated as\n\t * right-justified text, meaning that the right margin of the text field\n\t * remains fixed and any resizing of a single line of the text field is on\n\t * the left margin. If the text includes a line break(for example,\n\t * \"\\n\" or \"\\r\"), the bottom is also resized to fit the next\n\t * line of text. If wordWrap is also set to true,\n\t * only the bottom of the text field is resized and the left side remains\n\t * fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.CENTER, the text is treated as\n\t * center-justified text, meaning that any resizing of a single line of the\n\t * text field is equally distributed to both the right and left margins. If\n\t * the text includes a line break(for example, \"\\n\" or\n\t * \"\\r\"), the bottom is also resized to fit the next line of\n\t * text. If wordWrap is also set to true, only the\n\t * bottom of the text field is resized and the left and right sides remain\n\t * fixed.

\n\t * \n\t * @throws ArgumentError The autoSize specified is not a member\n\t * of flash.text.TextFieldAutoSize.\n\t */\n\tpublic autoSize:TextFieldAutoSize;\n\n\t/**\n\t * Specifies whether the text field has a background fill. If\n\t * true, the text field has a background fill. If\n\t * false, the text field has no background fill. Use the\n\t * backgroundColor property to set the background color of a\n\t * text field.\n\t * \n\t * @default false\n\t */\n\tpublic background:boolean;\n\n\t/**\n\t * The color of the text field background. The default value is\n\t * 0xFFFFFF(white). This property can be retrieved or set, even\n\t * if there currently is no background, but the color is visible only if the\n\t * text field has the background property set to\n\t * true.\n\t */\n\tpublic backgroundColor:number /*int*/;\n\n\t/**\n\t * Specifies whether the text field has a border. If true, the\n\t * text field has a border. If false, the text field has no\n\t * border. Use the borderColor property to set the border color.\n\t * \n\t * @default false\n\t */\n\tpublic border:boolean;\n\n\t/**\n\t * The color of the text field border. The default value is\n\t * 0x000000(black). This property can be retrieved or set, even\n\t * if there currently is no border, but the color is visible only if the text\n\t * field has the border property set to true.\n\t */\n\tpublic borderColor:number /*int*/;\n\n\t/**\n\t * An integer(1-based index) that indicates the bottommost line that is\n\t * currently visible in the specified text field. Think of the text field as\n\t * a window onto a block of text. The scrollV property is the\n\t * 1-based index of the topmost visible line in the window.\n\t *\n\t *

All the text between the lines indicated by scrollV and\n\t * bottomScrollV is currently visible in the text field.

\n\t */\n\tpublic get bottomScrollV():number /*int*/\n\t{\n\t\treturn this._bottomScrollV;\n\t}\n\n\t/**\n\t * The index of the insertion point(caret) position. If no insertion point\n\t * is displayed, the value is the position the insertion point would be if\n\t * you restored focus to the field(typically where the insertion point last\n\t * was, or 0 if the field has not had focus).\n\t *\n\t *

Selection span indexes are zero-based(for example, the first position\n\t * is 0, the second position is 1, and so on).

\n\t */\n\tpublic get caretIndex():number /*int*/\n\t{\n\t\treturn this._caretIndex;\n\t}\n\n\t/**\n\t * A Boolean value that specifies whether extra white space(spaces, line\n\t * breaks, and so on) in a text field with HTML text is removed. The default\n\t * value is false. The condenseWhite property only\n\t * affects text set with the htmlText property, not the\n\t * text property. If you set text with the text\n\t * property, condenseWhite is ignored.\n\t *\n\t *

If condenseWhite is set to true, use standard\n\t * HTML commands such as
and

to place line\n\t * breaks in the text field.

\n\t *\n\t *

Set the condenseWhite property before setting the\n\t * htmlText property.

\n\t */\n\tpublic condenseWhite:boolean;\n\n\t/**\n\t * Specifies the format applied to newly inserted text, such as text entered\n\t * by a user or text inserted with the replaceSelectedText()\n\t * method.\n\t *\n\t *

Note: When selecting characters to be replaced with\n\t * setSelection() and replaceSelectedText(), the\n\t * defaultTextFormat will be applied only if the text has been\n\t * selected up to and including the last character. Here is an example:

\n\t *
 public my_txt:TextField new TextField();\n\t * my_txt.text = \"Flash Macintosh version\"; public my_fmt:TextFormat = new\n\t * TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt;\n\t * my_txt.setSelection(6,15); // partial text selected - defaultTextFormat\n\t * not applied my_txt.setSelection(6,23); // text selected to end -\n\t * defaultTextFormat applied my_txt.replaceSelectedText(\"Windows version\");\n\t * 
\n\t *\n\t *

When you access the defaultTextFormat property, the\n\t * returned TextFormat object has all of its properties defined. No property\n\t * is null.

\n\t *\n\t *

Note: You can't set this property if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic defaultTextFormat:TextFormat;\n\n\t/**\n\t * Specifies whether the text field is a password text field. If the value of\n\t * this property is true, the text field is treated as a\n\t * password text field and hides the input characters using asterisks instead\n\t * of the actual characters. If false, the text field is not\n\t * treated as a password text field. When password mode is enabled, the Cut\n\t * and Copy commands and their corresponding keyboard shortcuts will not\n\t * function. This security mechanism prevents an unscrupulous user from using\n\t * the shortcuts to discover a password on an unattended computer.\n\t * \n\t * @default false\n\t */\n\tpublic displayAsPassword:boolean;\n\n\t/**\n\t * Specifies whether to render by using embedded font outlines. If\n\t * false, Flash Player renders the text field by using device\n\t * fonts.\n\t *\n\t *

If you set the embedFonts property to true\n\t * for a text field, you must specify a font for that text by using the\n\t * font property of a TextFormat object applied to the text\n\t * field. If the specified font is not embedded in the SWF file, the text is\n\t * not displayed.

\n\t * \n\t * @default false\n\t */\n\tpublic embedFonts:boolean;\n\n\t/**\n\t * The type of grid fitting used for this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED.\n\t *\n\t *

The type of grid fitting used determines whether Flash Player forces\n\t * strong horizontal and vertical lines to fit to a pixel or subpixel grid,\n\t * or not at all.

\n\t *\n\t *

For the flash.text.GridFitType property, you can use the\n\t * following string values:

\n\t * \n\t * @default pixel\n\t */\n\tpublic gridFitType:GridFitType;\n\n\t/**\n\t * Contains the HTML representation of the text field contents.\n\t *\n\t *

Flash Player supports the following HTML tags:

\n\t *\n\t *

Flash Player and AIR also support explicit character codes, such as\n\t * &(ASCII ampersand) and €(Unicode € symbol).

\n\t */\n\tpublic htmlText:string;\n\n\t/**\n\t * The number of characters in a text field. A character such as tab\n\t * (\\t) counts as one character.\n\t */\n\tpublic get length():number /*int*/\n\t{\n\t\treturn this._length;\n\t}\n\n\t/**\n\t * The maximum number of characters that the text field can contain, as\n\t * entered by a user. A script can insert more text than\n\t * maxChars allows; the maxChars property indicates\n\t * only how much text a user can enter. If the value of this property is\n\t * 0, a user can enter an unlimited amount of text.\n\t * \n\t * @default 0\n\t */\n\tpublic maxChars:number /*int*/;\n\n\t/**\n\t * The maximum value of scrollH.\n\t */\n\tpublic maxScrollH():number /*int*/\n\t{\n\t\treturn this._maxScrollH;\n\t}\n\n\t/**\n\t * The maximum value of scrollV.\n\t */\n\tpublic maxScrollV():number /*int*/\n\t{\n\t\treturn this._maxScrollV;\n\t}\n\n\t/**\n\t * A Boolean value that indicates whether Flash Player automatically scrolls\n\t * multiline text fields when the user clicks a text field and rolls the\n\t * mouse wheel. By default, this value is true. This property is\n\t * useful if you want to prevent mouse wheel scrolling of text fields, or\n\t * implement your own text field scrolling.\n\t */\n\tpublic mouseWheelEnabled:boolean;\n\n\t/**\n\t * Indicates whether field is a multiline text field. If the value is\n\t * true, the text field is multiline; if the value is\n\t * false, the text field is a single-line text field. In a field\n\t * of type TextFieldType.INPUT, the multiline value\n\t * determines whether the Enter key creates a new line(a value\n\t * of false, and the Enter key is ignored). If you\n\t * paste text into a TextField with a multiline\n\t * value of false, newlines are stripped out of the text.\n\t * \n\t * @default false\n\t */\n\tpublic multiline:boolean;\n\n\t/**\n\t * Defines the number of text lines in a multiline text field. If\n\t * wordWrap property is set to true, the number of\n\t * lines increases when text wraps.\n\t */\n\tpublic get numLines():number /*int*/\n\t{\n\t\treturn this._numLines;\n\t}\n\n\t/**\n\t * Indicates the set of characters that a user can enter into the text field.\n\t * If the value of the restrict property is null,\n\t * you can enter any character. If the value of the restrict\n\t * property is an empty string, you cannot enter any character. If the value\n\t * of the restrict property is a string of characters, you can\n\t * enter only characters in the string into the text field. The string is\n\t * scanned from left to right. You can specify a range by using the hyphen\n\t * (-) character. Only user interaction is restricted; a script can put any\n\t * text into the text field. This property does\n\t * not synchronize with the Embed font options in the Property inspector.\n\t *\n\t *

If the string begins with a caret(^) character, all characters are\n\t * initially accepted and succeeding characters in the string are excluded\n\t * from the set of accepted characters. If the string does not begin with a\n\t * caret(^) character, no characters are initially accepted and succeeding\n\t * characters in the string are included in the set of accepted\n\t * characters.

\n\t *\n\t *

The following example allows only uppercase characters, spaces, and\n\t * numbers to be entered into a text field:

\n\t *
 my_txt.restrict = \"A-Z 0-9\"; 
\n\t *\n\t *

The following example includes all characters, but excludes lowercase\n\t * letters:

\n\t *
 my_txt.restrict = \"^a-z\"; 
\n\t *\n\t *

You can use a backslash to enter a ^ or - verbatim. The accepted\n\t * backslash sequences are \\-, \\^ or \\\\. The backslash must be an actual\n\t * character in the string, so when specified in ActionScript, a double\n\t * backslash must be used. For example, the following code includes only the\n\t * dash(-) and caret(^):

\n\t *
 my_txt.restrict = \"\\\\-\\\\^\"; 
\n\t *\n\t *

The ^ can be used anywhere in the string to toggle between including\n\t * characters and excluding characters. The following code includes only\n\t * uppercase letters, but excludes the uppercase letter Q:

\n\t *
 my_txt.restrict = \"A-Z^Q\"; 
\n\t *\n\t *

You can use the \\u escape sequence to construct\n\t * restrict strings. The following code includes only the\n\t * characters from ASCII 32(space) to ASCII 126(tilde).

\n\t *
 my_txt.restrict = \"\\u0020-\\u007E\"; 
\n\t * \n\t * @default null\n\t */\n\tpublic restrict:string;\n\n\t/**\n\t * The current horizontal scrolling position. If the scrollH\n\t * property is 0, the text is not horizontally scrolled. This property value\n\t * is an integer that represents the horizontal position in pixels.\n\t *\n\t *

The units of horizontal scrolling are pixels, whereas the units of\n\t * vertical scrolling are lines. Horizontal scrolling is measured in pixels\n\t * because most fonts you typically use are proportionally spaced; that is,\n\t * the characters can have different widths. Flash Player performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if a line uses multiple fonts, the\n\t * height of the line adjusts to fit the largest font in use.

\n\t *\n\t *

Note: The scrollH property is zero-based, not\n\t * 1-based like the scrollV vertical scrolling property.

\n\t */\n\tpublic scrollH:number;\n\n\t/**\n\t * The vertical position of text in a text field. The scrollV\n\t * property is useful for directing users to a specific paragraph in a long\n\t * passage, or creating scrolling text fields.\n\t *\n\t *

The units of vertical scrolling are lines, whereas the units of\n\t * horizontal scrolling are pixels. If the first line displayed is the first\n\t * line in the text field, scrollV is set to 1(not 0). Horizontal scrolling\n\t * is measured in pixels because most fonts are proportionally spaced; that\n\t * is, the characters can have different widths. Flash performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if there are multiple fonts on a\n\t * line, the height of the line adjusts to fit the largest font in use.

\n\t */\n\tpublic scrollV:number;\n\n\t/**\n\t * A Boolean value that indicates whether the text field is selectable. The\n\t * value true indicates that the text is selectable. The\n\t * selectable property controls whether a text field is\n\t * selectable, not whether a text field is editable. A dynamic text field can\n\t * be selectable even if it is not editable. If a dynamic text field is not\n\t * selectable, the user cannot select its text.\n\t *\n\t *

If selectable is set to false, the text in\n\t * the text field does not respond to selection commands from the mouse or\n\t * keyboard, and the text cannot be copied with the Copy command. If\n\t * selectable is set to true, the text in the text\n\t * field can be selected with the mouse or keyboard, and the text can be\n\t * copied with the Copy command. You can select text this way even if the\n\t * text field is a dynamic text field instead of an input text field.

\n\t * \n\t * @default true\n\t */\n\tpublic selectable:boolean;\n\n\t/**\n\t * The zero-based character index value of the first character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionBeginIndex():number /*int*/\n\t{\n\t\treturn this._selectionBeginIndex;\n\t}\n\n\t/**\n\t * The zero-based character index value of the last character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionEndIndex():number /*int*/\n\t{\n\t\treturn this._selectionEndIndex;\n\t}\n\n\t/**\n\t * The sharpness of the glyph edges in this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED. The range\n\t * for sharpness is a number from -400 to 400. If you attempt to\n\t * set sharpness to a value outside that range, Flash sets the\n\t * property to the nearest value in the range(either -400 or 400).\n\t * \n\t * @default 0\n\t */\n\tpublic sharpness:number;\n\n\t/**\n\t * Attaches a style sheet to the text field. For information on creating\n\t * style sheets, see the StyleSheet class and the ActionScript 3.0\n\t * Developer's Guide.\n\t *\n\t *

You can change the style sheet associated with a text field at any\n\t * time. If you change the style sheet in use, the text field is redrawn with\n\t * the new style sheet. You can set the style sheet to null or\n\t * undefined to remove the style sheet. If the style sheet in\n\t * use is removed, the text field is redrawn without a style sheet.

\n\t *\n\t *

Note: If the style sheet is removed, the contents of both\n\t * TextField.text and TextField.htmlText change to\n\t * incorporate the formatting previously applied by the style sheet. To\n\t * preserve the original TextField.htmlText contents without the\n\t * formatting, save the value in a variable before removing the style\n\t * sheet.

\n\t */\n\tpublic styleSheet:StyleSheet;\n\n\t/**\n\t * A string that is the current text in the text field. Lines are separated\n\t * by the carriage return character('\\r', ASCII 13). This\n\t * property contains unformatted text in the text field, without HTML tags.\n\t *\n\t *

To get the text in HTML form, use the htmlText\n\t * property.

\n\t */\n\tpublic get text():string\n\t{\n\t\treturn this._text;\n\t}\n\n\tpublic set text(value:string)\n\t{\n\t\tif (this._text == value)\n\t\t\treturn;\n\n\t\tthis._text = value;\n\t}\n\n\t/**\n\t * The color of the text in a text field, in hexadecimal format. The\n\t * hexadecimal color system uses six digits to represent color values. Each\n\t * digit has 16 possible values or characters. The characters range from 0-9\n\t * and then A-F. For example, black is 0x000000; white is\n\t * 0xFFFFFF.\n\t * \n\t * @default 0(0x000000)\n\t */\n\tpublic textColor:number /*int*/;\n\n\t/**\n\t * The height of the text in pixels.\n\t */\n\tpublic get textHeight():number\n\t{\n\t\treturn this._textHeight;\n\t}\n\n\t/**\n\t * The interaction mode property, Default value is\n\t * TextInteractionMode.NORMAL. On mobile platforms, the normal mode implies\n\t * that the text can be scrolled but not selected. One can switch to the\n\t * selectable mode through the in-built context menu on the text field. On\n\t * Desktop, the normal mode implies that the text is in scrollable as well as\n\t * selection mode.\n\t */\n\tpublic get textInteractionMode():TextInteractionMode\n\t{\n\t\treturn this._textInteractionMode;\n\t}\n\n\t/**\n\t * The width of the text in pixels.\n\t */\n\tpublic get textWidth():number\n\t{\n\t\treturn this._textWidth;\n\t}\n\n\t/**\n\t * The thickness of the glyph edges in this text field. This property applies\n\t * only when AntiAliasType is set to\n\t * AntiAliasType.ADVANCED.\n\t *\n\t *

The range for thickness is a number from -200 to 200. If\n\t * you attempt to set thickness to a value outside that range,\n\t * the property is set to the nearest value in the range(either -200 or\n\t * 200).

\n\t * \n\t * @default 0\n\t */\n\tpublic thickness:number;\n\n\t/**\n\t * The type of the text field. Either one of the following TextFieldType\n\t * constants: TextFieldType.DYNAMIC, which specifies a dynamic\n\t * text field, which a user cannot edit, or TextFieldType.INPUT,\n\t * which specifies an input text field, which a user can edit.\n\t * \n\t * @default dynamic\n\t * @throws ArgumentError The type specified is not a member of\n\t * flash.text.TextFieldType.\n\t */\n\tpublic type:TextFieldType;\n\n\t/**\n\t * Specifies whether to copy and paste the text formatting along with the\n\t * text. When set to true, Flash Player copies and pastes\n\t * formatting(such as alignment, bold, and italics) when you copy and paste\n\t * between text fields. Both the origin and destination text fields for the\n\t * copy and paste procedure must have useRichTextClipboard set\n\t * to true. The default value is false.\n\t */\n\tpublic useRichTextClipboard:boolean;\n\n\t/**\n\t * A Boolean value that indicates whether the text field has word wrap. If\n\t * the value of wordWrap is true, the text field\n\t * has word wrap; if the value is false, the text field does not\n\t * have word wrap. The default value is false.\n\t */\n\tpublic wordWrap:boolean;\n\n\t/**\n\t * Creates a new TextField instance. After you create the TextField instance,\n\t * call the addChild() or addChildAt() method of\n\t * the parent DisplayObjectContainer object to add the TextField instance to\n\t * the display list.\n\t *\n\t *

The default size for a text field is 100 x 100 pixels.

\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Appends the string specified by the newText parameter to the\n\t * end of the text of the text field. This method is more efficient than an\n\t * addition assignment(+=) on a text property\n\t * (such as someTextField.text += moreText), particularly for a\n\t * text field that contains a significant amount of content.\n\t * \n\t * @param newText The string to append to the existing text.\n\t */\n\tpublic appendText(newText:string)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Returns a rectangle that is the bounding box of the character.\n\t * \n\t * @param charIndex The zero-based index value for the character(for\n\t * example, the first position is 0, the second position is\n\t * 1, and so on).\n\t * @return A rectangle with x and y minimum and\n\t * maximum values defining the bounding box of the character.\n\t */\n\tpublic getCharBoundaries(charIndex:number):Rectangle\n\t{\n\t\treturn this._charBoundaries;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the character at the point specified\n\t * by the x and y parameters.\n\t * \n\t * @param x The x coordinate of the character.\n\t * @param y The y coordinate of the character.\n\t * @return The zero-based index value of the character(for example, the\n\t * first position is 0, the second position is 1, and so on). Returns\n\t * -1 if the point is not over any character.\n\t */\n\tpublic getCharIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._charIndexAtPoint;\n\t}\n\n\t/**\n\t * Given a character index, returns the index of the first character in the\n\t * same paragraph.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the first character in the same\n\t * paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getFirstCharInParagraph(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._firstCharInParagraph;\n\t}\n\n\t/**\n\t * Returns a DisplayObject reference for the given id, for an\n\t * image or SWF file that has been added to an HTML-formatted text field by\n\t * using an tag. The tag is in the\n\t * following format:\n\t *\n\t *

 

\n\t * \n\t * @param id The id to match(in the id attribute\n\t * of the tag).\n\t * @return The display object corresponding to the image or SWF file with the\n\t * matching id attribute in the tag\n\t * of the text field. For media loaded from an external source, this\n\t * object is a Loader object, and, once loaded, the media object is a\n\t * child of that Loader object. For media embedded in the SWF file,\n\t * it is the loaded object. If no tag with the\n\t * matching id exists, the method returns\n\t * null.\n\t */\n\tpublic getImageReference(id:string):DisplayObject\n\t{\n\t\treturn this._imageReference;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line at the point specified by\n\t * the x and y parameters.\n\t * \n\t * @param x The x coordinate of the line.\n\t * @param y The y coordinate of the line.\n\t * @return The zero-based index value of the line(for example, the first\n\t * line is 0, the second line is 1, and so on). Returns -1 if the\n\t * point is not over any line.\n\t */\n\tpublic getLineIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._lineIndexAtPoint;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line containing the character\n\t * specified by the charIndex parameter.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the line.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getLineIndexOfChar(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineIndexOfChar;\n\t}\n\n\t/**\n\t * Returns the number of characters in a specific text line.\n\t * \n\t * @param lineIndex The line number for which you want the length.\n\t * @return The number of characters in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineLength(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineLength;\n\t}\n\n\t/**\n\t * Returns metrics information about a given text line.\n\t * \n\t * @param lineIndex The line number for which you want metrics information.\n\t * @return A TextLineMetrics object.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineMetrics(lineIndex:number /*int*/):TextLineMetrics\n\t{\n\t\treturn this._lineMetrics;\n\t}\n\n\t/**\n\t * Returns the character index of the first character in the line that the\n\t * lineIndex parameter specifies.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The zero-based index value of the first character in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineOffset(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineOffset;\n\t}\n\n\t/**\n\t * Returns the text of the line specified by the lineIndex\n\t * parameter.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The text string contained in the specified line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineText(lineIndex:number /*int*/):string\n\t{\n\t\treturn this._lineText;\n\t}\n\n\t/**\n\t * Given a character index, returns the length of the paragraph containing\n\t * the given character. The length is relative to the first character in the\n\t * paragraph(as returned by getFirstCharInParagraph()), not to\n\t * the character index passed in.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return Returns the number of characters in the paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getParagraphLength(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._paragraphLength;\n\t}\n\n\t/**\n\t * Returns a TextFormat object that contains formatting information for the\n\t * range of text that the beginIndex and endIndex\n\t * parameters specify. Only properties that are common to the entire text\n\t * specified are set in the resulting TextFormat object. Any property that is\n\t * mixed, meaning that it has different values at different points in\n\t * the text, has a value of null.\n\t *\n\t *

If you do not specify values for these parameters, this method is\n\t * applied to all the text in the text field.

\n\t *\n\t *

The following table describes three possible usages:

\n\t * \n\t * @return The TextFormat object that represents the formatting properties\n\t * for the specified text.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic getTextFormat(beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1):TextFormat\n\t{\n\t\treturn this._textFormat;\n\t}\n\n\t/**\n\t * Replaces the current selection with the contents of the value\n\t * parameter. The text is inserted at the position of the current selection,\n\t * using the current default character format and default paragraph format.\n\t * The text is not treated as HTML.\n\t *\n\t *

You can use the replaceSelectedText() method to insert and\n\t * delete text without disrupting the character and paragraph formatting of\n\t * the rest of the text.

\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param value The string to replace the currently selected text.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceSelectedText(value:string)\n\t{\n\n\t}\n\n\t/**\n\t * Replaces the range of characters that the beginIndex and\n\t * endIndex parameters specify with the contents of the\n\t * newText parameter. As designed, the text from\n\t * beginIndex to endIndex-1 is replaced.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param beginIndex The zero-based index value for the start position of the\n\t * replacement range.\n\t * @param endIndex The zero-based index position of the first character\n\t * after the desired text span.\n\t * @param newText The text to use to replace the specified range of\n\t * characters.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceText(beginIndex:number /*int*/, endIndex:number /*int*/, newText:string)\n\t{\n\n\t}\n\n\t/**\n\t * Sets as selected the text designated by the index values of the first and\n\t * last characters, which are specified with the beginIndex and\n\t * endIndex parameters. If the two parameter values are the\n\t * same, this method sets the insertion point, as if you set the\n\t * caretIndex property.\n\t * \n\t * @param beginIndex The zero-based index value of the first character in the\n\t * selection(for example, the first character is 0, the\n\t * second character is 1, and so on).\n\t * @param endIndex The zero-based index value of the last character in the\n\t * selection.\n\t */\n\tpublic setSelection(beginIndex:number /*int*/, endIndex:number /*int*/)\n\t{\n\n\t}\n\n\t/**\n\t * Applies the text formatting that the format parameter\n\t * specifies to the specified text in a text field. The value of\n\t * format must be a TextFormat object that specifies the desired\n\t * text formatting changes. Only the non-null properties of\n\t * format are applied to the text field. Any property of\n\t * format that is set to null is not applied. By\n\t * default, all of the properties of a newly created TextFormat object are\n\t * set to null.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t *\n\t *

The setTextFormat() method changes the text formatting\n\t * applied to a range of characters or to the entire body of text in a text\n\t * field. To apply the properties of format to all text in the text field, do\n\t * not specify values for beginIndex and endIndex.\n\t * To apply the properties of the format to a range of text, specify values\n\t * for the beginIndex and the endIndex parameters.\n\t * You can use the length property to determine the index\n\t * values.

\n\t *\n\t *

The two types of formatting information in a TextFormat object are\n\t * character level formatting and paragraph level formatting. Each character\n\t * in a text field can have its own character formatting settings, such as\n\t * font name, font size, bold, and italic.

\n\t *\n\t *

For paragraphs, the first character of the paragraph is examined for\n\t * the paragraph formatting settings for the entire paragraph. Examples of\n\t * paragraph formatting settings are left margin, right margin, and\n\t * indentation.

\n\t *\n\t *

Any text inserted manually by the user, or replaced by the\n\t * replaceSelectedText() method, receives the default text field\n\t * formatting for new text, and not the formatting specified for the text\n\t * insertion point. To set the default formatting for new text, use\n\t * defaultTextFormat.

\n\t * \n\t * @param format A TextFormat object that contains character and paragraph\n\t * formatting information.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic setTextFormat(format:TextFormat, beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1)\n\t{\n\n\t}\n\n\t/**\n\t * Returns true if an embedded font is available with the specified\n\t * fontName and fontStyle where\n\t * Font.fontType is flash.text.FontType.EMBEDDED.\n\t * Starting with Flash Player 10, two kinds of embedded fonts can appear in a\n\t * SWF file. Normal embedded fonts are only used with TextField objects. CFF\n\t * embedded fonts are only used with the flash.text.engine classes. The two\n\t * types are distinguished by the fontType property of the\n\t * Font class, as returned by the enumerateFonts()\n\t * function.\n\t *\n\t *

TextField cannot use a font of type EMBEDDED_CFF. If\n\t * embedFonts is set to true and the only font\n\t * available at run time with the specified name and style is of type\n\t * EMBEDDED_CFF, Flash Player fails to render the text, as if no\n\t * embedded font were available with the specified name and style.

\n\t *\n\t *

If both EMBEDDED and EMBEDDED_CFF fonts are\n\t * available with the same name and style, the EMBEDDED font is\n\t * selected and text renders with the EMBEDDED font.

\n\t * \n\t * @param fontName The name of the embedded font to check.\n\t * @param fontStyle Specifies the font style to check. Use\n\t * flash.text.FontStyle\n\t * @return true if a compatible embedded font is available,\n\t * otherwise false.\n\t * @throws ArgumentError The fontStyle specified is not a member\n\t * of flash.text.FontStyle.\n\t */\n\tpublic static isFontCompatible(fontName:string, fontStyle:string):boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = TextField;", "import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\r\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\r\nimport IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\n//import Transform\t\t\t\t = require(\"awayjs-core/lib/geom/Transform\");\r\nimport Matrix3D\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix3D\");\r\nimport Matrix\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix\");\r\n\r\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\r\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\r\nimport SubGeometry\t\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\r\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\r\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\r\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\r\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\r\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\r\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\r\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\r\nimport DisplayObjectContainer\t\t = require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\r\nimport TimeLineFrame\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineFrame\");\r\nimport TimeLineObject\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineObject\");\r\n\r\n/**\r\n * Timeline is a DisplayObjectContainer, that can control the animation of a list of TimeLineObjects.\r\n * For now, the focus of Development is on animating the new type of 2D-Geometry exported from FlashPro,\r\n * but there is no reason that this cannot be used to animate any type of object, that implements IAsset.\r\n**/\r\nclass TimeLine extends DisplayObjectContainer\r\n{\r\n // pool of available TimeLineObject-objects for this timeline.\r\n // Each TImeLineObject hold reference to a pre-instanced (cloned) IAsset,\r\n // so we do not have to do any cloning while playing.\r\n // If a IAsset is of a type that extends DisplayObject, it gets added as Child, with .visible=false\r\n // we need this list, and can not use the children-list directly,\r\n // because TimeLine needs to be able to control IAsset that to not extend DisplayObject.\r\n private _timeLineObjs:Array;\r\n\r\n private _frames:Array;\r\n private _time:number;// the current time inside the animation\r\n private _currentFrame:number;// the current frame\r\n private _speed:number;// the speed of animation. for now keep it positive, as reverse playing will need changes to the commands\r\n private _fps:number;// we use ms internally, but have fps, so user can set time by frame\r\n private _isplaying:boolean;// false if paused or stopped\r\n private _isInit:boolean;// false if paused or stopped\r\n private _playMode:number;// 0: normal, 1: loop, 2: pingpong\r\n private _duration:number=0;\r\n\r\n constructor()\r\n {\r\n super();\r\n this._timeLineObjs=new Array();\r\n this._frames=new Array();\r\n this._currentFrame=0;\r\n this._speed=1.0;\r\n this._isplaying=false;\r\n this._fps=25;\r\n this._time=0;\r\n this._duration=0;\r\n this._playMode=1;\r\n }\r\n\r\n public get speed():number\r\n {\r\n return this._speed;\r\n }\r\n public set speed(newSpeed:number)\r\n {\r\n this._speed=newSpeed;\r\n }\r\n public get fps():number\r\n {\r\n return this._fps;\r\n }\r\n public set fps(newFps:number)\r\n {\r\n this._fps=newFps;\r\n }\r\n public get assetType():string\r\n {\r\n return AssetType.TIMELINE;\r\n }\r\n\r\n /**\r\n * should be called right before the call to away3d-render.\r\n */\r\n public update(timeDelta:number, jumpingToFrame:boolean=false)\r\n {\r\n var tlo:number;\r\n // only update if playing, or if not init before, or if jumping to frame\r\n if((this._isplaying)||(!this._isInit)||(jumpingToFrame)) {\r\n\r\n // multiply the timeDelta with the speed (can be negative)\r\n // update the this._time accordingly\r\n var timeDelta:number = timeDelta * this._speed;\r\n this._time += timeDelta;\r\n // take care that the _time is within bounds\r\n while(this._time>this._duration){\r\n if(this._playMode==0){\r\n this._time=this._duration;\r\n this.stop();\r\n }\r\n else if(this._playMode==1){\r\n this._time-=this._duration;\r\n }\r\n }\r\n while(this._time<0){\r\n if(this._playMode==0){\r\n this._time=0;\r\n this.stop();\r\n }\r\n else if(this._playMode==1) {\r\n this._time += this._duration;\r\n }\r\n }\r\n\r\n\r\n // now we know the exact time of the animation that we want to display.\r\n // next we need to decide which Frame needs to be displayed. (index in Array)\r\n // this should always be currentFrame, or currentFrame++\r\n // each frame has startTime and EndTime, so we can easily decide\r\n var frameCnt:number = 0;\r\n var curFrame:TimeLineFrame;\r\n var foundFrame:Boolean = false;\r\n // this while loop should only be executed 1-2 times\r\n while (frameCnt < this._frames.length) {\r\n curFrame = this._frames[this._currentFrame];\r\n //console.log(\"searchForFrame==\"+this._time+\" startTime= \"+curFrame.startTime+\" endTime = \"+curFrame.endTime);\r\n\r\n if ((this._time >= curFrame.startTime) && (this._time <= curFrame.endTime)) {\r\n foundFrame = true;\r\n frameCnt = this._frames.length;\r\n }\r\n else {\r\n curFrame.makeDirty();// make sure the frame gets executed next time it should show\r\n if (this._speed < 0) {\r\n this._currentFrame--;\r\n if (this._currentFrame < 0) {\r\n this._currentFrame = this._frames.length - 1;\r\n }\r\n }\r\n else {\r\n this._currentFrame++;\r\n if (this._currentFrame >= this._frames.length) {\r\n this._currentFrame = 0;\r\n }\r\n }\r\n }\r\n frameCnt++;\r\n }\r\n //console.log(\"foundframe=\"+foundFrame+\" thistime= \"+this._time+\" frameIDX = \"+this._currentFrame);\r\n\r\n // if foundFrame is true, curFrame is the frame to display.\r\n if (foundFrame) {\r\n //console.log(\"Frame dirty=\"+curFrame.isDirty);\r\n if(curFrame.isDirty) {\r\n //console.log(\"Reset isOnStage value\");\r\n // reset the \"isOnStage\" state for all the objects\r\n\r\n var commandSet:number=1;// 1 = execute normal playback commands\r\n if(this._speed<0){\r\n commandSet=2;//2 = execute reversed playback commands\r\n }\r\n // if we are jumping Frames, we need to hide all objects and fully init\r\n //if(jumpingToFrame) {\r\n commandSet = 0;//0 = execute full init frame commands\r\n for (tlo = 0; tlo < this._timeLineObjs.length; tlo++) {\r\n if (this._timeLineObjs[tlo].isActive) {\r\n this._timeLineObjs[tlo].deactivate();\r\n }\r\n }\r\n // }\r\n //todo: use the correct set of commands (for now we always use set 1)\r\n curFrame.executeCommands(1, this._time, this._speed);\r\n\r\n // now we have all objects on stage, we can execute the frame script for this frame\r\n this.executeFrameScript(curFrame.script);\r\n\r\n }\r\n else{\r\n // the frame has already been initiated.\r\n // for now we do nothing\r\n // later we might want to implement interpolation here\r\n }\r\n }\r\n this._isInit=true;\r\n }\r\n // update all the visible TimeLineObjects that are of type timeline\r\n for (tlo=0; tlothis._timeLineObjs[tlo].asset).update(timeDelta);\r\n }\r\n }\r\n }\r\n\r\n }\r\n /**\r\n * Add a new TimeLineFrame.\r\n */\r\n public addFrame(newFrame:TimeLineFrame)\r\n {\r\n this._duration+=newFrame.duration;\r\n this._frames.push(newFrame);\r\n }\r\n public get duration():number\r\n {\r\n return this._duration;\r\n }\r\n public set duration(newDuration:number)\r\n {\r\n this._duration=newDuration;\r\n }\r\n /**\r\n * This is called inside the TimeLineFrame.execute() function.\r\n */\r\n public executeFrameScript(frameScript:string)\r\n {\r\n\r\n // this function should interpret the framescript.\r\n // the timeline object offer functions getObjectByInstanceName(instanceName:string)\r\n // a nested movieClip like \"mainWindow.clip1\" could be accessed like this:\r\n // getObjectByInstanceName(\"mainWindow\").getObjectByInstanceName(\"clip1\")\r\n\r\n // the AssetLibrary can be used as equivalent for the flash-library.\r\n // it already has options to access library-assets by name, so i think we can work with that.\r\n\r\n }\r\n /**\r\n * Starts playback of animation from current position\r\n */\r\n public start() {\r\n this._isplaying=true;\r\n this.update(0);\r\n }\r\n /**\r\n * Stop playback of animation and hold current position\r\n */\r\n public stop() {\r\n this._isplaying=false;// no need to call any other stuff\r\n }\r\n\r\n /**\r\n * Classic gotoAndPlay like as3 api - set frame by frame-number.\r\n */\r\n public gotoAndPlay(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * Classic gotoAndStop as3 api - set frame by frame-number.\r\n */\r\n public gotoAndStop(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n /**\r\n * gotoAndPlay - set frame by frame-label.\r\n */\r\n public gotoAndPlayLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this._isplaying = true;\r\n this.update(0, true);\r\n }\r\n }\r\n /**\r\n * gotoAndStop - set frame by frame-label.\r\n */\r\n public gotoAndStopLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this.update(0, true);\r\n this._isplaying = false;\r\n }\r\n }\r\n /**\r\n * gotoAndPlay - set time in ms.\r\n */\r\n public gotoAndPlayTime(time:number){\r\n this._time=time;\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * gotoAndStop - set time in ms.\r\n */\r\n public gotoAndStopTime(time:number){\r\n this._time=time;\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n\r\n public addTimeLineObject(newTlObj:TimeLineObject, isDisplayObj:boolean=true) {\r\n if (isDisplayObj) {\r\n this.addChild(newTlObj.asset);\r\n }\r\n newTlObj.deactivate();\r\n this._timeLineObjs.push(newTlObj);\r\n }\r\n public getTimeLineObjectByID(objID:number):TimeLineObject\r\n {\r\n for (var tlo:number=0; tlo = new Array();\n\n\tpublic _iActiveDiv:HTMLDivElement;\n\tpublic _iUpdateDirty:boolean;\n\tpublic _iCollidingObject:PickingCollisionVO;\n\t\n\tprivate _nullVector:Vector3D = new Vector3D();\n\tprivate _previousCollidingObject:PickingCollisionVO;\n\tprivate _queuedEvents:Array = new Array();\n\n\tprivate _mouseMoveEvent:MouseEvent;\n\n\tprivate _mouseUp:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_UP);\n\tprivate _mouseClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.CLICK);\n\tprivate _mouseOut:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OUT);\n\tprivate _mouseDown:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_DOWN);\n\tprivate _mouseMove:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_MOVE);\n\tprivate _mouseOver:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OVER);\n\tprivate _mouseWheel:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_WHEEL);\n\tprivate _mouseDoubleClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.DOUBLE_CLICK);\n\n\tprivate onClickDelegate:(event:MouseEvent) => void;\n\tprivate onDoubleClickDelegate:(event:MouseEvent) => void;\n\tprivate onMouseDownDelegate:(event:MouseEvent) => void;\n\tprivate onMouseMoveDelegate:(event:MouseEvent) => void;\n\tprivate onMouseUpDelegate:(event:MouseEvent) => void;\n\tprivate onMouseWheelDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOverDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOutDelegate:(event:MouseEvent) => void;\n\n\t/**\n\t * Creates a new MouseManager object.\n\t */\n\tconstructor()\n\t{\n\t\tthis.onClickDelegate = (event:MouseEvent) => this.onClick(event);\n\t\tthis.onDoubleClickDelegate = (event:MouseEvent) => this.onDoubleClick(event);\n\t\tthis.onMouseDownDelegate = (event:MouseEvent) => this.onMouseDown(event);\n\t\tthis.onMouseMoveDelegate = (event:MouseEvent) => this.onMouseMove(event);\n\t\tthis.onMouseUpDelegate = (event:MouseEvent) => this.onMouseUp(event);\n\t\tthis.onMouseWheelDelegate = (event:MouseEvent) => this.onMouseWheel(event);\n\t\tthis.onMouseOverDelegate = (event:MouseEvent) => this.onMouseOver(event);\n\t\tthis.onMouseOutDelegate = (event:MouseEvent) => this.onMouseOut(event);\n\t}\n\n\tpublic static getInstance():MouseManager\n\t{\n\t\tif (this._instance)\n\t\t\treturn this._instance;\n\n\t\treturn (this._instance = new MouseManager());\n\t}\n\n\tpublic fireMouseEvents(forceMouseMove:boolean)\n\t{\n\t\t // If colliding object has changed, queue over/out events.\n\t\tif (this._iCollidingObject != this._previousCollidingObject) {\n\t\t\tif (this._previousCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOut, this._mouseMoveEvent, this._previousCollidingObject);\n\n\t\t\tif (this._iCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOver, this._mouseMoveEvent);\n\t\t}\n\n\t\t // Fire mouse move events here if forceMouseMove is on.\n\t\tif (forceMouseMove && this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseMove, this._mouseMoveEvent);\n\n\t\tvar event:AwayMouseEvent;\n\t\tvar dispatcher:DisplayObject;\n\n\t\t // Dispatch all queued events.\n\t\tvar len:number = this._queuedEvents.length;\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\t// Only dispatch from first implicitly enabled object ( one that is not a child of a mouseChildren = false hierarchy ).\n\t\t\tevent = this._queuedEvents[i];\n\t\t\tdispatcher = event.object;\n\n\t\t\twhile (dispatcher && !dispatcher._iIsMouseEnabled())\n\t\t\t\tdispatcher = dispatcher.parent;\n\n\t\t\tif (dispatcher)\n\t\t\t\tdispatcher.dispatchEvent(event);\n\t\t}\n\n\t\tthis._queuedEvents.length = 0;\n\n\t\tthis._previousCollidingObject = this._iCollidingObject;\n\n\t\tthis._iUpdateDirty = false;\n\t}\n\n//\t\tpublic addViewLayer(view:View)\n//\t\t{\n//\t\t\tvar stg:Stage = view.stage;\n//\n//\t\t\t// Add instance to mouse3dmanager to fire mouse events for multiple views\n//\t\t\tif (!view.stageGL.mouse3DManager)\n//\t\t\t\tview.stageGL.mouse3DManager = this;\n//\n//\t\t\tif (!hasKey(view))\n//\t\t\t\t_view3Ds[view] = 0;\n//\n//\t\t\t_childDepth = 0;\n//\t\t\ttraverseDisplayObjects(stg);\n//\t\t\t_viewCount = _childDepth;\n//\t\t}\n\n\tpublic registerView(view:View)\n\t{\n\t\tview.htmlElement.addEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.addEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.addEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.addEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.addEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.push(view);\n\t}\n\n\tpublic unregisterView(view:View)\n\t{\n\t\tview.htmlElement.removeEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.slice(this._viewLookup.indexOf(view), 1);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Private.\n\t// ---------------------------------------------------------------------\n\n\tprivate queueDispatch(event:AwayMouseEvent, sourceEvent:MouseEvent, collider:PickingCollisionVO = null)\n\t{\n\t\t// 2D properties.\n\t\tif (sourceEvent) {\n\t\t\tevent.ctrlKey = sourceEvent.ctrlKey;\n\t\t\tevent.altKey = sourceEvent.altKey;\n\t\t\tevent.shiftKey = sourceEvent.shiftKey;\n\t\t\tevent.screenX = sourceEvent.clientX;\n\t\t\tevent.screenY = sourceEvent.clientY;\n\t\t}\n\n\t\tif (collider == null)\n\t\t\tcollider = this._iCollidingObject;\n\n\t\t// 3D properties.\n\t\tif (collider) {\n\t\t\t// Object.\n\t\t\tevent.object = collider.displayObject;\n\t\t\tevent.renderableOwner = collider.renderableOwner;\n\t\t\t// UV.\n\t\t\tevent.uv = collider.uv;\n\t\t\t// Position.\n\t\t\tevent.localPosition = collider.localPosition? collider.localPosition.clone() : null;\n\t\t\t// Normal.\n\t\t\tevent.localNormal = collider.localNormal? collider.localNormal.clone() : null;\n\t\t\t// Face index.\n\t\t\tevent.index = collider.index;\n\t\t} else {\n\t\t\t// Set all to null.\n\t\t\tevent.uv = null;\n\t\t\tevent.object = null;\n\t\t\tevent.localPosition = this._nullVector;\n\t\t\tevent.localNormal = this._nullVector;\n\t\t\tevent.index = 0;\n\t\t\tevent.subGeometryIndex = 0;\n\t\t}\n\n\t\t// Store event to be dispatched later.\n\t\tthis._queuedEvents.push(event);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Listeners.\n\t// ---------------------------------------------------------------------\n\n\tprivate onMouseMove(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseMove, this._mouseMoveEvent = event);\n\t}\n\n\tprivate onMouseOut(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = null;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseOut, event);\n\t}\n\n\tprivate onMouseOver(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseOver, event);\n\t}\n\n\tprivate onClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseClick, event);\n\t}\n\n\tprivate onDoubleClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDoubleClick, event);\n\t}\n\n\tprivate onMouseDown(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDown, event);\n\t}\n\n\tprivate onMouseUp(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseUp , event);\n\t}\n\n\tprivate onMouseWheel(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseWheel, event);\n\t}\n\n\n\tprivate updateColliders(event:MouseEvent)\n\t{\n\t\tif (this._iUpdateDirty)\n\t\t\treturn;\n\n\t\tvar view:View;\n\t\tvar bounds:ClientRect;\n\t\tvar mouseX:number = event.clientX;\n\t\tvar mouseY:number = event.clientY;\n\t\tvar len:number = this._viewLookup.length;\n\t\tfor (var i:number = 0; i < len; i++) {\n\t\t\tview = this._viewLookup[i];\n\t\t\tbounds = view.htmlElement.getBoundingClientRect();\n\t\t\tif (mouseX < bounds.left || mouseX > bounds.right || mouseY < bounds.top || mouseY > bounds.bottom) {\n\t\t\t\tview._pMouseX = null;\n\t\t\t\tview._pMouseY = null;\n\t\t\t} else {\n\t\t\t\tview._pMouseX = mouseX + bounds.left;\n\t\t\t\tview._pMouseY = mouseY + bounds.top;\n\t\t\t\tview.updateCollider();\n\n\t\t\t\tif (view.layeredView && this._iCollidingObject)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._iUpdateDirty = true;\n\t}\n}\n\nexport = MouseManager;", - "import Matrix\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport TriangleSubGeometry\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\n\n/**\n * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nclass BasicMaterial extends MaterialBase\n{\n\tprivate _alphaBlending:boolean = false;\n\tprivate _alpha:number = 1;\n\n\t/**\n\t * Creates a new BasicMaterial object.\n\t *\n\t * @param texture The texture used for the material's albedo color.\n\t * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true.\n\t * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to false.\n\t * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to false.\n\t */\n\tconstructor(texture?:Texture2DBase, smooth?:boolean, repeat?:boolean, mipmap?:boolean);\n\tconstructor(color?:number, alpha?:number);\n\tconstructor(textureColor:any = null, smoothAlpha:any = null, repeat:boolean = false, mipmap:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tif (textureColor instanceof Texture2DBase) {\n\t\t\tthis.texture = textureColor;\n\n\t\t\tthis.smooth = (smoothAlpha == null)? true : false;\n\t\t\tthis.repeat = repeat;\n\t\t\tthis.mipmap = mipmap;\n\t\t} else {\n\t\t\tthis.color = textureColor? Number(textureColor) : 0xCCCCCC;\n\t\t\tthis.alpha = (smoothAlpha == null)? 1 : Number(smoothAlpha);\n\t\t}\n\t}\n\n\t/**\n\t * The alpha of the surface.\n\t */\n\tpublic get alpha():number\n\t{\n\t\treturn this._alpha;\n\t}\n\n\tpublic set alpha(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1;\n\t\telse if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tif (this._alpha == value)\n\t\t\treturn;\n\n\t\tthis._alpha = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Indicates whether or not the material has transparency. If binary transparency is sufficient, for\n\t * example when using textures of foliage, consider using alphaThreshold instead.\n\t */\n\tpublic get alphaBlending():boolean\n\t{\n\t\treturn this._alphaBlending;\n\t}\n\n\tpublic set alphaBlending(value:boolean)\n\t{\n\t\tif (this._alphaBlending == value)\n\t\t\treturn;\n\n\t\tthis._alphaBlending = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n}\n\nexport = BasicMaterial;", + "import Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\n\n/**\n * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nclass BasicMaterial extends MaterialBase implements IRenderObjectOwner\n{\n\t/**\n\t * Creates a new BasicMaterial object.\n\t *\n\t * @param texture The texture used for the material's albedo color.\n\t * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true.\n\t * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to false.\n\t * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to false.\n\t */\n\tconstructor(texture?:Texture2DBase, smooth?:boolean, repeat?:boolean, mipmap?:boolean);\n\tconstructor(color?:number, alpha?:number);\n\tconstructor(textureColor:any = null, smoothAlpha:any = null, repeat:boolean = false, mipmap:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tif (textureColor instanceof Texture2DBase) {\n\t\t\tthis.texture = textureColor;\n\n\t\t\tthis.smooth = (smoothAlpha == null)? true : false;\n\t\t\tthis.repeat = repeat;\n\t\t\tthis.mipmap = mipmap;\n\t\t} else {\n\t\t\tthis.color = textureColor? Number(textureColor) : 0xCCCCCC;\n\t\t\tthis.alpha = (smoothAlpha == null)? 1 : Number(smoothAlpha);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool):IRenderObject\n\t{\n\t\treturn renderablePool.getMaterialRenderObject(this);\n\t}\n}\n\nexport = BasicMaterial;", "import MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport ImageTexture\t\t\t\t\t= require(\"awayjs-core/lib/textures/ImageTexture\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass CSSMaterialBase extends MaterialBase\n{\n\tprivate _imageElement:HTMLImageElement;\n\tprivate _imageStyle:MSStyleCSSProperties;\n\n\n\tpublic get imageElement():HTMLImageElement\n\t{\n\t\treturn this._imageElement;\n\t}\n\n\tpublic get imageStyle():MSStyleCSSProperties\n\t{\n\t\treturn this._imageStyle;\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tif (value instanceof ImageTexture) {\n\t\t\tthis._imageElement = ( value).htmlImageElement;\n\n\t\t\tvar node:HTMLStyleElement = document.createElement(\"style\");\n\t\t\tnode.type = \"text/css\";\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(node);\n\n\t\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\t\t\tsheet.insertRule(\".material\" + this.id + \"{ }\", 0);\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[0]).style;\n\n\t\t\tstyle.backgroundImage = \"url(\" + this._imageElement.src + \")\";\n\t\t\tstyle.backgroundSize = \"100% 100%\";\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.width = this._imageElement.width + \"px\";\n\t\t\tstyle.height = this._imageElement.height + \"px\";\n\t\t\tstyle.transformOrigin\n\t\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t\tthis._pHeight = this._imageElement.height;\n\t\t\tthis._pWidth = this._imageElement.width;\n\n\t\t\tthis._pNotifySizeChanged();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor(texture:Texture2DBase = null, smooth:boolean = true, repeat:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis.texture = texture;\n\n\t\tthis.smooth = smooth;\n\t\tthis.repeat = repeat;\n\t}\n}\n\nexport = CSSMaterialBase;", "/**\n * Enumeration class for defining which lighting types affect the specific material\n * lighting component (diffuse and specular). This can be useful if, for example, you\n * want to use light probes for diffuse global lighting, but want specular reflections from\n * traditional light sources without those affecting the diffuse light.\n *\n * @see away.materials.ColorMaterial.diffuseLightSources\n * @see away.materials.ColorMaterial.specularLightSources\n * @see away.materials.TextureMaterial.diffuseLightSources\n * @see away.materials.TextureMaterial.specularLightSources\n */\nclass LightSources\n{\n\t/**\n\t * Defines normal lights are to be used as the source for the lighting\n\t * component.\n\t */\n\tpublic static LIGHTS:number = 0x01;\n\n\t/**\n\t * Defines that global lighting probes are to be used as the source for the\n\t * lighting component.\n\t */\n\tpublic static PROBES:number = 0x02;\n\n\t/**\n\t * Defines that both normal and global lighting probes are to be used as the\n\t * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES.\n\t */\n\tpublic static ALL:number = 0x03;\n}\n\nexport = LightSources;", - "import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass MaterialBase extends NamedAssetBase implements IRenderObjectOwner\n{\n\tprivate _sizeChanged:MaterialEvent;\n\tprivate _renderObjects:Array = new Array();\n\n\tpublic _pAlphaThreshold:number = 0;\n\tpublic _pAnimateUVs:boolean = false;\n\tprivate _enableLightFallOff:boolean = true;\n\tprivate _specularLightSources:number = 0x01;\n\tprivate _diffuseLightSources:number = 0x03;\n\n\t/**\n\t * An object to contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * A value that can be used by materials that only work with a given type of renderer. The renderer can test the\n\t * classification to choose which render path to use. For example, a deferred material could set this value so\n\t * that the deferred renderer knows not to take the forward rendering path.\n\t *\n\t * @private\n\t */\n\tpublic _iClassification:string;\n\n\n\t/**\n\t * An id for this material used to sort the renderables by shader program, which reduces Program state changes.\n\t *\n\t * @private\n\t */\n\tpublic _iMaterialId:number = 0;\n\n\tpublic _iBaseScreenPassIndex:number = 0;\n\n\tprivate _bothSides:boolean = false; // update\n\tprivate _animationSet:IAnimationSet;\n\n\t/**\n\t * A list of material owners, renderables or custom Entities.\n\t */\n\tprivate _owners:Array;\n\n\tprivate _alphaPremultiplied:boolean;\n\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\tprivate _repeat:boolean = false;\n\tprivate _color:number = 0xFFFFFF;\n\tpublic _pTexture:Texture2DBase;\n\n\tpublic _pLightPicker:LightPickerBase;\n\n\tpublic _pHeight:number = 1;\n\tpublic _pWidth:number = 1;\n\n\tprivate _onLightChangeDelegate:(event:Event) => void;\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis._owners = new Array();\n\n\t\tthis._onLightChangeDelegate = (event:Event) => this.onLightsChange(event);\n\n\t\tthis.alphaPremultiplied = false; //TODO: work out why this is different for WebGL\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._pHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\tpublic set lightPicker(value:LightPickerBase)\n\t{\n\t\tif (this._pLightPicker == value)\n\t\t\treturn;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.removeEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pLightPicker = value;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.addEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to\n\t * the texture's borders when the uv coordinates are outside the [0, 1] interval.\n\t */\n\tpublic get repeat():boolean\n\t{\n\t\treturn this._repeat;\n\t}\n\n\tpublic set repeat(value:boolean)\n\t{\n\t\tif (this._repeat == value)\n\t\t\treturn;\n\n\t\tthis._repeat = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * The diffuse reflectivity color of the surface.\n\t */\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tif (this._color == value)\n\t\t\treturn;\n\n\t\tthis._color = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tthis._pInvalidateProperties();\n\n\t\tthis._pHeight = this._pTexture.height;\n\t\tthis._pWidth = this._pTexture.width;\n\n\t\tthis._pNotifySizeChanged();\n\t}\n\n\t/**\n\t * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\n\t */\n\tpublic get animateUVs():boolean\n\t{\n\t\treturn this._pAnimateUVs;\n\t}\n\n\tpublic set animateUVs(value:boolean)\n\t{\n\t\tif (this._pAnimateUVs == value)\n\t\t\treturn;\n\n\t\tthis._pAnimateUVs = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n\t * compatibility for constrained mode.\n\t */\n\tpublic get enableLightFallOff():boolean\n\t{\n\t\treturn this._enableLightFallOff;\n\t}\n\n\tpublic set enableLightFallOff(value:boolean)\n\t{\n\t\tif (this._enableLightFallOff == value)\n\t\t\treturn;\n\n\t\tthis._enableLightFallOff = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n\t * and/or light probes for diffuse reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get diffuseLightSources():number\n\t{\n\t\treturn this._diffuseLightSources;\n\t}\n\n\tpublic set diffuseLightSources(value:number)\n\t{\n\t\tif (this._diffuseLightSources == value)\n\t\t\treturn;\n\n\t\tthis._diffuseLightSources = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Define which light source types to use for specular reflections. This allows choosing between regular lights\n\t * and/or light probes for specular reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get specularLightSources():number\n\t{\n\t\treturn this._specularLightSources;\n\t}\n\n\tpublic set specularLightSources(value:number)\n\t{\n\t\tif (this._specularLightSources == value)\n\t\t\treturn;\n\n\t\tthis._specularLightSources = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\t}\n\n\t/**\n\t * Defines whether or not the material should cull triangles facing away from the camera.\n\t */\n\tpublic get bothSides():boolean\n\t{\n\t\treturn this._bothSides;\n\t}\n\n\tpublic set bothSides(value:boolean)\n\t{\n\t\tif (this._bothSides = value)\n\t\t\treturn;\n\n\t\tthis._bothSides = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether visible textures (or other pixels) used by this material have\n\t * already been premultiplied. Toggle this if you are seeing black halos around your\n\t * blended alpha edges.\n\t */\n\tpublic get alphaPremultiplied():boolean\n\t{\n\t\treturn this._alphaPremultiplied;\n\t}\n\n\tpublic set alphaPremultiplied(value:boolean)\n\t{\n\t\tif (this._alphaPremultiplied == value)\n\t\t\treturn;\n\n\t\tthis._alphaPremultiplied = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pInvalidateProperties();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._pWidth;\n\t}\n\n\t//\n\t// MATERIAL MANAGEMENT\n\t//\n\t/**\n\t * Mark an IRenderableOwner as owner of this material.\n\t * Assures we're not using the same material across renderables with different animations, since the\n\t * Programs depend on animation. This method needs to be called when a material is assigned.\n\t *\n\t * @param owner The IRenderableOwner that had this material assigned\n\t *\n\t * @internal\n\t */\n\tpublic iAddOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.push(owner);\n\n\t\tvar animationSet:IAnimationSet;\n\t\tvar animator:IAnimator = owner.animator;\n\n\t\tif (animator)\n\t\t\tanimationSet = animator.animationSet;\n\n\t\tif (owner.animator) {\n\t\t\tif (this._animationSet && animationSet != this._animationSet) {\n\t\t\t\tthrow new Error(\"A Material instance cannot be shared across material owners with different animation sets\");\n\t\t\t} else {\n\t\t\t\tif (this._animationSet != animationSet) {\n\n\t\t\t\t\tthis._animationSet = animationSet;\n\n\t\t\t\t\tthis.invalidateAnimation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes an IRenderableOwner as owner.\n\t * @param owner\n\t *\n\t * @internal\n\t */\n\tpublic iRemoveOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.splice(this._owners.indexOf(owner), 1);\n\n\t\tif (this._owners.length == 0) {\n\t\t\tthis._animationSet = null;\n\n\t\t\tthis.invalidateAnimation();\n\t\t}\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pInvalidateProperties()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateProperties();\n\t}\n\n\tprivate invalidateAnimation()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateAnimation();\n\t}\n\t\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Called when the light picker's configuration changed.\n\t */\n\tprivate onLightsChange(event:Event)\n\t{\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pNotifySizeChanged()\n\t{\n\t\tif (!this._sizeChanged)\n\t\t\tthis._sizeChanged = new MaterialEvent(MaterialEvent.SIZE_CHANGED);\n\n\t\tthis.dispatchEvent(this._sizeChanged);\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool)\n\t{\n\t\treturn renderablePool.getMaterialRenderObject(this);\n\t}\n}\n\nexport = MaterialBase;", + "import ColorTransform\t\t\t\t= require(\"awayjs-core/lib/geom/ColorTransform\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport RenderableOwnerEvent\t\t\t= require(\"awayjs-display/lib/events/RenderableOwnerEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass MaterialBase extends NamedAssetBase implements IRenderObjectOwner\n{\n\tprivate _colorTransform:ColorTransform;\n\tprivate _alphaBlending:boolean = false;\n\tprivate _alpha:number = 1;\n\t\n\tprivate _sizeChanged:MaterialEvent;\n\tprivate _renderObjects:Array = new Array();\n\n\tpublic _pAlphaThreshold:number = 0;\n\tpublic _pAnimateUVs:boolean = false;\n\tprivate _enableLightFallOff:boolean = true;\n\tprivate _specularLightSources:number = 0x01;\n\tprivate _diffuseLightSources:number = 0x03;\n\n\t/**\n\t * An object to contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * A value that can be used by materials that only work with a given type of renderer. The renderer can test the\n\t * classification to choose which render path to use. For example, a deferred material could set this value so\n\t * that the deferred renderer knows not to take the forward rendering path.\n\t *\n\t * @private\n\t */\n\tpublic _iClassification:string;\n\n\n\t/**\n\t * An id for this material used to sort the renderables by shader program, which reduces Program state changes.\n\t *\n\t * @private\n\t */\n\tpublic _iMaterialId:number = 0;\n\n\tpublic _iBaseScreenPassIndex:number = 0;\n\n\tprivate _bothSides:boolean = false; // update\n\tprivate _animationSet:IAnimationSet;\n\n\t/**\n\t * A list of material owners, renderables or custom Entities.\n\t */\n\tprivate _owners:Array;\n\n\tprivate _alphaPremultiplied:boolean;\n\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\tprivate _repeat:boolean = false;\n\tprivate _color:number = 0xFFFFFF;\n\tpublic _pTexture:Texture2DBase;\n\n\tpublic _pLightPicker:LightPickerBase;\n\n\tpublic _pHeight:number = 1;\n\tpublic _pWidth:number = 1;\n\n\tprivate _onLightChangeDelegate:(event:Event) => void;\n\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MATERIAL;;\n\t}\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis._owners = new Array();\n\n\t\tthis._onLightChangeDelegate = (event:Event) => this.onLightsChange(event);\n\n\t\tthis.alphaPremultiplied = false; //TODO: work out why this is different for WebGL\n\t}\n\n\t/**\n\t * The alpha of the surface.\n\t */\n\tpublic get alpha():number\n\t{\n\t\treturn this._alpha;\n\t}\n\n\tpublic set alpha(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1;\n\t\telse if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tif (this._alpha == value)\n\t\t\treturn;\n\n\t\tthis._alpha = value;\n\n\t\tif (this._colorTransform == null)\n\t\t\tthis._colorTransform = new ColorTransform();\n\n\t\tthis._colorTransform.alphaMultiplier = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * The ColorTransform object to transform the colour of the material with. Defaults to null.\n\t */\n\tpublic get colorTransform():ColorTransform\n\t{\n\t\treturn this._colorTransform;\n\t}\n\n\tpublic set colorTransform(value:ColorTransform)\n\t{\n\t\tthis._colorTransform = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether or not the material has transparency. If binary transparency is sufficient, for\n\t * example when using textures of foliage, consider using alphaThreshold instead.\n\t */\n\tpublic get alphaBlending():boolean\n\t{\n\t\treturn this._alphaBlending;\n\t}\n\n\tpublic set alphaBlending(value:boolean)\n\t{\n\t\tif (this._alphaBlending == value)\n\t\t\treturn;\n\n\t\tthis._alphaBlending = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\t\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._pHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\tpublic set lightPicker(value:LightPickerBase)\n\t{\n\t\tif (this._pLightPicker == value)\n\t\t\treturn;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.removeEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pLightPicker = value;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.addEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to\n\t * the texture's borders when the uv coordinates are outside the [0, 1] interval.\n\t */\n\tpublic get repeat():boolean\n\t{\n\t\treturn this._repeat;\n\t}\n\n\tpublic set repeat(value:boolean)\n\t{\n\t\tif (this._repeat == value)\n\t\t\treturn;\n\n\t\tthis._repeat = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The diffuse reflectivity color of the surface.\n\t */\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tif (this._color == value)\n\t\t\treturn;\n\n\t\tthis._color = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tthis._pInvalidatePasses();\n\n\t\tthis._pHeight = this._pTexture.height;\n\t\tthis._pWidth = this._pTexture.width;\n\n\t\tthis._pNotifySizeChanged();\n\t}\n\n\t/**\n\t * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\n\t */\n\tpublic get animateUVs():boolean\n\t{\n\t\treturn this._pAnimateUVs;\n\t}\n\n\tpublic set animateUVs(value:boolean)\n\t{\n\t\tif (this._pAnimateUVs == value)\n\t\t\treturn;\n\n\t\tthis._pAnimateUVs = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n\t * compatibility for constrained mode.\n\t */\n\tpublic get enableLightFallOff():boolean\n\t{\n\t\treturn this._enableLightFallOff;\n\t}\n\n\tpublic set enableLightFallOff(value:boolean)\n\t{\n\t\tif (this._enableLightFallOff == value)\n\t\t\treturn;\n\n\t\tthis._enableLightFallOff = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n\t * and/or light probes for diffuse reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get diffuseLightSources():number\n\t{\n\t\treturn this._diffuseLightSources;\n\t}\n\n\tpublic set diffuseLightSources(value:number)\n\t{\n\t\tif (this._diffuseLightSources == value)\n\t\t\treturn;\n\n\t\tthis._diffuseLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for specular reflections. This allows choosing between regular lights\n\t * and/or light probes for specular reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get specularLightSources():number\n\t{\n\t\treturn this._specularLightSources;\n\t}\n\n\tpublic set specularLightSources(value:number)\n\t{\n\t\tif (this._specularLightSources == value)\n\t\t\treturn;\n\n\t\tthis._specularLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\t}\n\n\t/**\n\t * Defines whether or not the material should cull triangles facing away from the camera.\n\t */\n\tpublic get bothSides():boolean\n\t{\n\t\treturn this._bothSides;\n\t}\n\n\tpublic set bothSides(value:boolean)\n\t{\n\t\tif (this._bothSides = value)\n\t\t\treturn;\n\n\t\tthis._bothSides = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether visible textures (or other pixels) used by this material have\n\t * already been premultiplied. Toggle this if you are seeing black halos around your\n\t * blended alpha edges.\n\t */\n\tpublic get alphaPremultiplied():boolean\n\t{\n\t\treturn this._alphaPremultiplied;\n\t}\n\n\tpublic set alphaPremultiplied(value:boolean)\n\t{\n\t\tif (this._alphaPremultiplied == value)\n\t\t\treturn;\n\n\t\tthis._alphaPremultiplied = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._pWidth;\n\t}\n\n\t//\n\t// MATERIAL MANAGEMENT\n\t//\n\t/**\n\t * Mark an IRenderableOwner as owner of this material.\n\t * Assures we're not using the same material across renderables with different animations, since the\n\t * Programs depend on animation. This method needs to be called when a material is assigned.\n\t *\n\t * @param owner The IRenderableOwner that had this material assigned\n\t *\n\t * @internal\n\t */\n\tpublic iAddOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.push(owner);\n\n\t\tvar animationSet:IAnimationSet;\n\t\tvar animator:IAnimator = owner.animator;\n\n\t\tif (animator)\n\t\t\tanimationSet = animator.animationSet;\n\n\t\tif (owner.animator) {\n\t\t\tif (this._animationSet && animationSet != this._animationSet) {\n\t\t\t\tthrow new Error(\"A Material instance cannot be shared across material owners with different animation sets\");\n\t\t\t} else {\n\t\t\t\tif (this._animationSet != animationSet) {\n\n\t\t\t\t\tthis._animationSet = animationSet;\n\n\t\t\t\t\tthis.invalidateAnimation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\towner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this));\n\t}\n\n\t/**\n\t * Removes an IRenderableOwner as owner.\n\t * @param owner\n\t *\n\t * @internal\n\t */\n\tpublic iRemoveOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.splice(this._owners.indexOf(owner), 1);\n\n\t\tif (this._owners.length == 0) {\n\t\t\tthis._animationSet = null;\n\n\t\t\tthis.invalidateAnimation();\n\t\t}\n\n\t\towner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this));\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pInvalidatePasses()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidatePasses();\n\t}\n\n\tprivate invalidateAnimation()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateAnimation();\n\t}\n\t\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Called when the light picker's configuration changed.\n\t */\n\tprivate onLightsChange(event:Event)\n\t{\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pNotifySizeChanged()\n\t{\n\t\tif (!this._sizeChanged)\n\t\t\tthis._sizeChanged = new MaterialEvent(MaterialEvent.SIZE_CHANGED);\n\n\t\tthis.dispatchEvent(this._sizeChanged);\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool):IRenderObject\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = MaterialBase;", "import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\n\n/**\n * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for\n * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be\n * extended to provide more application-specific dynamic selection of lights.\n *\n * @see StaticLightPicker\n */\nclass LightPickerBase extends NamedAssetBase implements IAsset\n{\n\tpublic _pNumPointLights:number = 0;\n\tpublic _pNumDirectionalLights:number = 0;\n\tpublic _pNumCastingPointLights:number = 0;\n\tpublic _pNumCastingDirectionalLights:number = 0;\n\tpublic _pNumLightProbes:number = 0;\n\n\tpublic _pAllPickedLights:Array;\n\tpublic _pPointLights:Array;\n\tpublic _pCastingPointLights:Array;\n\tpublic _pDirectionalLights:Array;\n\tpublic _pCastingDirectionalLights:Array;\n\tpublic _pLightProbes:Array;\n\tpublic _pLightProbeWeights:Array;\n\n\t/**\n\t * Creates a new LightPickerBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Disposes resources used by the light picker.\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT_PICKER;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that will be provided.\n\t */\n\tpublic get numDirectionalLights():number\n\t{\n\t\treturn this._pNumDirectionalLights;\n\t}\n\n\t/**\n\t * The maximum amount of point lights that will be provided.\n\t */\n\tpublic get numPointLights():number\n\t{\n\t\treturn this._pNumPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that cast shadows.\n\t */\n\tpublic get numCastingDirectionalLights():number\n\t{\n\t\treturn this._pNumCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The amount of point lights that cast shadows.\n\t */\n\tpublic get numCastingPointLights():number\n\t{\n\t\treturn this._pNumCastingPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of light probes that will be provided.\n\t */\n\tpublic get numLightProbes():number\n\t{\n\t\treturn this._pNumLightProbes;\n\t}\n\n\t/**\n\t * The collected point lights to be used for shading.\n\t */\n\tpublic get pointLights():Array\n\t{\n\t\treturn this._pPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights to be used for shading.\n\t */\n\tpublic get directionalLights():Array\n\t{\n\t\treturn this._pDirectionalLights;\n\t}\n\n\t/**\n\t * The collected point lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingPointLights():Array\n\t{\n\t\treturn this._pCastingPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingDirectionalLights():Array\n\t{\n\t\treturn this._pCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The collected light probes to be used for shading.\n\t */\n\tpublic get lightProbes():Array\n\t{\n\t\treturn this._pLightProbes;\n\t}\n\n\t/**\n\t * The weights for each light probe, defining their influence on the object.\n\t */\n\tpublic get lightProbeWeights():Array\n\t{\n\t\treturn this._pLightProbeWeights;\n\t}\n\n\t/**\n\t * A collection of all the collected lights.\n\t */\n\tpublic get allPickedLights():Array\n\t{\n\t\treturn this._pAllPickedLights;\n\t}\n\n\t/**\n\t * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code.\n\t */\n\tpublic collectLights(renderable:IRenderable)\n\t{\n\t\tthis.updateProbeWeights(renderable);\n\t}\n\n\t/**\n\t * Updates the weights for the light probes, based on the renderable's position relative to them.\n\t * @param renderable The renderble for which to calculate the light probes' influence.\n\t */\n\tprivate updateProbeWeights(renderable:IRenderable)\n\t{\n\t\t// todo: this will cause the same calculations to occur per TriangleSubMesh. See if this can be improved.\n\t\tvar objectPos:Vector3D = renderable.sourceEntity.scenePosition;\n\t\tvar lightPos:Vector3D;\n\n\t\tvar rx:number = objectPos.x, ry:number = objectPos.y, rz:number = objectPos.z;\n\t\tvar dx:number, dy:number, dz:number;\n\t\tvar w:number, total:number = 0;\n\t\tvar i:number;\n\n\t\t// calculates weights for probes\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i) {\n\n\t\t\tlightPos = this._pLightProbes[i].scenePosition;\n\t\t\tdx = rx - lightPos.x;\n\t\t\tdy = ry - lightPos.y;\n\t\t\tdz = rz - lightPos.z;\n\t\t\t// weight is inversely proportional to square of distance\n\t\t\tw = dx*dx + dy*dy + dz*dz;\n\n\t\t\t// just... huge if at the same spot\n\t\t\tw = w > .00001? 1/w : 50000000;\n\t\t\tthis._pLightProbeWeights[i] = w;\n\t\t\ttotal += w;\n\t\t}\n\n\t\t// normalize\n\t\ttotal = 1/total;\n\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i)\n\t\t\tthis._pLightProbeWeights[i] *= total;\n\t}\n}\n\nexport = LightPickerBase;", "import Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport LightEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\n\n/**\n * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but\n * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may\n * occur.\n */\nclass StaticLightPicker extends LightPickerBase\n{\n\tprivate _lights:Array;\n\tprivate _onCastShadowChangeDelegate:Function;\n\n\t/**\n\t * Creates a new StaticLightPicker object.\n\t * @param lights The lights to be used for shading.\n\t */\n\tconstructor(lights)\n\t{\n\t\tsuper();\n\n\t\tthis._onCastShadowChangeDelegate = (event:LightEvent) => this.onCastShadowChange(event);\n\n\t\tthis.lights = lights;\n\t}\n\n\t/**\n\t * The lights used for shading.\n\t */\n\tpublic get lights()\n\t{\n\t\treturn this._lights;\n\t}\n\n\tpublic set lights(value:Array)\n\t{\n\t\tvar numPointLights:number = 0;\n\t\tvar numDirectionalLights:number = 0;\n\t\tvar numCastingPointLights:number = 0;\n\t\tvar numCastingDirectionalLights:number = 0;\n\t\tvar numLightProbes:number = 0;\n\t\tvar light:LightBase;\n\n\t\tif (this._lights)\n\t\t\tthis.clearListeners();\n\n\t\tthis._lights = value;\n\t\tthis._pAllPickedLights = value;\n\t\tthis._pPointLights = new Array();\n\t\tthis._pCastingPointLights = new Array();\n\t\tthis._pDirectionalLights = new Array();\n\t\tthis._pCastingDirectionalLights = new Array();\n\t\tthis._pLightProbes = new Array();\n\n\t\tvar len:number = value.length;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tlight = value[i];\n\t\t\tlight.addEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\n\t\t\tif (light instanceof PointLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingPointLights[numCastingPointLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pPointLights[numPointLights++] = light;\n\n\t\t\t} else if (light instanceof DirectionalLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingDirectionalLights[numCastingDirectionalLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pDirectionalLights[numDirectionalLights++] = light;\n\n\t\t\t} else if (light instanceof LightProbe) {\n\t\t\t\tthis._pLightProbes[numLightProbes++] = light;\n\t\t\t}\n\t\t}\n\n\t\tif (this._pNumDirectionalLights == numDirectionalLights && this._pNumPointLights == numPointLights && this._pNumLightProbes == numLightProbes && this._pNumCastingPointLights == numCastingPointLights && this._pNumCastingDirectionalLights == numCastingDirectionalLights)\n\t\t\treturn;\n\n\t\tthis._pNumDirectionalLights = numDirectionalLights;\n\t\tthis._pNumCastingDirectionalLights = numCastingDirectionalLights;\n\t\tthis._pNumPointLights = numPointLights;\n\t\tthis._pNumCastingPointLights = numCastingPointLights;\n\t\tthis._pNumLightProbes = numLightProbes;\n\n\t\t// MUST HAVE MULTIPLE OF 4 ELEMENTS!\n\t\tthis._pLightProbeWeights = new Array(Math.ceil(numLightProbes/4)*4);\n\n\t\t// notify material lights have changed\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\n\t}\n\n\t/**\n\t * Remove configuration change listeners on the lights.\n\t */\n\tprivate clearListeners()\n\t{\n\t\tvar len:number = this._lights.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._lights[i].removeEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\t}\n\n\t/**\n\t * Notifies the material of a configuration change.\n\t */\n\tprivate onCastShadowChange(event:LightEvent)\n\t{\n\t\t// TODO: Assign to special caster collections, just append it to the lights in SinglePass\n\t\t// But keep seperated in multipass\n\n\t\tvar light:LightBase = event.target;\n\n\t\tif (light instanceof PointLight)\n\t\t\tthis.updatePointCasting( light);\n\t\telse if (light instanceof DirectionalLight)\n\t\t\tthis.updateDirectionalCasting( light);\n\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\t/**\n\t * Called when a directional light's shadow casting configuration changes.\n\t */\n\tprivate updateDirectionalCasting(light:DirectionalLight)\n\t{\n\t\tvar dl:DirectionalLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumDirectionalLights;\n\t\t\t++this._pNumCastingDirectionalLights;\n\n\n\t\t\tthis._pDirectionalLights.splice(this._pDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pCastingDirectionalLights.push(light);\n\n\t\t} else {\n\t\t\t++this._pNumDirectionalLights;\n\t\t\t--this._pNumCastingDirectionalLights;\n\n\t\t\tthis._pCastingDirectionalLights.splice(this._pCastingDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pDirectionalLights.push(light);\n\t\t}\n\t}\n\n\t/**\n\t * Called when a point light's shadow casting configuration changes.\n\t */\n\tprivate updatePointCasting(light:PointLight)\n\t{\n\t\tvar pl:PointLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumPointLights;\n\t\t\t++this._pNumCastingPointLights;\n\t\t\tthis._pPointLights.splice(this._pPointLights.indexOf(pl), 1);\n\t\t\tthis._pCastingPointLights.push(light);\n\t\t} else {\n\t\t\t++this._pNumPointLights;\n\t\t\t--this._pNumCastingPointLights;\n\n\t\t\tthis._pCastingPointLights.splice(this._pCastingPointLights.indexOf(pl), 1);\n\t\t\tthis._pPointLights.push(light);\n\t\t}\n\t}\n}\n\nexport = StaticLightPicker;", "import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IEventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/IEventDispatcher\");\nimport FreeMatrixProjection\t\t\t= require(\"awayjs-core/lib/projections/FreeMatrixProjection\");\nimport IProjection\t\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass CascadeShadowMapper extends DirectionalShadowMapper implements IEventDispatcher\n{\n\tpublic _pScissorRects:Rectangle[];\n\tprivate _pScissorRectsInvalid:boolean = true;\n\tprivate _splitRatios:number[];\n\n\tprivate _numCascades:number /*int*/;\n\tprivate _depthCameras:Array;\n\tprivate _depthLenses:Array;\n\n\tprivate _texOffsetsX:Array;\n\tprivate _texOffsetsY:Array;\n\n\tprivate _changeDispatcher:EventDispatcher;\n\tprivate _nearPlaneDistances:number[];\n\n\tconstructor(numCascades:number /*uint*/ = 3)\n\t{\n\t\tsuper();\n\n\t\tif (numCascades < 1 || numCascades > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = numCascades;\n\t\tthis._changeDispatcher = new EventDispatcher(this);\n\t\tthis.init();\n\t}\n\n\tpublic getSplitRatio(index:number /*uint*/):number\n\t{\n\t\treturn this._splitRatios[index];\n\t}\n\n\tpublic setSplitRatio(index:number /*uint*/, value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (index >= this._numCascades)\n\t\t\tthrow new Error(\"index must be smaller than the number of cascades!\");\n\n\t\tthis._splitRatios[index] = value;\n\t}\n\n\tpublic getDepthProjections(partition:number /*uint*/):Matrix3D\n\t{\n\t\treturn this._depthCameras[partition].viewProjection;\n\t}\n\n\tprivate init()\n\t{\n\t\tthis._splitRatios = new Array(this._numCascades);\n\t\tthis._nearPlaneDistances = new Array(this._numCascades);\n\n\t\tvar s:number = 1;\n\t\tfor (var i:number /*int*/ = this._numCascades - 1; i >= 0; --i) {\n\t\t\tthis._splitRatios[i] = s;\n\t\t\ts *= .4;\n\t\t}\n\n\t\tthis._texOffsetsX = Array(-1, 1, -1, 1);\n\t\tthis._texOffsetsY = Array(1, 1, -1, -1);\n\t\tthis._pScissorRects = new Array(4);\n\t\tthis._depthLenses = new Array();\n\t\tthis._depthCameras = new Array();\n\n\t\tfor (i = 0; i < this._numCascades; ++i) {\n\t\t\tthis._depthLenses[i] = new FreeMatrixProjection();\n\t\t\tthis._depthCameras[i] = new Camera(this._depthLenses[i]);\n\t\t}\n\t}\n\n\tpublic _pSetDepthMapSize(value:number /*uint*/)\n\t{\n\t\tsuper._pSetDepthMapSize(value);\n\n\t\tthis.invalidateScissorRects();\n\t}\n\n\tprivate invalidateScissorRects()\n\t{\n\t\tthis._pScissorRectsInvalid = true;\n\t}\n\n\tpublic get numCascades():number /*int*/\n\t{\n\t\treturn this._numCascades;\n\t}\n\n\tpublic set numCascades(value:number /*int*/)\n\t{\n\t\tif (value == this._numCascades)\n\t\t\treturn;\n\n\t\tif (value < 1 || value > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = value;\n\t\tthis.invalidateScissorRects();\n\t\tthis.init();\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\tpublic pDrawDepthMap(target:RenderTexture, scene:Scene, renderer:IRenderer)\n\t{\n\t\tif (this._pScissorRectsInvalid)\n\t\t\tthis.updateScissorRects();\n\n\t\tthis._pCasterCollector.cullPlanes = this._pCullPlanes;\n\t\tthis._pCasterCollector.camera = this._pOverallDepthCamera;\n\t\tthis._pCasterCollector.clear();\n\t\tscene.traversePartitions(this._pCasterCollector);\n\n\t\trenderer._iRenderCascades(this._pCasterCollector, target, this._numCascades, this._pScissorRects, this._depthCameras);\n\t}\n\n\tprivate updateScissorRects()\n\t{\n\t\tvar half:number = this._pDepthMapSize*.5;\n\n\t\tthis._pScissorRects[0] = new Rectangle(0, 0, half, half);\n\t\tthis._pScissorRects[1] = new Rectangle(half, 0, half, half);\n\t\tthis._pScissorRects[2] = new Rectangle(0, half, half, half);\n\t\tthis._pScissorRects[3] = new Rectangle(half, half, half, half);\n\n\t\tthis._pScissorRectsInvalid = false;\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar matrix:Matrix3D;\n\t\tvar projection:IProjection = viewCamera.projection;\n\t\tvar projectionNear:number = projection.near;\n\t\tvar projectionRange:number = projection.far - projectionNear;\n\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, viewCamera.projection.frustumCorners, this._pMatrix);\n\t\tthis._pMatrix.appendScale(.96, .96, 1);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t\tthis.pUpdateCullPlanes(viewCamera);\n\n\t\tfor (var i:number /*int*/ = 0; i < this._numCascades; ++i) {\n\t\t\tmatrix = this._depthLenses[i].matrix;\n\n\t\t\tthis._nearPlaneDistances[i] = projectionNear + this._splitRatios[i]*projectionRange;\n\t\t\tthis._depthCameras[i].transform = this._pOverallDepthCamera.transform;\n\n\t\t\tthis.updateProjectionPartition(matrix, this._splitRatios[i], this._texOffsetsX[i], this._texOffsetsY[i]);\n\n\t\t\tthis._depthLenses[i].matrix = matrix;\n\t\t}\n\t}\n\n\tprivate updateProjectionPartition(matrix:Matrix3D, splitRatio:number, texOffsetX:number, texOffsetY:number)\n\t{\n\t\tvar raw:Array = Matrix3DUtils.RAW_DATA_CONTAINER;\n\t\tvar xN:number, yN:number, zN:number;\n\t\tvar xF:number, yF:number, zF:number;\n\t\tvar minX:number = Number.POSITIVE_INFINITY, minY:number = Number.POSITIVE_INFINITY, minZ:number;\n\t\tvar maxX:number = Number.NEGATIVE_INFINITY, maxY:number = Number.NEGATIVE_INFINITY, maxZ:number = Number.NEGATIVE_INFINITY;\n\t\tvar i:number /*uint*/ = 0;\n\n\t\twhile (i < 12) {\n\t\t\txN = this._pLocalFrustum[i];\n\t\t\tyN = this._pLocalFrustum[i + 1];\n\t\t\tzN = this._pLocalFrustum[i + 2];\n\t\t\txF = xN + (this._pLocalFrustum[i + 12] - xN)*splitRatio;\n\t\t\tyF = yN + (this._pLocalFrustum[i + 13] - yN)*splitRatio;\n\t\t\tzF = zN + (this._pLocalFrustum[i + 14] - zN)*splitRatio;\n\t\t\tif (xN < minX)\n\t\t\t\tminX = xN;\n\t\t\tif (xN > maxX)\n\t\t\t\tmaxX = xN;\n\t\t\tif (yN < minY)\n\t\t\t\tminY = yN;\n\t\t\tif (yN > maxY)\n\t\t\t\tmaxY = yN;\n\t\t\tif (zN > maxZ)\n\t\t\t\tmaxZ = zN;\n\t\t\tif (xF < minX)\n\t\t\t\tminX = xF;\n\t\t\tif (xF > maxX)\n\t\t\t\tmaxX = xF;\n\t\t\tif (yF < minY)\n\t\t\t\tminY = yF;\n\t\t\tif (yF > maxY)\n\t\t\t\tmaxY = yF;\n\t\t\tif (zF > maxZ)\n\t\t\t\tmaxZ = zF;\n\t\t\ti += 3;\n\t\t}\n\n\t\tminZ = 1;\n\n\t\tvar w:number = (maxX - minX);\n\t\tvar h:number = (maxY - minY);\n\t\tvar d:number = 1/(maxZ - minZ);\n\n\t\tif (minX < 0)\n\t\t\tminX -= this._pSnap; // because int() rounds up for < 0\n\t\tif (minY < 0)\n\t\t\tminY -= this._pSnap;\n\t\tminX = Math.floor(minX/this._pSnap)*this._pSnap;\n\t\tminY = Math.floor(minY/this._pSnap)*this._pSnap;\n\n\t\tvar snap2:number = 2*this._pSnap;\n\t\tw = Math.floor(w/snap2 + 1)*snap2;\n\t\th = Math.floor(h/snap2 + 1)*snap2;\n\n\t\tmaxX = minX + w;\n\t\tmaxY = minY + h;\n\n\t\tw = 1/w;\n\t\th = 1/h;\n\n\t\traw[0] = 2*w;\n\t\traw[5] = 2*h;\n\t\traw[10] = d;\n\t\traw[12] = -(maxX + minX)*w;\n\t\traw[13] = -(maxY + minY)*h;\n\t\traw[14] = -minZ*d;\n\t\traw[15] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\n\t\tmatrix.copyRawDataFrom(raw);\n\t\tmatrix.appendScale(.96, .96, 1);\n\t\tmatrix.appendTranslation(texOffsetX, texOffsetY, 0);\n\t\tmatrix.appendScale(.5, .5, 1);\n\t}\n\n\tpublic addEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.addEventListener(type, listener);\n\t}\n\n\tpublic removeEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.removeEventListener(type, listener);\n\t}\n\n\tpublic dispatchEvent(event:Event)\n\t{\n\t\treturn this._changeDispatcher.dispatchEvent(event);\n\t}\n\n\tpublic hasEventListener(type:string):boolean\n\t{\n\t\treturn this._changeDispatcher.hasEventListener(type);\n\t}\n\n\tget _iNearPlaneDistances():Array\n\t{\n\t\treturn this._nearPlaneDistances;\n\t}\n}\n\nexport = CascadeShadowMapper;", @@ -258,9 +261,10 @@ "import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n\n/**\n * @class away.pool.CSSSkyboxRenderable\n */\nclass CSSSkyboxRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"skybox\";\n\n\tconstructor(pool:IRenderablePool, skyBox:Skybox)\n\t{\n\t\tsuper(pool, skyBox, skyBox);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\t\tvar img:HTMLDivElement;\n\n\t\t//create the six images that make up the skybox\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\timg = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + skyBox.id;\n\t}\n}\n\nexport = CSSSkyboxRenderable;", "import EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\n\n/**\n * @class away.pool.EntityListItemPool\n */\nclass EntityListItemPool\n{\n\tprivate _pool:Array;\n\tprivate _index:number = 0;\n\tprivate _poolSize:number = 0;\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tthis._pool = new Array();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getItem():EntityListItem\n\t{\n\t\tvar item:EntityListItem;\n\t\tif (this._index == this._poolSize) {\n\t\t\titem = new EntityListItem();\n\t\t\tthis._pool[this._index++] = item;\n\t\t\t++this._poolSize;\n\t\t} else {\n\t\t\titem = this._pool[this._index++];\n\t\t}\n\t\treturn item;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic freeAll()\n\t{\n\t\tthis._index = 0;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._pool.length = 0;\n\t}\n}\n\nexport = EntityListItemPool;", "import IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.pool.EntityListItem\n */\nclass EntityListItem\n{\n\t/**\n\t *\n\t */\n\tpublic entity:IEntity;\n\n\t/**\n\t *\n\t */\n\tpublic next:EntityListItem;\n}\n\nexport = EntityListItem;", - "/**\n * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least\n * a render call per required renderable.\n */\ninterface IRenderObject\n{\n\t/**\n\t *\n\t */\n\tdispose();\n\n\t/**\n\t *\n\t */\n\tinvalidateRenderObject();\n\n\t/**\n\t *\n\t */\n\tinvalidateProperties();\n\n\t/**\n\t *\n\t */\n\tinvalidateAnimation();\n}\n\nexport = IRenderObject;", + "/**\n * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least\n * a render call per required renderable.\n */\ninterface IRenderObject\n{\n\t/**\n\t *\n\t */\n\tdispose();\n\n\t/**\n\t *\n\t */\n\tinvalidateRenderObject();\n\n\t/**\n\t *\n\t */\n\tinvalidatePasses();\n\n\t/**\n\t *\n\t */\n\tinvalidateAnimation();\n}\n\nexport = IRenderObject;", "import IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n/**\n * IRenderPass provides an abstract base class for material shader passes. A material pass constitutes at least\n * a render call per required renderable.\n */\ninterface IRenderablePool\n{\n\tgetMaterialRenderObject(material:MaterialBase):IRenderObject\n\n\tgetSkyboxRenderObject(skybox:Skybox):IRenderObject\n\n\tdisposeItem(renderableOwner:IRenderableOwner);\n}\n\nexport = IRenderablePool;", "import IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * IRenderable is an interface for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.IRenderable\n */\ninterface IRenderable\n{\n\t/**\n\t *\n\t */\n\tnext:IRenderable;\n\n\t/**\n\t *\n\t */\n\tsourceEntity:IEntity;\n\n\t/**\n\t *\n\t */\n\trenderObjectId:number;\n\n\t/**\n\t *\n\t */\n\trenderOrderId:number;\n\n\t/**\n\t *\n\t */\n\tzIndex:number;\n\n\t/**\n\t *\n\t */\n\tdispose();\n\n\t/**\n\t *\n\t */\n\tinvalidateGeometry();\n\n\t/**\n\t *\n\t */\n\tinvalidateIndexData();\n\n\t/**\n\t *\n\t */\n\tinvalidateVertexData(dataType:string);\n}\n\nexport = IRenderable;", + "import LineSubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport TriangleSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\n\n/**\n * IRenderer is an interface for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.IRenderer\n */\ninterface IRendererPool\n{\n\t/**\n\t *\n\t * @param billboard\n\t */\n\tapplyBillboard(billboard:Billboard);\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tapplyLineSubMesh(triangleSubMesh:LineSubMesh);\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tapplyTriangleSubMesh(triangleSubMesh:TriangleSubMesh);\n}\n\nexport = IRendererPool;", "import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating\n */\nclass PrefabBase extends NamedAssetBase\n{\n\tpublic _pObjects:Array = new Array();\n\n//\t\tpublic _pBatchObjects:Array = new Array();\n\n\t/**\n\t * Creates a new PrefabBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Returns a display object generated from this prefab\n\t */\n\tpublic getNewObject():DisplayObject\n\t{\n\t\tvar object:DisplayObject = this._pCreateObject();\n\n\t\tthis._pObjects.push(object);\n\n\t\treturn object;\n\t}\n\n//\t\tpublic getNewBatchObject():BatchObject\n//\t\t{\n//\t\t\tvar object:BatchObject = this._pCreateBatchObject();\n//\n//\t\t\tthis._pBatchObjects.push(object);\n//\n//\t\t\treturn object;\n//\t\t}\n\n\tpublic _pCreateObject():DisplayObject\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iValidate()\n\t{\n\t\t// To be overridden when necessary\n\t}\n}\n\nexport = PrefabBase;", "import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Capsule primitive mesh.\n */\nclass PrimitiveCapsulePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _height:number;\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the capsule.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The height of the capsule.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = (value%2 == 0)? value + 1 : value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Capsule object.\n\t * @param radius The radius of the capsule.\n\t * @param height The height of the capsule.\n\t * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value.\n\t * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 15, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._height = height;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = (segmentsH%2 == 0)? segmentsH + 1 : segmentsH;\n\t\tthis._yUp = yUp;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar triIndex:number = 0;\n\t\tvar index:number = 0;\n\t\tvar startIndex:number;\n\t\tvar comp1:number, comp2:number, t1:number, t2:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsH + 1)*(this._segmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of closure\n\t\t\tnumIndices = (this._segmentsH - 1)*this._segmentsW*6; // each level has segmentH quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tstartIndex = index;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar offset:number = j > this._segmentsH/2? this._height/2 : -this._height/2;\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\t\t\t\t\tvar normLen:number = 1/Math.sqrt(x*x + y*y + z*z);\n\t\t\t\t\tvar tanLen:number = Math.sqrt(y*y + x*x);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsW) {\n\n\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\t\t\t\t\t\tnormals[index] = (normals[startIndex] + (x*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 1] = (normals[startIndex + 1] + ( comp1*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 2] = (normals[startIndex + 2] + (comp2*normLen))*.5;\n\t\t\t\t\t\ttangents[index] = (tangents[startIndex] + (tanLen > .007? -y/tanLen : 1))*.5;\n\t\t\t\t\t\ttangents[index + 1] = (tangents[startIndex + 1] + t1)*.5;\n\t\t\t\t\t\ttangents[index + 2] = (tangents[startIndex + 2] + t2)*.5;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// vertex\n\t\t\t\t\t\tpositions[index] = x;\n\t\t\t\t\t\tpositions[index + 1] = (this._yUp)? comp1 - offset : comp1;\n\t\t\t\t\t\tpositions[index + 2] = (this._yUp)? comp2 : comp2 + offset;\n\t\t\t\t\t\t// normal\n\t\t\t\t\t\tnormals[index] = x*normLen;\n\t\t\t\t\t\tnormals[index + 1] = comp1*normLen;\n\t\t\t\t\t\tnormals[index + 2] = comp2*normLen;\n\t\t\t\t\t\t// tangent\n\t\t\t\t\t\ttangents[index] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[index + 1] = t1;\n\t\t\t\t\t\ttangents[index + 2] = t2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\tvar a:number = (this._segmentsW + 1)*j + i;\n\t\t\t\t\t\tvar b:number = (this._segmentsW + 1)*j + i - 1;\n\t\t\t\t\t\tvar c:number = (this._segmentsW + 1)*(j - 1) + i - 1;\n\t\t\t\t\t\tvar d:number = (this._segmentsW + 1)*(j - 1) + i;\n\n\t\t\t\t\t\tif (j == this._segmentsH) {\n\t\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\n\t\t\t\t\t\t} else if (j == 1) {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += 3;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsH )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCapsulePrefab;", "import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport PrimitiveCylinderPrefab\t= require(\"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab\");\n\n/**\n * A UV Cone primitive mesh.\n */\nclass PrimitiveConePrefab extends PrimitiveCylinderPrefab implements IAsset\n{\n\n\t/**\n\t * The radius of the bottom end of the cone.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Cone object.\n\t * @param radius The radius of the bottom end of the cone\n\t * @param height The height of the cone\n\t * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1.\n\t * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 1, closed:boolean = true, yUp:boolean = true)\n\t{\n\t\tsuper(0, radius, height, segmentsW, segmentsH, false, closed, true, yUp);\n\t}\n}\n\nexport = PrimitiveConePrefab;", @@ -273,7 +277,7 @@ "import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A UV Cylinder primitive mesh.\n */\nclass PrimitiveTorusPrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _tubeRadius:number;\n\tprivate _segmentsR:number;\n\tprivate _segmentsT:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the torus.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the inner tube of the torus.\n\t */\n\tpublic get tubeRadius():number\n\t{\n\t\treturn this._tubeRadius;\n\t}\n\n\tpublic set tubeRadius(value:number)\n\t{\n\t\tthis._tubeRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the torus. Defaults to 16.\n\t */\n\tpublic get segmentsR():number\n\t{\n\t\treturn this._segmentsR;\n\t}\n\n\tpublic set segmentsR(value:number)\n\t{\n\t\tthis._segmentsR = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the torus. Defaults to 8.\n\t */\n\tpublic get segmentsT():number\n\t{\n\t\treturn this._segmentsT;\n\t}\n\n\tpublic set segmentsT(value:number)\n\t{\n\t\tthis._segmentsT = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Torus object.\n\t * @param radius The radius of the torus.\n\t * @param tuebRadius The radius of the inner tube of the torus.\n\t * @param segmentsR Defines the number of horizontal segments that make up the torus.\n\t * @param segmentsT Defines the number of vertical segments that make up the torus.\n\t * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, tubeRadius:number = 50, segmentsR:number = 16, segmentsT:number = 8, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._tubeRadius = tubeRadius;\n\t\tthis._segmentsR = segmentsR;\n\t\tthis._segmentsT = segmentsT;\n\t\tthis._yUp = yUp;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number, j:number;\n\t\tvar x:number, y:number, z:number, nx:number, ny:number, nz:number, revolutionAngleR:number, revolutionAngleT:number;\n\t\tvar vidx:number;\n\t\tvar fidx:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsT + 1)*(this._segmentsR + 1); // segmentsT + 1 because of closure, segmentsR + 1 because of closure\n\t\t\tnumIndices = this._segmentsT*this._segmentsR*6; // each level has segmentR quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// evaluate revolution steps\n\t\t\tvar revolutionAngleDeltaR:number = 2*Math.PI/this._segmentsR;\n\t\t\tvar revolutionAngleDeltaT:number = 2*Math.PI/this._segmentsT;\n\n\t\t\tvar comp1:number, comp2:number;\n\t\t\tvar t1:number, t2:number, n1:number, n2:number;\n\t\t\tvar startIndex:number = 0;\n\t\t\tvar nextVertexIndex:number = 0;\n\n\t\t\t// surface\n\t\t\tvar a:number, b:number, c:number, d:number, length:number;\n\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\n\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngleR = i*revolutionAngleDeltaR;\n\t\t\t\t\trevolutionAngleT = j*revolutionAngleDeltaT;\n\n\t\t\t\t\tlength = Math.cos(revolutionAngleT);\n\t\t\t\t\tnx = length*Math.cos(revolutionAngleR);\n\t\t\t\t\tny = length*Math.sin(revolutionAngleR);\n\t\t\t\t\tnz = Math.sin(revolutionAngleT);\n\n\t\t\t\t\tx = this._radius*Math.cos(revolutionAngleR) + this._tubeRadius*nx;\n\t\t\t\t\ty = this._radius*Math.sin(revolutionAngleR) + this._tubeRadius*ny;\n\t\t\t\t\tz = (j == this._segmentsT)? 0 : this._tubeRadius*nz;\n\n\t\t\t\t\tif (this._yUp) {\n\n\t\t\t\t\t\tn1 = -nz;\n\t\t\t\t\t\tn2 = ny;\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tn1 = ny;\n\t\t\t\t\t\tn2 = nz;\n\t\t\t\t\t\tt1 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsR) {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = nx;\n\t\t\t\t\tnormals[vidx + 1] = n1;\n\t\t\t\t\tnormals[vidx + 2] = n2;\n\t\t\t\t\ttangents[vidx] = -(length? ny/length : y/this._radius);\n\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\ttangents[vidx + 2] = t2;\n\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// close triangle\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\ta = nextVertexIndex; // current\n\t\t\t\t\t\tb = nextVertexIndex - 1; // previous\n\t\t\t\t\t\tc = b - this._segmentsR - 1; // previous of last level\n\t\t\t\t\t\td = a - this._segmentsR - 1; // current of last level\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t}\n\n\t\t\t\t\tnextVertexIndex++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsR )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsT )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveTorusPrefab;", "import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport CoordinateSystem\t\t\t\t= require(\"awayjs-core/lib/projections/CoordinateSystem\");\n\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport CSSRendererBase\t\t\t\t= require(\"awayjs-display/lib/render/CSSRendererBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\n\n\n/**\n * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the\n * materials assigned to them.\n *\n * @class away.render.DefaultRenderer\n */\nclass CSSDefaultRenderer extends CSSRendererBase implements IRenderer\n{\n\tprivate _container:HTMLDivElement;\n\tprivate _context:HTMLDivElement;\n\tprivate _contextStyle:MSStyleCSSProperties;\n\tprivate _contextMatrix:Matrix3D = new Matrix3D();\n\t\n\tprivate _activeMaterial:CSSMaterialBase;\n\tprivate _skyboxProjection:Matrix3D = new Matrix3D();\n\tprivate _transform:Matrix3D = new Matrix3D();\n\n\t/**\n\t * Creates a new CSSDefaultRenderer object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t//create container for the renderer\n\t\tthis._container = document.createElement(\"div\");\n\t\tthis._container.style.overflow = \"hidden\";\n\t\tthis._container.style.position = \"absolute\";\n\t\t\n\t\t//add container to body\n\t\tdocument.body.appendChild(this._container);\n\n\t\t//create conxtext for the renderer\n\t\tthis._context = document.createElement(\"div\");\n\t\tthis._contextStyle = this._context.style;\n\t\tthis._contextStyle.position = \"absolute\";\n\t\tthis._contextStyle.transformStyle\n\t\t\t= this._contextStyle[\"-webkit-transform-style\"]\n\t\t\t= this._contextStyle[\"-moz-transform-style\"]\n\t\t\t= this._contextStyle[\"-o-transform-style\"]\n\t\t\t= this._contextStyle[\"-ms-transform-style\"] = \"preserve-3d\";\n\t\tthis._contextStyle.transformOrigin\n\t\t\t= this._contextStyle[\"-webkit-transform-origin\"]\n\t\t\t= this._contextStyle[\"-moz-transform-origin\"]\n\t\t\t= this._contextStyle[\"-o-transform-origin\"]\n\t\t\t= this._contextStyle[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t//add context to container\n\t\tthis._container.appendChild(this._context);\n\t}\n\n\t/**\n\t *\n\t * @param entityCollector\n\t */\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tsuper.render(entityCollector);\n\n\t\tif (this._pBackBufferInvalid)// reset or update render settings\n\t\t\tthis.pUpdateBackBuffer();\n\n\t\tthis._iRender( entityCollector);\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic pDraw(entityCollector:EntityCollector)\n\t{\n//\t\t\tif (entityCollector.skyBox) {\n//\t\t\t\tif (this._activeMaterial)\n//\t\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n//\n//\t\t\t\tthis._activeMaterial = null;\n//\n//\t\t\t\tthis._pContext.setDepthTest(false, away.gl.ContextGLCompareMode.ALWAYS);\n//\t\t\t\tthis.drawSkybox(entityCollector);\n//\n//\t\t\t}\n//\n//\t\t\tvar which:number = target? DefaultRenderer.SCREEN_PASSES : DefaultRenderer.ALL_PASSES;\n\n\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\n\t\tfor (var i:number = 0; i < sheet.cssRules.length; i++) {\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[i]).style;\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = (entityCollector.camera.projection.coordinateSystem == CoordinateSystem.RIGHT_HANDED)? \"\" : \"scale3d(1, -1, 1) translateY(-\" + style.height + \")\";\n\t\t}\n\n\t\tthis.drawRenderables(this._renderableHead, entityCollector);\n\n//\t\t\tif (this._activeMaterial)\n//\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n\n\t\tthis._activeMaterial = null;\n\t}\n\n\t/**\n\t * Updates the backbuffer properties.\n\t */\n\tpublic pUpdateBackBuffer()\n\t{\n\t\tthis._container.style.width = this._width + \"px\";\n\t\tthis._container.style.height = this._height + \"px\";\n\t\tthis._container.style.clip = \"rect(0px, \" + this._width + \"px, \" + this._height + \"px, 0px)\";\n\n\t\t//update context matrix\n\t\tthis._contextMatrix.rawData[0] = this._width/2;\n\t\tthis._contextMatrix.rawData[5] = -this._height/2;\n\t\tthis._contextMatrix.rawData[10] = -1; //fix for innaccurate z-sort\n\t\tthis._contextMatrix.rawData[12] = this._width/2;\n\t\tthis._contextMatrix.rawData[13] = this._height/2;\n\n\t\t//update context tranform\n\t\tthis._contextStyle.transform\n\t\t\t= this._contextStyle[\"-webkit-transform\"]\n\t\t\t= this._contextStyle[\"-moz-transform\"]\n\t\t\t= this._contextStyle[\"-o-transform\"]\n\t\t\t= this._contextStyle[\"-ms-transform\"] = this._contextMatrix.toString();\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * Draw the skybox if present.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawSkybox(entityCollector:CSSEntityCollector)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Draw a list of renderables.\n\t * @param renderables The renderables to draw.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawRenderables(item:CSSRenderableBase, entityCollector:EntityCollector)\n\t{\n\t\tvar viewProjection:Matrix3D = entityCollector.camera.viewProjection.clone();\n\n\t\twhile (item) {\n\t\t\t//this._activeMaterial = item.materialOwner.material;\n\n\t\t\t//serialise transform and apply to html element\n\t\t\tthis._transform.copyRawDataFrom(item.renderSceneTransform.rawData);\n\t\t\tthis._transform.append(viewProjection);\n\n\t\t\tvar style:MSStyleCSSProperties = item.htmlElement.style;\n\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = this._transform.toString();\n\n\t\t\tstyle.transformStyle\n\t\t\t\t= style[\"-webkit-transform-style\"]\n\t\t\t\t= style[\"-moz-transform-style\"]\n\t\t\t\t= style[\"-o-transform-style\"]\n\t\t\t\t= style[\"-ms-transform-style\"] = \"preserve-3d\";\n\n\t\t\t//check if child requires adding to the view\n\t\t\tif (!this._context.contains(item.htmlElement))\n\t\t\t\tthis._context.appendChild(item.htmlElement);\n\n\t\t\titem = item.next;\n\t\t}\n\n//\t\t\tvar numPasses:number;\n//\t\t\tvar j:number;\n//\t\t\tvar camera:away.entities.Camera = entityCollector.camera;\n//\t\t\tvar item2:away.render.CSSRenderableBase;\n//\n//\t\t\twhile (item) {\n//\t\t\t\tthis._activeMaterial = item.material;\n//\n//\t\t\t\tthis._activeMaterial.iUpdateMaterial(this._pContext);\n//\n//\t\t\t\tnumPasses = this._activeMaterial._iNumPasses;\n//\n//\t\t\t\tj = 0;\n//\n//\t\t\t\tdo {\n//\t\t\t\t\titem2 = item;\n//\n//\t\t\t\t\tvar rttMask:number = this._activeMaterial.iPassRendersToTexture(j)? 1 : 2;\n//\n//\t\t\t\t\tif ((rttMask & which) != 0) {\n//\t\t\t\t\t\tthis._activeMaterial.iActivatePass(j, this._pStageGL, camera);\n//\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\tthis._activeMaterial.iRenderPass(j, item2, this._pStageGL, entityCollector);\n//\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.material == this._activeMaterial);\n//\n//\t\t\t\t\t\tthis._activeMaterial.iDeactivatePass(j, this._pStageGL);\n//\n//\t\t\t\t\t} else {\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.renderable.material == this._activeMaterial);\n//\t\t\t\t\t}\n//\t\t\t\t} while (++j < numPasses);\n//\n//\t\t\t\titem = item2;\n//\t\t\t}\n\t}\n\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\t//TODO\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\treturn new CSSEntityCollector();\n\t}\n}\n\nexport = CSSDefaultRenderer;", "import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport LineSubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport TriangleSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport CSSBillboardRenderable\t\t= require(\"awayjs-display/lib/pool/CSSBillboardRenderable\");\nimport CSSLineSegmentRenderable\t\t= require(\"awayjs-display/lib/pool/CSSLineSegmentRenderable\");\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\nimport RendererEvent\t\t\t\t= require(\"awayjs-display/lib/events/RendererEvent\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\n/**\n * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.RendererBase\n */\nclass CSSRendererBase extends EventDispatcher\n{\n\tprivate _billboardRenderablePool:IRenderablePool;\n\tprivate _lineSegmentRenderablePool:IRenderablePool;\n\n\tpublic _pCamera:Camera;\n\tpublic _iEntryPoint:Vector3D;\n\tpublic _pCameraForward:Vector3D;\n\n\tprivate _backgroundR:number = 0;\n\tprivate _backgroundG:number = 0;\n\tprivate _backgroundB:number = 0;\n\tprivate _backgroundAlpha:number = 1;\n\tprivate _shareContext:boolean = false;\n\n\tpublic _pBackBufferInvalid:boolean = true;\n\tpublic _depthTextureInvalid:boolean = true;\n\n\tpublic _renderableHead:CSSRenderableBase;\n\n\tpublic _width:number;\n\tpublic _height:number;\n\n\tprivate _viewPort:Rectangle = new Rectangle();\n\tprivate _viewportDirty:boolean;\n\tprivate _scissorRect:Rectangle = new Rectangle();\n\tprivate _scissorDirty:boolean;\n\n\tprivate _localPos:Point = new Point();\n\tprivate _globalPos:Point = new Point();\n\n\tprivate _scissorUpdated:RendererEvent;\n\tprivate _viewPortUpdated:RendererEvent;\n\n\t/**\n\t * A viewPort rectangle equivalent of the StageGL size and position.\n\t */\n\tpublic get viewPort():Rectangle\n\t{\n\t\treturn this._viewPort;\n\t}\n\n\t/**\n\t * A scissor rectangle equivalent of the view size and position.\n\t */\n\tpublic get scissorRect():Rectangle\n\t{\n\t\treturn this._scissorRect;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._localPos.x;\n\t}\n\n\tpublic set x(value:number)\n\t{\n\t\tif (this.x == value)\n\t\t\treturn;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._localPos.y;\n\t}\n\n\tpublic set y(value:number)\n\t{\n\t\tif (this.y == value)\n\t\t\treturn;\n\n\t\tthis._globalPos.y = this._localPos.y = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tif (this._width == value)\n\t\t\treturn;\n\n\t\tthis._width = value;\n\t\tthis._scissorRect.width = value;\n\t\tthis._viewPort.width = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tif (this._height == value)\n\t\t\treturn;\n\n\t\tthis._height = value;\n\t\tthis._scissorRect.height = value;\n\t\tthis._viewPort.height = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic renderableSorter:IEntitySorter;\n\n\t/**\n\t * Creates a new RendererBase object.\n\t */\n\tconstructor(renderToTexture:boolean = false, forceSoftware:boolean = false, profile:string = \"baseline\")\n\t{\n\t\tsuper();\n\n\t\t//this._billboardRenderablePool = RenderablePool.getPool(CSSBillboardRenderable);\n\t\t//this._lineSegmentRenderablePool = RenderablePool.getPool(CSSLineSegmentRenderable);\n\n\t\tthis._viewPort = new Rectangle();\n\n\t\tif (this._width == 0)\n\t\t\tthis.width = window.innerWidth;\n\n\t\tif (this._height == 0)\n\t\t\tthis.height = window.innerHeight;\n\t}\n\n\t/**\n\t * The background color's red component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundR():number\n\t{\n\t\treturn this._backgroundR;\n\t}\n\n\tpublic set _iBackgroundR(value:number)\n\t{\n\t\tif (this._backgroundR == value)\n\t\t\treturn;\n\n\t\tthis._backgroundR = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's green component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundG():number\n\t{\n\t\treturn this._backgroundG;\n\t}\n\n\tpublic set _iBackgroundG(value:number)\n\t{\n\t\tif (this._backgroundG == value)\n\t\t\treturn;\n\n\t\tthis._backgroundG = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's blue component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundB():number\n\t{\n\t\treturn this._backgroundB;\n\t}\n\n\tpublic set _iBackgroundB(value:number)\n\t{\n\t\tif (this._backgroundB == value)\n\t\t\treturn;\n\n\t\tthis._backgroundB = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\tpublic get shareContext():boolean\n\t{\n\t\treturn this._shareContext;\n\t}\n\n\tpublic set shareContext(value:boolean)\n\t{\n\t\tif (this._shareContext == value)\n\t\t\treturn;\n\n\t\tthis._shareContext = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t * Disposes the resources used by the RendererBase.\n\t */\n\tpublic dispose()\n\t{\n\t\t/*\n\t\t if (_backgroundImageRenderer) {\n\t\t _backgroundImageRenderer.dispose();\n\t\t _backgroundImageRenderer = null;\n\t\t }\n\t\t */\n\t}\n\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tthis._viewportDirty = false;\n\t\tthis._scissorDirty = false;\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic _iRender(entityCollector:EntityCollector, target:TextureProxyBase = null, scissorRect:Rectangle = null, surfaceSelector:number = 0)\n\t{\n\t\tif (!entityCollector.entityHead)\n\t\t\treturn;\n\n\t\tthis.pExecuteRender(entityCollector, scissorRect);\n\t}\n\n\tpublic _iRenderCascades(entityCollector:ICollector, target:TextureProxyBase, numCascades:number, scissorRects:Array, cameras:Array)\n\t{\n\n\t}\n\tpublic pCollectRenderables(entityCollector:ICollector)\n\t{\n\t\t//reset head values\n\t\tthis._renderableHead = null;\n\n\t\t//grab entity head\n\t\tvar item:EntityListItem = entityCollector.entityHead;\n\n\t\t//set temp values for entry point and camera forward vector\n\t\tthis._pCamera = entityCollector.camera;\n\t\tthis._iEntryPoint = this._pCamera.scenePosition;\n\t\tthis._pCameraForward = this._pCamera.transform.forwardVector;\n\n\t\t//iterate through all entities\n\t\twhile (item) {\n\t\t\titem.entity._iCollectRenderables(this);\n\t\t\titem = item.next;\n\t\t}\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic pExecuteRender(entityCollector:CSSEntityCollector, scissorRect:Rectangle = null)\n\t{\n\t\tthis.pCollectRenderables(entityCollector);\n\n\t\tthis.pDraw(entityCollector);\n\t}\n\n\t/**\n\t * Performs the actual drawing of dom objects to the target.\n\t *\n\t * @param entityCollector The EntityCollector object containing the potentially visible dom objects.\n\t */\n\tpublic pDraw(entityCollector:CSSEntityCollector)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get _iBackgroundAlpha():number\n\t{\n\t\treturn this._backgroundAlpha;\n\t}\n\n\tpublic set _iBackgroundAlpha(value:number)\n\t{\n\t\tif (this._backgroundAlpha == value)\n\t\t\treturn;\n\n\t\tthis._backgroundAlpha = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t *\n\t * @param billboard\n\t */\n\tpublic applyBillboard(billboard:Billboard)\n\t{\n\t\t//this._applyRenderable( this._billboardRenderablePool.getItem(billboard));\n\t}\n\n\t/**\n\t *\n\t * @param lineSubMesh\n\t */\n\tpublic applyLineSubMesh(lineSubMesh:LineSubMesh)\n\t{\n\t\t//this._applyRenderable( this._billboardRenderablePool.getItem(lineSegment));\n\t}\n\n\t/**\n\t *\n\t * @param skybox\n\t */\n\tpublic applySkybox(skybox:Skybox)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tpublic applyTriangleSubMesh(triangleSubMesh:TriangleSubMesh)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\tprivate _applyRenderable(renderable:CSSRenderableBase)\n\t{\n\t\tvar material:CSSMaterialBase;// = renderable.renderableOwner.material;\n\t\tvar entity:IEntity = renderable.sourceEntity;\n\t\tvar position:Vector3D = entity.scenePosition;\n\n\t\tif (material) {\n\t\t\t//set ids for faster referencing\n\t\t\trenderable.materialId = material._iMaterialId;\n//\t\t\t\trenderable.renderOrderId = material._iRenderOrderId;\n\t\t\trenderable.cascaded = false;\n\n\t\t\t// project onto camera's z-axis\n\t\t\tposition = this._iEntryPoint.subtract(position);\n\t\t\trenderable.zIndex = entity.zOffset - position.dotProduct(this._pCameraForward);\n\n\t\t\t//store reference to scene transform\n\t\t\trenderable.renderSceneTransform = renderable.sourceEntity.getRenderSceneTransform(this._pCamera);\n\n\t\t\t//store reference to next item in list\n\t\t\trenderable.next = this._renderableHead;\n\t\t\tthis._renderableHead = renderable;\n\t\t}\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyScissorUpdate()\n\t{\n\t\tif (this._scissorDirty)\n\t\t\treturn;\n\n\t\tthis._scissorDirty = true;\n\n\t\tif (!this._scissorUpdated)\n\t\t\tthis._scissorUpdated = new RendererEvent(RendererEvent.SCISSOR_UPDATED);\n\n\t\tthis.dispatchEvent(this._scissorUpdated);\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyViewportUpdate()\n\t{\n\t\tif (this._viewportDirty)\n\t\t\treturn;\n\n\t\tthis._viewportDirty = true;\n\n\t\tif (!this._viewPortUpdated)\n\t\t\tthis._viewPortUpdated = new RendererEvent(RendererEvent.VIEWPORT_UPDATED);\n\n\t\tthis.dispatchEvent(this._viewPortUpdated);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateGlobalPos()\n\t{\n\t\tthis._viewPort.x = this._globalPos.x;\n\t\tthis._viewPort.y = this._globalPos.y;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = CSSRendererBase;", - "import IEventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/IEventDispatcher\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\nimport LineSubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport TriangleSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\n/**\n * IRenderer is an interface for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.IRenderer\n */\ninterface IRenderer extends IEventDispatcher\n{\n\t/**\n\t *\n\t */\n\trenderableSorter:IEntitySorter;\n\n\t/**\n\t *\n\t */\n\tshareContext:boolean;\n\n\t/**\n\t *\n\t */\n\tx:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\ty:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\twidth:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\theight:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\tviewPort:Rectangle;\n\n\t/**\n\t *\n\t */\n\tscissorRect:Rectangle;\n\n\t/**\n\t *\n\t * @param billboard\n\t */\n\tapplyBillboard(billboard:Billboard);\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tapplyLineSubMesh(triangleSubMesh:LineSubMesh);\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tapplyTriangleSubMesh(triangleSubMesh:TriangleSubMesh);\n\n\t/**\n\t *\n\t */\n\tdispose();\n\n\t/**\n\t *\n\t * @param entityCollector\n\t */\n\trender(entityCollector:ICollector);\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundR:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundG:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundB:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundAlpha:number;\n\n\t/**\n\t * @internal\n\t */\n\t_iCreateEntityCollector():ICollector;\n\n\t_iRender(entityCollector:ICollector, target?:TextureProxyBase, scissorRect?:Rectangle, surfaceSelector?:number);\n\n\t_iRenderCascades(entityCollector:ICollector, target:TextureProxyBase, numCascades:number, scissorRects:Array, cameras:Array)\n}\n\nexport = IRenderer;", + "import IEventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/IEventDispatcher\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\n/**\n * IRenderer is an interface for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.IRenderer\n */\ninterface IRenderer extends IEventDispatcher\n{\n\t/**\n\t *\n\t */\n\trenderableSorter:IEntitySorter;\n\n\t/**\n\t *\n\t */\n\tshareContext:boolean;\n\n\t/**\n\t *\n\t */\n\tx:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\ty:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\twidth:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\theight:number /*uint*/;\n\n\t/**\n\t *\n\t */\n\tviewPort:Rectangle;\n\n\t/**\n\t *\n\t */\n\tscissorRect:Rectangle;\n\n\t/**\n\t *\n\t */\n\tdispose();\n\n\t/**\n\t *\n\t * @param entityCollector\n\t */\n\trender(entityCollector:ICollector);\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundR:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundG:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundB:number /*uint*/;\n\n\t/**\n\t * @internal\n\t */\n\t_iBackgroundAlpha:number;\n\n\t/**\n\t * @internal\n\t */\n\t_iCreateEntityCollector():ICollector;\n\n\t_iRender(entityCollector:ICollector, target?:TextureProxyBase, scissorRect?:Rectangle, surfaceSelector?:number);\n\n\t_iRenderCascades(entityCollector:ICollector, target:TextureProxyBase, numCascades:number, scissorRects:Array, cameras:Array)\n}\n\nexport = IRenderer;", "import IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\n\n/**\n * @interface away.sort.IEntitySorter\n */\ninterface IEntitySorter\n{\n\tsortBlendedRenderables(head:IRenderable):IRenderable;\n\n\tsortOpaqueRenderables(head:IRenderable):IRenderable;\n}\n\nexport = IEntitySorter;", "import IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\n\n/**\n * @class away.sort.RenderableMergeSort\n */\nclass RenderableMergeSort implements IEntitySorter\n{\n\tpublic sortBlendedRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable;\n\t\tvar slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortBlendedRenderables(head);\n\t\theadB = this.sortBlendedRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB) {\n\t\t\tif (head.zIndex < headB.zIndex) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result)\n\t\t\t\tresult = l; else\n\t\t\t\tcurr.next = l;\n\n\t\t\tcurr = l;\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n\n\tpublic sortOpaqueRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable, slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortOpaqueRenderables(head);\n\t\theadB = this.sortOpaqueRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\t\tvar cmp:number = 0;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB && head != null && headB != null) {\n\n\t\t\t// first sort per render order id (reduces program3D switches),\n\t\t\t// then on render object id (reduces setting props),\n\t\t\t// then on zIndex (reduces overdraw)\n\t\t\tvar aid:number = head.renderOrderId;\n\t\t\tvar bid:number = headB.renderOrderId;\n\n\t\t\tif (aid == bid) {\n\t\t\t\tvar ma:number = head.renderObjectId;\n\t\t\t\tvar mb:number = headB.renderObjectId;\n\n\t\t\t\tif (ma == mb) {\n\t\t\t\t\tif (head.zIndex < headB.zIndex)\n\t\t\t\t\t\tcmp = 1; else\n\t\t\t\t\t\tcmp = -1;\n\t\t\t\t} else if (ma > mb) {\n\t\t\t\t\tcmp = 1;\n\t\t\t\t} else {\n\t\t\t\t\tcmp = -1;\n\t\t\t\t}\n\t\t\t} else if (aid > bid) {\n\t\t\t\tcmp = 1;\n\t\t\t} else {\n\t\t\t\tcmp = -1;\n\t\t\t}\n\n\t\t\tif (cmp < 0) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result) {\n\t\t\t\tresult = l;\n\t\t\t\tcurr = l;\n\t\t\t} else {\n\t\t\t\tcurr.next = l;\n\t\t\t\tcurr = l;\n\t\t\t}\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n}\n\nexport = RenderableMergeSort;", "/**\n * The AntiAliasType class provides values for anti-aliasing in the\n * away.text.TextField class.\n */\nclass AntiAliasType\n{\n\t/**\n\t * Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing\n\t * allows font faces to be rendered at very high quality at small sizes. It\n\t * is best used with applications that have a lot of small text. Advanced\n\t * anti-aliasing is not recommended for very large fonts(larger than 48\n\t * points). This constant is used for the antiAliasType property\n\t * in the TextField class. Use the syntax\n\t * AntiAliasType.ADVANCED.\n\t */\n\tpublic static ADVANCED:string = \"advanced\";\n\n\t/**\n\t * Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and\n\t * earlier. This setting is recommended for applications that do not have a\n\t * lot of text. This constant is used for the antiAliasType\n\t * property in the TextField class. Use the syntax\n\t * AntiAliasType.NORMAL.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n}\n\nexport = AntiAliasType;", diff --git a/build/awayjs-display.min.js b/build/awayjs-display.min.js index 4e7b3b238..f1a92af0d 100755 --- a/build/awayjs-display.min.js +++ b/build/awayjs-display.min.js @@ -1,10 +1,10 @@ -require=function t(e,i,r){function n(o,a){if(!i[o]){if(!e[o]){var h=typeof require=="function"&&require;if(!a&&h)return h(o,!0);if(s)return s(o,!0);var p=new Error("Cannot find module '"+o+"'");throw p.code="MODULE_NOT_FOUND",p}var l=i[o]={exports:{}};e[o][0].call(l.exports,function(t){var i=e[o][1][t];return n(i?i:t)},l,l.exports,t,e,i,r)}return i[o].exports}var s=typeof require=="function"&&require;for(var o=0;o>16&255)/255;this._colorG=(this._color>>8&255)/255;this._colorB=(this._color&255)/255;this.updateDiffuse();this.updateSpecular()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"ambient",{get:function(){return this._ambient},set:function(t){if(t<0)t=0;else if(t>1)t=1;this._ambient=t;this.updateAmbient()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"ambientColor",{get:function(){return this._ambientColor},set:function(t){this._ambientColor=t;this.updateAmbient()},enumerable:true,configurable:true});e.prototype.updateAmbient=function(){this._iAmbientR=(this._ambientColor>>16&255)/255*this._ambient;this._iAmbientG=(this._ambientColor>>8&255)/255*this._ambient;this._iAmbientB=(this._ambientColor&255)/255*this._ambient};e.prototype.iGetObjectProjectionMatrix=function(t,e,i){if(i===void 0){i=null}throw new s};Object.defineProperty(e.prototype,"assetType",{get:function(){return n.LIGHT},enumerable:true,configurable:true});e.prototype.updateSpecular=function(){this._iSpecularR=this._colorR*this._specular;this._iSpecularG=this._colorG*this._specular;this._iSpecularB=this._colorB*this._specular};e.prototype.updateDiffuse=function(){this._iDiffuseR=this._colorR*this._diffuse;this._iDiffuseG=this._colorG*this._diffuse;this._iDiffuseB=this._colorB*this._diffuse};Object.defineProperty(e.prototype,"shadowMapper",{get:function(){return this._shadowMapper -},set:function(t){this._shadowMapper=t;this._shadowMapper.light=this},enumerable:true,configurable:true});return e}(o);e.exports=h},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/library/AssetType":undefined,"awayjs-display/lib/containers/DisplayObjectContainer":undefined,"awayjs-display/lib/events/LightEvent":undefined}],"awayjs-display/lib/base/LineScaleMode":[function(t,e,i){var r=function(){function t(){}t.HORIZONTAL="horizontal";t.NONE="none";t.NORMAL="normal";t.VERTICAL="vertical";return t}();e.exports=r},{}],"awayjs-display/lib/base/LineSubGeometry":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/base/LineSubMesh");var s=t("awayjs-display/lib/base/SubGeometryBase");var o=t("awayjs-display/lib/base/TriangleSubGeometry");var a=t("awayjs-display/lib/events/SubGeometryEvent");var h=function(t){r(e,t);function e(){t.call(this,true);this._positionsDirty=true;this._boundingPositionDirty=true;this._thicknessDirty=true;this._colorsDirty=true;this._pSubMeshClass=n}e.prototype._pUpdateStrideOffset=function(){this._pOffset[e.VERTEX_DATA]=0;var t=0;this._pOffset[e.START_POSITION_DATA]=t;t+=3;this._pOffset[e.END_POSITION_DATA]=t;t+=3;this._pOffset[e.THICKNESS_DATA]=t;t+=1;this._pOffset[e.COLOR_DATA]=t;t+=4;this._pStride[e.VERTEX_DATA]=t;this._pStride[e.START_POSITION_DATA]=t;this._pStride[e.END_POSITION_DATA]=t;this._pStride[e.THICKNESS_DATA]=t;this._pStride[e.COLOR_DATA]=t;var i=this._pNumVertices*t;if(this._pVertices==null)this._pVertices=new Array(i);else if(this._pVertices.length!=i)this._pVertices.length=i;this._pStrideOffsetDirty=false};Object.defineProperty(e.prototype,"vertices",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);if(this._thicknessDirty)this.updateThickness(this._thickness);if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._pVertices},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPositions",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);return this._startPositions},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endPositions",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);return this._endPositions},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"thickness",{get:function(){if(this._thicknessDirty)this.updateThickness(this._thickness);return this._thickness},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startColors",{get:function(){if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._startColors},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endColors",{get:function(){if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._endColors},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"numSegments",{get:function(){return this._numSegments},enumerable:true,configurable:true});e.prototype.getBoundingPositions=function(){if(this._boundingPositionDirty)this._boundingPositions=this.startPositions.concat(this.endPositions);return this._boundingPositions};e.prototype.updatePositions=function(t,i){var r;var n;var s;var o;var a;var h;var p;this._startPositions=t;if(this._startPositions==null)this._startPositions=new Array;this._endPositions=i;if(this._endPositions==null)this._endPositions=new Array;this._boundingPositionDirty=true;this._numSegments=this._startPositions.length/3;this._pNumVertices=this._numSegments*4;var l=this._pNumVertices*this.getStride(e.VERTEX_DATA);if(this._pVertices==null)this._pVertices=new Array(l);else if(this._pVertices.length!=l)this._pVertices.length=l;r=0;n=0;o=this.getOffset(e.START_POSITION_DATA);a=this.getStride(e.START_POSITION_DATA);h=this._pVertices;p=new Array;while(r=0};e.prototype.disposeWithChildren=function(){this.dispose();while(this.numChildren>0)this.getChildAt(0).dispose()};e.prototype.getChildAt=function(t){var e=this._children[t];if(e==null)throw new a("Index does not exist in the child list of the caller");return e};e.prototype.getChildByName=function(t){var e=this._children.length;for(var i=0;ithis._children.length)throw new a("endIndex is out of range of the child list");for(var i=t;i>16&255)/255;this._pRenderer._iBackgroundG=(this._backgroundColor>>8&255)/255;this._pRenderer._iBackgroundB=(this._backgroundColor&255)/255;this._pRenderer._iBackgroundAlpha=this._backgroundAlpha;this._pRenderer.width=this._width;this._pRenderer.height=this._height;this._pRenderer.shareContext=this._shareContext},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"shareContext",{get:function(){return this._shareContext},set:function(t){if(this._shareContext==t)return;this._shareContext=t;if(this._pRenderer)this._pRenderer.shareContext=this._shareContext},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(t){if(this._backgroundColor==t)return;this._backgroundColor=t;this._pRenderer._iBackgroundR=(t>>16&255)/255;this._pRenderer._iBackgroundG=(t>>8&255)/255;this._pRenderer._iBackgroundB=(t&255)/255},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"backgroundAlpha",{get:function(){return this._backgroundAlpha},set:function(t){if(t>1)t=1;else if(t<0)t=0;if(this._backgroundAlpha==t)return;this._pRenderer._iBackgroundAlpha=this._backgroundAlpha=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"camera",{get:function(){return this._pCamera},set:function(t){if(this._pCamera==t)return;if(this._pCamera)this._pCamera.removeEventListener(a.PROJECTION_CHANGED,this._onProjectionChangedDelegate);this._pCamera=t;if(this._pEntityCollector)this._pEntityCollector.camera=this._pCamera;if(this._pScene)this._pCamera.partition=this._pScene.partition;this._pCamera.addEventListener(a.PROJECTION_CHANGED,this._onProjectionChangedDelegate);this._scissorDirty=true;this._viewportDirty=true},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"scene",{get:function(){return this._pScene},set:function(t){if(this._pScene==t)return;if(this._pScene)this._pScene.removeEventListener(h.PARTITION_CHANGED,this._onScenePartitionChangedDelegate);this._pScene=t;this._pScene.addEventListener(h.PARTITION_CHANGED,this._onScenePartitionChangedDelegate);if(this._pCamera)this._pCamera.partition=this._pScene.partition},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"deltaTime",{get:function(){return this._deltaTime},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"width",{get:function(){return this._width},set:function(t){if(this._width==t)return;this._width=t;this._aspectRatio=this._width/this._height;this._pCamera.projection._iAspectRatio=this._aspectRatio;this._pRenderer.width=t;this._htmlElement.style.width=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"height",{get:function(){return this._height},set:function(t){if(this._height==t)return;this._height=t;this._aspectRatio=this._width/this._height;this._pCamera.projection._iAspectRatio=this._aspectRatio;this._pRenderer.height=t;this._htmlElement.style.height=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"mousePicker",{get:function(){return this._mousePicker},set:function(t){if(this._mousePicker==t)return;if(t==null)this._mousePicker=new s;else this._mousePicker=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"x",{get:function(){return this._pRenderer.x},set:function(t){if(this._pRenderer.x==t)return;this._pRenderer.x==t;this._htmlElement.style.left=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"y",{get:function(){return this._pRenderer.y},set:function(t){if(this._pRenderer.y==t)return;this._pRenderer.y==t;this._htmlElement.style.top=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"visible",{get:function(){return this._htmlElement.style.visibility=="visible"},set:function(t){this._htmlElement.style.visibility=t?"visible":"hidden"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"renderedFacesCount",{get:function(){return 0},enumerable:true,configurable:true});t.prototype.render=function(){this.pUpdateTime();this._pCamera.projection._iAspectRatio=this._aspectRatio;if(this._scissorDirty){this._scissorDirty=false;this._pCamera.projection._iUpdateScissorRect(this._pRenderer.scissorRect.x,this._pRenderer.scissorRect.y,this._pRenderer.scissorRect.width,this._pRenderer.scissorRect.height)}if(this._viewportDirty){this._viewportDirty=false;this._pCamera.projection._iUpdateViewport(this._pRenderer.viewPort.x,this._pRenderer.viewPort.y,this._pRenderer.viewPort.width,this._pRenderer.viewPort.height)}if(!this._shareContext){if(this.forceMouseMove&&this._htmlElement==this._mouseManager._iActiveDiv&&!this._mouseManager._iUpdateDirty)this._mouseManager._iCollidingObject=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this);this._mouseManager.fireMouseEvents(this.forceMouseMove)}this._pEntityCollector.clear();this._pScene.traversePartitions(this._pEntityCollector);this._pRenderer.render(this._pEntityCollector)};t.prototype.pUpdateTime=function(){var t=r();if(this._time==0)this._time=t;this._deltaTime=t-this._time;this._time=t};t.prototype.dispose=function(){this._pRenderer.dispose();this._mouseManager.unregisterView(this);this._mouseManager=null;this._pRenderer=null;this._pEntityCollector=null};Object.defineProperty(t.prototype,"iEntityCollector",{get:function(){return this._pEntityCollector},enumerable:true,configurable:true});t.prototype.onProjectionChanged=function(t){this._scissorDirty=true;this._viewportDirty=true};t.prototype.onViewportUpdated=function(t){this._viewportDirty=true};t.prototype.onScissorUpdated=function(t){this._scissorDirty=true};t.prototype.project=function(t){var e=this._pCamera.project(t);e.x=e.x*this._pRenderer.viewPort.width/2+this._width*this._pCamera.projection.originX;e.y=e.y*this._pRenderer.viewPort.height/2+this._height*this._pCamera.projection.originY;return e};t.prototype.unproject=function(t,e,i){return this._pCamera.unproject(2*(t-this._width*this._pCamera.projection.originX)/this._pRenderer.viewPort.width,2*(e-this._height*this._pCamera.projection.originY)/this._pRenderer.viewPort.height,i)};t.prototype.getRay=function(t,e,i){return this._pCamera.getRay((t*2-this._width)/this._width,(e*2-this._height)/this._height,i)};t.prototype.updateCollider=function(){if(!this._shareContext){if(this._htmlElement==this._mouseManager._iActiveDiv)this._mouseManager._iCollidingObject=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this)}else{var t=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this);if(this.layeredView||this._mouseManager._iCollidingObject==null||t.rayEntryDistance180)this._iCurrentPanAngle+=360}if(t){this._iCurrentTiltAngle+=(this._tiltAngle-this._iCurrentTiltAngle)/(this.steps+1);this._iCurrentPanAngle+=(this._panAngle-this._iCurrentPanAngle)/(this.steps+1)}else{this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}if(Math.abs(this.tiltAngle-this._iCurrentTiltAngle)<.01&&Math.abs(this._panAngle-this._iCurrentPanAngle)<.01){this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}}this.targetObject.rotationX=this._iCurrentTiltAngle;this.targetObject.rotationY=this._iCurrentPanAngle;if(this._walkIncrement){if(this.fly){this.targetObject.transform.moveForward(this._walkIncrement)}else{this.targetObject.x+=this._walkIncrement*Math.sin(this._panAngle*n.DEGREES_TO_RADIANS);this.targetObject.z+=this._walkIncrement*Math.cos(this._panAngle*n.DEGREES_TO_RADIANS)}this._walkIncrement=0}if(this._strafeIncrement){this.targetObject.transform.moveRight(this._strafeIncrement);this._strafeIncrement=0}};e.prototype.incrementWalk=function(t){if(t==0)return;this._walkIncrement+=t;this.pNotifyUpdate()};e.prototype.incrementStrafe=function(t){if(t==0)return;this._strafeIncrement+=t;this.pNotifyUpdate()};return e}(s);e.exports=o},{"awayjs-core/lib/geom/MathConsts":undefined,"awayjs-display/lib/controllers/ControllerBase":undefined}],"awayjs-display/lib/controllers/FollowController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/controllers/HoverController");var s=function(t){r(e,t);function e(e,i,r,n){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=45}if(n===void 0){n=700}t.call(this,e,i,0,r,n)}e.prototype.update=function(e){if(e===void 0){e=true}e=e;if(!this.lookAtObject)return;this.panAngle=this._pLookAtObject.rotationY-180;t.prototype.update.call(this)};return e}(n);e.exports=s},{"awayjs-display/lib/controllers/HoverController":undefined}],"awayjs-display/lib/controllers/HoverController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/MathConsts");var s=t("awayjs-core/lib/geom/Vector3D");var o=t("awayjs-display/lib/controllers/LookAtController");var a=function(t){r(e,t);function e(e,i,r,n,o,a,h,p,l,u,c,f){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=0}if(n===void 0){n=90}if(o===void 0){o=1e3}if(a===void 0){a=-90}if(h===void 0){h=90}if(p===void 0){p=null}if(l===void 0){l=null}if(u===void 0){u=8}if(c===void 0){c=2}if(f===void 0){f=false}t.call(this,e,i);this._iCurrentPanAngle=0;this._iCurrentTiltAngle=90;this._panAngle=0;this._tiltAngle=90;this._distance=1e3;this._minPanAngle=-Infinity;this._maxPanAngle=Infinity;this._minTiltAngle=-90;this._maxTiltAngle=90;this._steps=8;this._yFactor=2;this._wrapPanAngle=false;this._upAxis=new s;this.distance=o;this.panAngle=r;this.tiltAngle=n;this.minPanAngle=p!=null?p:-Infinity;this.maxPanAngle=l!=null?l:Infinity;this.minTiltAngle=a;this.maxTiltAngle=h;this.steps=u;this.yFactor=c;this.wrapPanAngle=f;this._iCurrentPanAngle=this._panAngle;this._iCurrentTiltAngle=this._tiltAngle}Object.defineProperty(e.prototype,"steps",{get:function(){return this._steps},set:function(t){t=t<1?1:t;if(this._steps==t)return;this._steps=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"panAngle",{get:function(){return this._panAngle},set:function(t){t=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,t));if(this._panAngle==t)return;this._panAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"tiltAngle",{get:function(){return this._tiltAngle},set:function(t){t=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,t));if(this._tiltAngle==t)return;this._tiltAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"distance",{get:function(){return this._distance},set:function(t){if(this._distance==t)return;this._distance=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"minPanAngle",{get:function(){return this._minPanAngle},set:function(t){if(this._minPanAngle==t)return;this._minPanAngle=t;this.panAngle=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,this._panAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"maxPanAngle",{get:function(){return this._maxPanAngle},set:function(t){if(this._maxPanAngle==t)return;this._maxPanAngle=t;this.panAngle=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,this._panAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"minTiltAngle",{get:function(){return this._minTiltAngle},set:function(t){if(this._minTiltAngle==t)return;this._minTiltAngle=t;this.tiltAngle=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,this._tiltAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"maxTiltAngle",{get:function(){return this._maxTiltAngle},set:function(t){if(this._maxTiltAngle==t)return;this._maxTiltAngle=t;this.tiltAngle=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,this._tiltAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"yFactor",{get:function(){return this._yFactor},set:function(t){if(this._yFactor==t)return;this._yFactor=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"wrapPanAngle",{get:function(){return this._wrapPanAngle},set:function(t){if(this._wrapPanAngle==t)return;this._wrapPanAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});e.prototype.update=function(t){if(t===void 0){t=true}if(this._tiltAngle!=this._iCurrentTiltAngle||this._panAngle!=this._iCurrentPanAngle){this.pNotifyUpdate();if(this._wrapPanAngle){if(this._panAngle<0){this._iCurrentPanAngle+=this._panAngle%360+360-this._panAngle;this._panAngle=this._panAngle%360+360}else{this._iCurrentPanAngle+=this._panAngle%360-this._panAngle;this._panAngle=this._panAngle%360}while(this._panAngle-this._iCurrentPanAngle<-180)this._iCurrentPanAngle-=360;while(this._panAngle-this._iCurrentPanAngle>180)this._iCurrentPanAngle+=360}if(t){this._iCurrentTiltAngle+=(this._tiltAngle-this._iCurrentTiltAngle)/(this.steps+1);this._iCurrentPanAngle+=(this._panAngle-this._iCurrentPanAngle)/(this.steps+1)}else{this._iCurrentPanAngle=this._panAngle;this._iCurrentTiltAngle=this._tiltAngle}if(Math.abs(this.tiltAngle-this._iCurrentTiltAngle)<.01&&Math.abs(this._panAngle-this._iCurrentPanAngle)<.01){this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}}var e=this.lookAtObject?this.lookAtObject.transform.position:this.lookAtPosition?this.lookAtPosition:this._pOrigin;this.targetObject.x=e.x+this.distance*Math.sin(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this.targetObject.y=e.y+this.distance*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS)*this.yFactor;this.targetObject.z=e.z+this.distance*Math.cos(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.x=-Math.sin(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.y=Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.z=-Math.cos(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);if(this._pTargetObject){if(this._pLookAtPosition)this._pTargetObject.lookAt(this._pLookAtPosition,this._upAxis);else if(this._pLookAtObject)this._pTargetObject.lookAt(this._pLookAtObject.scene?this._pLookAtObject.scenePosition:this._pLookAtObject.transform.position,this._upAxis)}};return e}(o);e.exports=a},{"awayjs-core/lib/geom/MathConsts":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/LookAtController":undefined}],"awayjs-display/lib/controllers/LookAtController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/controllers/ControllerBase");var o=t("awayjs-display/lib/events/DisplayObjectEvent");var a=function(t){r(e,t);function e(e,i){var r=this;if(e===void 0){e=null}if(i===void 0){i=null}t.call(this,e);this._pOrigin=new n(0,0,0);this._onLookAtObjectChangedDelegate=function(t){return r.onLookAtObjectChanged(t)};if(i)this.lookAtObject=i;else this.lookAtPosition=new n}Object.defineProperty(e.prototype,"lookAtPosition",{get:function(){return this._pLookAtPosition},set:function(t){if(this._pLookAtObject){this._pLookAtObject.removeEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this._pLookAtObject=null}this._pLookAtPosition=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lookAtObject",{get:function(){return this._pLookAtObject},set:function(t){if(this._pLookAtPosition)this._pLookAtPosition=null;if(this._pLookAtObject==t)return;if(this._pLookAtObject)this._pLookAtObject.removeEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this._pLookAtObject=t;if(this._pLookAtObject)this._pLookAtObject.addEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this.pNotifyUpdate()},enumerable:true,configurable:true});e.prototype.update=function(t){if(t===void 0){t=true}if(this._pTargetObject){if(this._pLookAtPosition)this._pTargetObject.lookAt(this._pLookAtPosition);else if(this._pLookAtObject)this._pTargetObject.lookAt(this._pLookAtObject.scene?this._pLookAtObject.scenePosition:this._pLookAtObject.transform.position)}};e.prototype.onLookAtObjectChanged=function(t){this.pNotifyUpdate()};return e}(s);e.exports=a},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/ControllerBase":undefined,"awayjs-display/lib/events/DisplayObjectEvent":undefined}],"awayjs-display/lib/controllers/SpringController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/controllers/LookAtController");var o=function(t){r(e,t);function e(e,i,r,s,o){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=1}if(s===void 0){s=40}if(o===void 0){o=4}t.call(this,e,i);this.positionOffset=new n(0,500,-1e3);this.stiffness=r;this.damping=o;this.mass=s;this._velocity=new n;this._dv=new n;this._stretch=new n;this._force=new n;this._acceleration=new n;this._desiredPosition=new n}e.prototype.update=function(e){if(e===void 0){e=true}var i;if(!this._pLookAtObject||!this._pTargetObject)return;i=this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);this._desiredPosition.x=this._pLookAtObject.x+i.x;this._desiredPosition.y=this._pLookAtObject.y+i.y;this._desiredPosition.z=this._pLookAtObject.z+i.z;this._stretch=this._pTargetObject.transform.position.add(this._desiredPosition);this._stretch.scaleBy(-this.stiffness);this._dv.copyFrom(this._velocity);this._dv.scaleBy(this.damping);this._force.x=this._stretch.x-this._dv.x;this._force.y=this._stretch.y-this._dv.y;this._force.z=this._stretch.z-this._dv.z;this._acceleration.copyFrom(this._force);this._acceleration.scaleBy(1/this.mass);this._velocity.incrementBy(this._acceleration);this._pTargetObject.transform.position=this._pTargetObject.transform.position.add(this._velocity);t.prototype.update.call(this)};return e}(s);e.exports=o},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/LookAtController":undefined}],"awayjs-display/lib/display/ContextMode":[function(t,e,i){var r=function(){function t(){}t.AUTO="auto";t.WEBGL="webgl";t.FLASH="flash";t.NATIVE="native";return t}();e.exports=r},{}],"awayjs-display/lib/display/IContext":[function(t,e,i){},{}],"awayjs-display/lib/entities/Billboard":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/library/AssetType");var s=t("awayjs-display/lib/base/DisplayObject");var o=t("awayjs-display/lib/partition/EntityNode");var a=t("awayjs-display/lib/events/MaterialEvent");var h=function(t){r(e,t);function e(e,i,r){var n=this;if(i===void 0){i="auto"}if(r===void 0){r=false}t.call(this);this._pIsEntity=true;this.onSizeChangedDelegate=function(t){return n.onSizeChanged(t)};this.material=e;this._billboardWidth=e.width;this._billboardHeight=e.height}Object.defineProperty(e.prototype,"animator",{get:function(){return this._animator},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return n.BILLBOARD},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"billboardHeight",{get:function(){return this._billboardHeight},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"billboardWidth",{get:function(){return this._billboardWidth},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"material",{get:function(){return this._material},set:function(t){if(t==this._material)return;if(this._material){this._material.iRemoveOwner(this);this._material.removeEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}this._material=t;if(this._material){this._material.iAddOwner(this);this._material.addEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"uvTransform",{get:function(){return this._uvTransform},set:function(t){this._uvTransform=t},enumerable:true,configurable:true});e.prototype.pCreateEntityPartitionNode=function(){return new o(this)};e.prototype.pUpdateBounds=function(){this._pBounds.fromExtremes(0,0,0,this._billboardWidth,this._billboardHeight,0);t.prototype.pUpdateBounds.call(this)};e.prototype._iTestCollision=function(t,e){return this._pPickingCollider.testBillboardCollision(this,this._pPickingCollisionVO,t)};e.prototype.onSizeChanged=function(t){this._billboardWidth=this._material.width;this._billboardHeight=this._material.height;this._pBoundsInvalid=true;var e=this._pRenderables.length;for(var i=0;ih)h=f;f=this._projAABBPoints[d++];if(fl)l=f;f=this._projAABBPoints[d++];if(fc)c=f}var _=1/(h-a);var y=1/(l-p);var m=1/(c-u);r[0]=2*_;r[5]=2*y;r[10]=m;r[12]=-(h+a)*_;r[13]=-(l+p)*y;r[14]=-u*m;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[11]=0;r[15]=1;if(!i)i=new s;i.copyRawDataFrom(r);i.prepend(o);return i};e.prototype._iCollectRenderables=function(t){};return e}(a);e.exports=l},{"awayjs-core/lib/bounds/NullBounds":undefined,"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined,"awayjs-display/lib/partition/DirectionalLightNode":undefined}],"awayjs-display/lib/entities/IEntity":[function(t,e,i){},{}],"awayjs-display/lib/entities/LightProbe":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/bounds/NullBounds");var s=t("awayjs-core/lib/errors/Error");var o=t("awayjs-display/lib/base/LightBase");var a=t("awayjs-display/lib/partition/LightProbeNode");var h=function(t){r(e,t);function e(e,i){if(i===void 0){i=null}t.call(this);this._pIsEntity=true;this._diffuseMap=e;this._specularMap=i}Object.defineProperty(e.prototype,"diffuseMap",{get:function(){return this._diffuseMap},set:function(t){this._diffuseMap=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"specularMap",{get:function(){return this._specularMap},set:function(t){this._specularMap=t},enumerable:true,configurable:true});e.prototype.pCreateEntityPartitionNode=function(){return new a(this)};e.prototype.pUpdateBounds=function(){this._pBoundsInvalid=false};e.prototype.pCreateDefaultBoundingVolume=function(){return new n};e.prototype.iGetObjectProjectionMatrix=function(t,e,i){if(i===void 0){i=null}throw new s("Object projection matrices are not supported for LightProbe objects!")};e.prototype._iCollectRenderables=function(t){};return e}(o);e.exports=h},{"awayjs-core/lib/bounds/NullBounds":undefined,"awayjs-core/lib/errors/Error":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/partition/LightProbeNode":undefined}],"awayjs-display/lib/entities/LineSegment":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/library/AssetType");var s=t("awayjs-display/lib/base/DisplayObject");var o=t("awayjs-display/lib/partition/EntityNode");var a=t("awayjs-display/lib/events/MaterialEvent");var h=function(t){r(e,t);function e(e,i,r,n){var s=this;if(n===void 0){n=1}t.call(this);this._pIsEntity=true;this.onSizeChangedDelegate=function(t){return s.onSizeChanged(t)};this.material=e;this._startPosition=i;this._endPosition=r;this._halfThickness=n*.5}Object.defineProperty(e.prototype,"animator",{get:function(){return this._animator},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return n.LINE_SEGMENT},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPostion",{get:function(){return this._startPosition},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPosition",{set:function(t){if(this._startPosition==t)return;this._startPosition=t;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endPosition",{get:function(){return this._endPosition},set:function(t){if(this._endPosition==t)return;this._endPosition=t;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"material",{get:function(){return this._material},set:function(t){if(t==this._material)return;if(this._material){this._material.iRemoveOwner(this);this._material.removeEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}this._material=t;if(this._material){this._material.iAddOwner(this);this._material.addEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"thickness",{get:function(){return this._halfThickness*2},set:function(t){if(this._halfThickness==t)return;this._halfThickness=t*.5;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"uvTransform",{get:function(){return this._uvTransform},set:function(t){this._uvTransform=t},enumerable:true,configurable:true});e.prototype.dispose=function(){this._startPosition=null;this._endPosition=null};e.prototype.pCreateEntityPartitionNode=function(){return new o(this)};e.prototype.pUpdateBounds=function(){this._pBounds.fromExtremes(this._startPosition.x,this._startPosition.y,this._startPosition.z,this._endPosition.x,this._endPosition.y,this._endPosition.z);t.prototype.pUpdateBounds.call(this)};e.prototype.onSizeChanged=function(t){this.notifyRenderableUpdate()};e.prototype.notifyRenderableUpdate=function(){var t=this._pRenderables.length;for(var e=0;e0){e=0;s=n[0];o=s.getBoundingPositions();h=u=o[e];p=c=o[e+1];l=f=o[e+2];i=a;while(i--){s=n[i];o=s.getBoundingPositions();e=o.length;while(e--){r=o[e];if(ru)u=r;r=o[e+1];if(rc)c=r;r=o[e+2];if(rf)f=r}}this._pBounds.fromExtremes(h,p,l,u,c,f)}else{this._pBounds.fromExtremes(0,0,0,0,0,0)}t.prototype.pUpdateBounds.call(this)};e.prototype.onGeometryBoundsInvalid=function(t){this.pInvalidateBounds()};e.prototype.onSubGeometryAdded=function(t){this.addSubMesh(t.subGeometry)};e.prototype.onSubGeometryRemoved=function(t){var e;var i=t.subGeometry;var r=this._subMeshes.length;var n;for(n=0;nthis._pFallOff){this._pFallOff=this._pRadius;this.pInvalidateBounds()}this._pFallOffFactor=1/(this._pFallOff*this._pFallOff-this._pRadius*this._pRadius)},enumerable:true,configurable:true});e.prototype.iFallOffFactor=function(){return this._pFallOffFactor};Object.defineProperty(e.prototype,"fallOff",{get:function(){return this._pFallOff},set:function(t){this._pFallOff=t;if(this._pFallOff<0)this._pFallOff=0;if(this._pFallOffc?u:c);var d;var _;var y=a.rawData[14];d=y-f;_=y+f;r[5]=r[0]=d/f;r[10]=_/(_-d);r[11]=1;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[12]=r[13]=r[15]=0;r[14]=-d*r[10];if(!i)i=new s;i.copyRawDataFrom(r);i.prepend(a);return i};e.prototype._iCollectRenderables=function(t){};return e}(a);e.exports=l},{"awayjs-core/lib/bounds/BoundingSphere":undefined,"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper":undefined,"awayjs-display/lib/partition/PointLightNode":undefined}],"awayjs-display/lib/entities/Shape":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/base/DisplayObject");var s=function(t){r(e,t);function e(){t.call(this)}Object.defineProperty(e.prototype,"graphics",{get:function(){return this._graphics},enumerable:true,configurable:true});return e}(n);e.exports=s},{"awayjs-display/lib/base/DisplayObject":undefined}],"awayjs-display/lib/entities/Skybox":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/bounds/NullBounds");var s=t("awayjs-core/lib/library/AssetType");var o=t("awayjs-display/lib/base/DisplayObject");var a=t("awayjs-display/lib/partition/SkyboxNode");var h=function(t){r(e,t);function e(e){t.call(this);this._pIsEntity=true;this.material=e}Object.defineProperty(e.prototype,"animator",{get:function(){return this._animator},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"uvTransform",{get:function(){return this._uvTransform},set:function(t){this._uvTransform=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"material",{get:function(){return this._material},set:function(t){if(t==this._material)return;if(this._material)this._material.iRemoveOwner(this);this._material=t;if(this._material)this._material.iAddOwner(this)},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return s.SKYBOX},enumerable:true,configurable:true});e.prototype.pInvalidateBounds=function(){};e.prototype.pCreateEntityPartitionNode=function(){return new a(this)};e.prototype.pCreateDefaultBoundingVolume=function(){return new n};e.prototype.pUpdateBounds=function(){this._pBoundsInvalid=false};Object.defineProperty(e.prototype,"castsShadows",{get:function(){return false},enumerable:true,configurable:true});e.prototype._iCollectRenderables=function(t){};e.prototype._iCollectRenderable=function(t){};return e}(o);e.exports=h},{"awayjs-core/lib/bounds/NullBounds":undefined,"awayjs-core/lib/library/AssetType":undefined,"awayjs-display/lib/base/DisplayObject":undefined,"awayjs-display/lib/partition/SkyboxNode":undefined}],"awayjs-display/lib/entities/TextField":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/base/DisplayObject");var s=function(t){r(e,t);function e(){t.call(this);this._text=""}Object.defineProperty(e.prototype,"bottomScrollV",{get:function(){return this._bottomScrollV},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"caretIndex",{get:function(){return this._caretIndex},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"length",{get:function(){return this._length},enumerable:true,configurable:true});e.prototype.maxScrollH=function(){return this._maxScrollH};e.prototype.maxScrollV=function(){return this._maxScrollV};Object.defineProperty(e.prototype,"numLines",{get:function(){return this._numLines},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"selectionBeginIndex",{get:function(){return this._selectionBeginIndex},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"selectionEndIndex",{get:function(){return this._selectionEndIndex},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"text",{get:function(){return this._text},set:function(t){if(this._text==t)return;this._text=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"textHeight",{get:function(){return this._textHeight},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"textInteractionMode",{get:function(){return this._textInteractionMode},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"textWidth",{get:function(){return this._textWidth},enumerable:true,configurable:true});e.prototype.appendText=function(t){};e.prototype.getCharBoundaries=function(t){return this._charBoundaries};e.prototype.getCharIndexAtPoint=function(t,e){return this._charIndexAtPoint};e.prototype.getFirstCharInParagraph=function(t){return this._firstCharInParagraph};e.prototype.getImageReference=function(t){return this._imageReference};e.prototype.getLineIndexAtPoint=function(t,e){return this._lineIndexAtPoint};e.prototype.getLineIndexOfChar=function(t){return this._lineIndexOfChar};e.prototype.getLineLength=function(t){return this._lineLength};e.prototype.getLineMetrics=function(t){return this._lineMetrics};e.prototype.getLineOffset=function(t){return this._lineOffset};e.prototype.getLineText=function(t){return this._lineText};e.prototype.getParagraphLength=function(t){return this._paragraphLength};e.prototype.getTextFormat=function(t,e){if(t===void 0){t=-1}if(e===void 0){e=-1}return this._textFormat};e.prototype.replaceSelectedText=function(t){};e.prototype.replaceText=function(t,e,i){};e.prototype.setSelection=function(t,e){};e.prototype.setTextFormat=function(t,e,i){if(e===void 0){e=-1}if(i===void 0){i=-1}};e.isFontCompatible=function(t,e){return false};return e}(n);e.exports=s},{"awayjs-display/lib/base/DisplayObject":undefined}],"awayjs-display/lib/entities/TimeLine":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/library/AssetType");var s=t("awayjs-display/lib/containers/DisplayObjectContainer");var o=function(t){r(e,t);function e(){t.call(this);this._duration=0;this._timeLineObjs=new Array;this._frames=new Array;this._currentFrame=0;this._speed=1;this._isplaying=false;this._fps=25;this._time=0;this._duration=0;this._playMode=1}Object.defineProperty(e.prototype,"speed",{get:function(){return this._speed},set:function(t){this._speed=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"fps",{get:function(){return this._fps},set:function(t){this._fps=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return n.TIMELINE},enumerable:true,configurable:true});e.prototype.update=function(t,e){if(e===void 0){e=false}var i;if(this._isplaying||!this._isInit||e){var t=t*this._speed;this._time+=t;while(this._time>this._duration){if(this._playMode==0){this._time=this._duration;this.stop()}else if(this._playMode==1){this._time-=this._duration}}while(this._time<0){if(this._playMode==0){this._time=0;this.stop()}else if(this._playMode==1){this._time+=this._duration}}var r=0;var s;var o=false;while(r=s.startTime&&this._time<=s.endTime){o=true;r=this._frames.length}else{s.makeDirty();if(this._speed<0){this._currentFrame--;if(this._currentFrame<0){this._currentFrame=this._frames.length-1}}else{this._currentFrame++;if(this._currentFrame>=this._frames.length){this._currentFrame=0}}}r++}if(o){if(s.isDirty){var a=1;if(this._speed<0){a=2}a=0;for(i=0;i=0){this._time=e*(1e3/this._fps);this._isplaying=true;this.update(0,true)}};e.prototype.gotoAndStopLabel=function(t){var e=-1;for(var i=0;i=0){this._time=e*(1e3/this._fps);this.update(0,true);this._isplaying=false}};e.prototype.gotoAndPlayTime=function(t){this._time=t;this._isplaying=true;this.update(0,true)};e.prototype.gotoAndStopTime=function(t){this._time=t;this.update(0,true);this._isplaying=false};e.prototype.addTimeLineObject=function(t,e){if(e===void 0){e=true}if(e){this.addChild(t.asset)}t.deactivate();this._timeLineObjs.push(t)};e.prototype.getTimeLineObjectByID=function(t){for(var e=0;ethis._endTime*e){return}if(this._type==0){return this._startValue+(t-this._startTime)*(this._duration*e)*(this._endValue-this._startValue)}if(this._type==1){}if(this._type==2){}if(this._type==3){}return};return t}();e.exports=r},{}],"awayjs-display/lib/entities/timelinedata/TimeLineFrame":[function(t,e,i){var r=function(){function t(){this._isDirty=true;this._script="";this._duration=1;this._frameCommands=new Array;this._frameCommandsReverse=new Array;this._frameCommandsInit=new Array;this._framelabels=new Array;this._labelTypes=new Array}t.prototype.addCommand=function(t){this._frameCommands.push(t)};t.prototype.addCommandReverse=function(t){this._frameCommandsReverse.push(t)};t.prototype.addCommandInit=function(t){this._frameCommandsInit.push(t)};t.prototype.addLabel=function(t,e){this._framelabels.push(t);this._labelTypes.push(e)};Object.defineProperty(t.prototype,"framelabels",{get:function(){return this._framelabels},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"labelTypes",{get:function(){return this._labelTypes},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"script",{get:function(){return this._script},enumerable:true,configurable:true});t.prototype.addToScript=function(t){this._script+=t};Object.defineProperty(t.prototype,"isDirty",{get:function(){return this._isDirty},enumerable:true,configurable:true});t.prototype.makeDirty=function(){this._isDirty=true};Object.defineProperty(t.prototype,"startTime",{get:function(){return this._startTime},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"duration",{get:function(){return this._duration},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"endTime",{get:function(){return this._endTime},enumerable:true,configurable:true});t.prototype.setFrameTime=function(t,e){this._startTime=t;this._duration=e;this._endTime=t+e};t.prototype.executeCommands=function(t,e,i){if(t==0){for(var r=0;ri.right||ni.bottom){e._pMouseX=null;e._pMouseY=null}else{e._pMouseX=r+i.left;e._pMouseY=n+i.top;e.updateCollider();if(e.layeredView&&this._iCollidingObject)break}}this._iUpdateDirty=true};return t}();e.exports=s},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/events/MouseEvent":undefined}],"awayjs-display/lib/materials/CSSMaterialBase":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/materials/MaterialBase");var s=t("awayjs-core/lib/textures/ImageTexture");var o=function(t){r(e,t);function e(e,i,r){if(e===void 0){e=null}if(i===void 0){i=true}if(r===void 0){r=false}t.call(this);this._iMaterialId=Number(this.id);this.texture=e;this.smooth=i;this.repeat=r}Object.defineProperty(e.prototype,"imageElement",{get:function(){return this._imageElement},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"imageStyle",{get:function(){return this._imageStyle},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"texture",{get:function(){return this._pTexture},set:function(t){if(this._pTexture==t)return;this._pTexture=t;if(t instanceof s){this._imageElement=t.htmlImageElement;var e=document.createElement("style");e.type="text/css";document.getElementsByTagName("head")[0].appendChild(e);var i=document.styleSheets[document.styleSheets.length-1];i.insertRule(".material"+this.id+"{ }",0);var r=i.cssRules[0].style;r.backgroundImage="url("+this._imageElement.src+")";r.backgroundSize="100% 100%";r.position="absolute";r.width=this._imageElement.width+"px";r.height=this._imageElement.height+"px";r.transformOrigin=r["-webkit-transform-origin"]=r["-moz-transform-origin"]=r["-o-transform-origin"]=r["-ms-transform-origin"]="0% 0%";this._pHeight=this._imageElement.height;this._pWidth=this._imageElement.width;this._pNotifySizeChanged()}},enumerable:true,configurable:true});return e}(n);e.exports=o},{"awayjs-core/lib/textures/ImageTexture":undefined,"awayjs-display/lib/materials/MaterialBase":undefined}],"awayjs-display/lib/materials/LightSources":[function(t,e,i){var r=function(){function t(){}t.LIGHTS=1;t.PROBES=2;t.ALL=3;return t}();e.exports=r},{}],"awayjs-display/lib/materials/MaterialBase":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/events/Event");var s=t("awayjs-core/lib/library/AssetType");var o=t("awayjs-core/lib/library/NamedAssetBase");var a=t("awayjs-display/lib/base/BlendMode");var h=t("awayjs-display/lib/events/MaterialEvent");var p=function(t){r(e,t);function e(){var e=this;t.call(this);this._materialPassData=new Array;this._materialData=new Array;this._pAlphaThreshold=0;this._pAnimateUVs=false;this._enableLightFallOff=true;this._specularLightSources=1;this._diffuseLightSources=3;this._iMaterialId=0;this._iBaseScreenPassIndex=0;this._bothSides=false;this._pScreenPassesInvalid=true;this._pBlendMode=a.NORMAL;this._numPasses=0;this._mipmap=false;this._smooth=true;this._repeat=false;this._color=16777215;this._pHeight=1;this._pWidth=1;this._pRequiresBlending=false;this._iMaterialId=Number(this.id);this._owners=new Array;this._passes=new Array;this._onPassChangeDelegate=function(t){return e.onPassChange(t)};this._onLightChangeDelegate=function(t){return e.onLightsChange(t)};this.alphaPremultiplied=false}Object.defineProperty(e.prototype,"assetType",{get:function(){return s.MATERIAL},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"height",{get:function(){return this._pHeight},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"animationSet",{get:function(){return this._animationSet},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightPicker",{get:function(){return this._pLightPicker},set:function(t){if(this._pLightPicker==t)return;if(this._pLightPicker)this._pLightPicker.removeEventListener(n.CHANGE,this._onLightChangeDelegate);this._pLightPicker=t;if(this._pLightPicker)this._pLightPicker.addEventListener(n.CHANGE,this._onLightChangeDelegate);this._pInvalidateScreenPasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"mipmap",{get:function(){return this._mipmap},set:function(t){if(this._mipmap==t)return;this._mipmap=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"smooth",{get:function(){return this._smooth},set:function(t){if(this._smooth==t)return;this._smooth=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"repeat",{get:function(){return this._repeat},set:function(t){if(this._repeat==t)return;this._repeat=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"color",{get:function(){return this._color},set:function(t){if(this._color==t)return;this._color=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"texture",{get:function(){return this._pTexture},set:function(t){if(this._pTexture==t)return;this._pTexture=t;this._pInvalidatePasses();this._pHeight=this._pTexture.height;this._pWidth=this._pTexture.width;this._pNotifySizeChanged()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"animateUVs",{get:function(){return this._pAnimateUVs},set:function(t){if(this._pAnimateUVs==t)return;this._pAnimateUVs=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"enableLightFallOff",{get:function(){return this._enableLightFallOff},set:function(t){if(this._enableLightFallOff==t)return;this._enableLightFallOff=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"diffuseLightSources",{get:function(){return this._diffuseLightSources},set:function(t){if(this._diffuseLightSources==t)return;this._diffuseLightSources=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"specularLightSources",{get:function(){return this._specularLightSources},set:function(t){if(this._specularLightSources==t)return;this._specularLightSources=t;this._pInvalidatePasses()},enumerable:true,configurable:true});e.prototype.dispose=function(){var t;var e;this._pClearScreenPasses();e=this._materialData.length;for(t=0;t1)t=1;if(this._pAlphaThreshold==t)return;this._pAlphaThreshold=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"requiresBlending",{get:function(){return this._pRequiresBlending},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"width",{get:function(){return this._pWidth},enumerable:true,configurable:true});e.prototype._iActivatePass=function(t,e,i){t.materialPass._iActivate(t,e,i)};e.prototype._iDeactivatePass=function(t,e){t.materialPass._iDeactivate(t,e)};e.prototype._iRenderPass=function(t,e,i,r,n){if(this._pLightPicker)this._pLightPicker.collectLights(e);t.materialPass._iRender(t,e,i,r,n)};e.prototype.iAddOwner=function(t){this._owners.push(t);var e;var i=t.animator;if(i)e=i.animationSet;if(t.animator){if(this._animationSet&&e!=this._animationSet){throw new Error("A Material instance cannot be shared across material owners with different animation sets")}else{if(this._animationSet!=e){this._animationSet=e;this.invalidateAnimation()}}}};e.prototype.iRemoveOwner=function(t){this._owners.splice(this._owners.indexOf(t),1);if(this._owners.length==0){this._animationSet=null;this.invalidateAnimation()}};Object.defineProperty(e.prototype,"iOwners",{get:function(){return this._owners},enumerable:true,configurable:true});e.prototype._iNumScreenPasses=function(){return this._numPasses};Object.defineProperty(e.prototype,"_iScreenPasses",{get:function(){return this._passes},enumerable:true,configurable:true});e.prototype._pInvalidatePasses=function(){var t=this._materialPassData.length;for(var e=0;e1e-5?1/p:5e7;this._pLightProbeWeights[u]=p;l+=p}l=1/l;for(u=0;u4)throw new Error("numCascades must be an integer between 1 and 4");this._numCascades=e;this._changeDispatcher=new a(this);this.init()}e.prototype.getSplitRatio=function(t){return this._splitRatios[t]};e.prototype.setSplitRatio=function(t,e){if(e<0)e=0;else if(e>1)e=1;if(t>=this._numCascades)throw new Error("index must be smaller than the number of cascades!");this._splitRatios[t]=e};e.prototype.getDepthProjections=function(t){return this._depthCameras[t].viewProjection};e.prototype.init=function(){this._splitRatios=new Array(this._numCascades);this._nearPlaneDistances=new Array(this._numCascades);var t=1;for(var e=this._numCascades-1;e>=0;--e){this._splitRatios[e]=t;t*=.4}this._texOffsetsX=Array(-1,1,-1,1);this._texOffsetsY=Array(1,1,-1,-1);this._pScissorRects=new Array(4);this._depthLenses=new Array;this._depthCameras=new Array;for(e=0;e4)throw new Error("numCascades must be an integer between 1 and 4");this._numCascades=t;this.invalidateScissorRects();this.init();this.dispatchEvent(new o(o.CHANGE))},enumerable:true,configurable:true});e.prototype.pDrawDepthMap=function(t,e,i){if(this._pScissorRectsInvalid)this.updateScissorRects();this._pCasterCollector.cullPlanes=this._pCullPlanes;this._pCasterCollector.camera=this._pOverallDepthCamera;this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRenderCascades(this._pCasterCollector,t,this._numCascades,this._pScissorRects,this._depthCameras)};e.prototype.updateScissorRects=function(){var t=this._pDepthMapSize*.5;this._pScissorRects[0]=new s(0,0,t,t);this._pScissorRects[1]=new s(t,0,t,t);this._pScissorRects[2]=new s(0,t,t,t);this._pScissorRects[3]=new s(t,t,t,t);this._pScissorRectsInvalid=false};e.prototype.pUpdateDepthProjection=function(t){var e;var i=t.projection;var r=i.near;var n=i.far-r;this.pUpdateProjectionFromFrustumCorners(t,t.projection.frustumCorners,this._pMatrix);this._pMatrix.appendScale(.96,.96,1);this._pOverallDepthProjection.matrix=this._pMatrix;this.pUpdateCullPlanes(t);for(var s=0;s_)_=o;if(ay)y=a;if(h>m)m=h;if(p_)_=p;if(ly)y=l;if(u>m)m=u;b+=3}d=1;var g=_-c;var v=y-f;var w=1/(m-d);if(c<0)c-=this._pSnap;if(f<0)f-=this._pSnap;c=Math.floor(c/this._pSnap)*this._pSnap;f=Math.floor(f/this._pSnap)*this._pSnap;var P=2*this._pSnap;g=Math.floor(g/P+1)*P;v=Math.floor(v/P+1)*P;_=c+g;y=f+v;g=1/g;v=1/v;s[0]=2*g;s[5]=2*v;s[10]=w;s[12]=-(_+c)*g;s[13]=-(y+f)*v;s[14]=-d*w;s[15]=1;s[1]=s[2]=s[3]=s[4]=s[6]=s[7]=s[8]=s[9]=s[11]=0;t.copyRawDataFrom(s);t.appendScale(.96,.96,1);t.appendTranslation(i,r,0);t.appendScale(.5,.5,1)};e.prototype.addEventListener=function(t,e){this._changeDispatcher.addEventListener(t,e)};e.prototype.removeEventListener=function(t,e){this._changeDispatcher.removeEventListener(t,e)};e.prototype.dispatchEvent=function(t){return this._changeDispatcher.dispatchEvent(t)};e.prototype.hasEventListener=function(t){return this._changeDispatcher.hasEventListener(t)};Object.defineProperty(e.prototype,"_iNearPlaneDistances",{get:function(){return this._nearPlaneDistances},enumerable:true,configurable:true});return e}(l);e.exports=u},{"awayjs-core/lib/events/Event":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/geom/Matrix3DUtils":undefined,"awayjs-core/lib/geom/Rectangle":undefined,"awayjs-core/lib/projections/FreeMatrixProjection":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined}],"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/errors/PartialImplementationError");var s=t("awayjs-display/lib/entities/Camera");var o=t("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase");var a=function(t){r(e,t);function e(){t.call(this);this._pDepthMapSize=512;this._needsRender=new Array;this.initCameras()}e.prototype.initCameras=function(){this._depthCameras=new Array;this._projections=new Array;this.addCamera(0,90,0);this.addCamera(0,-90,0);this.addCamera(-90,0,0);this.addCamera(90,0,0);this.addCamera(0,0,0);this.addCamera(0,180,0)};e.prototype.addCamera=function(t,e,i){var r=new s;r.rotationX=t;r.rotationY=e;r.rotationZ=i;r.projection.near=.01;var n=r.projection;n.fieldOfView=90;this._projections.push(n);r.projection._iAspectRatio=1;this._depthCameras.push(r)};e.prototype.pCreateDepthTexture=function(){throw new n};e.prototype.pUpdateDepthProjection=function(t){var e=this._pLight;var i=e._pFallOff;var r=this._pLight.scenePosition;for(var n=0;n<6;++n){this._projections[n].far=i;this._depthCameras[n].transform.position=r;this._needsRender[n]=true}};e.prototype.pDrawDepthMap=function(t,e,i){for(var r=0;r<6;++r){if(this._needsRender[r]){this._pCasterCollector.camera=this._depthCameras[r];this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRender(this._pCasterCollector,t,null,r)}}};return e}(o);e.exports=a},{"awayjs-core/lib/errors/PartialImplementationError":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":undefined}],"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Matrix3D");var s=t("awayjs-core/lib/projections/FreeMatrixProjection");var o=t("awayjs-display/lib/entities/Camera");var a=t("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase");var h=function(t){r(e,t);function e(){t.call(this);this._pLightOffset=1e4;this._pSnap=64;this._pCullPlanes=[];this._pOverallDepthProjection=new s;this._pOverallDepthCamera=new o(this._pOverallDepthProjection);this._pLocalFrustum=[];this._pMatrix=new n}Object.defineProperty(e.prototype,"snap",{get:function(){return this._pSnap},set:function(t){this._pSnap=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightOffset",{get:function(){return this._pLightOffset},set:function(t){this._pLightOffset=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"iDepthProjection",{get:function(){return this._pOverallDepthCamera.viewProjection},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"depth",{get:function(){return this._pMaxZ-this._pMinZ},enumerable:true,configurable:true});e.prototype.pDrawDepthMap=function(t,e,i){this._pCasterCollector.camera=this._pOverallDepthCamera;this._pCasterCollector.cullPlanes=this._pCullPlanes;this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRender(this._pCasterCollector,t)};e.prototype.pUpdateCullPlanes=function(t){var e=this._pOverallDepthCamera.frustumPlanes;var i=t.frustumPlanes;this._pCullPlanes.length=4;this._pCullPlanes[0]=e[0];this._pCullPlanes[1]=e[1];this._pCullPlanes[2]=e[2];this._pCullPlanes[3]=e[3];var r=this._pLight;var n=r.sceneDirection;var s=n.x;var o=n.y;var a=n.z;var h=4;for(var p=0;p<6;++p){var l=i[p];if(l.a*s+l.b*o+l.c*a<0)this._pCullPlanes[h++]=l}};e.prototype.pUpdateDepthProjection=function(t){this.pUpdateProjectionFromFrustumCorners(t,t.projection.frustumCorners,this._pMatrix);this._pOverallDepthProjection.matrix=this._pMatrix;this.pUpdateCullPlanes(t)};e.prototype.pUpdateProjectionFromFrustumCorners=function(t,e,i){var r=new Array;var n;var s,o,a;var h,p;var l,u;var c;var f=this._pLight;n=f.sceneDirection;this._pOverallDepthCamera.transform.matrix3D=this._pLight.sceneTransform;s=Math.floor((t.x-n.x*this._pLightOffset)/this._pSnap)*this._pSnap;o=Math.floor((t.y-n.y*this._pLightOffset)/this._pSnap)*this._pSnap;a=Math.floor((t.z-n.z*this._pLightOffset)/this._pSnap)*this._pSnap;this._pOverallDepthCamera.x=s;this._pOverallDepthCamera.y=o;this._pOverallDepthCamera.z=a;this._pMatrix.copyFrom(this._pOverallDepthCamera.inverseSceneTransform);this._pMatrix.prepend(t.sceneTransform);this._pMatrix.transformVectors(e,this._pLocalFrustum);h=l=this._pLocalFrustum[0];p=u=this._pLocalFrustum[1];this._pMaxZ=this._pLocalFrustum[2];c=3;while(c<24){s=this._pLocalFrustum[c];o=this._pLocalFrustum[c+1];a=this._pLocalFrustum[c+2];if(sl)l=s;if(ou)u=o;if(a>this._pMaxZ)this._pMaxZ=a;c+=3}this._pMinZ=1;var d=l-h;var _=u-p;var y=1/(this._pMaxZ-this._pMinZ);if(h<0)h-=this._pSnap;if(p<0)p-=this._pSnap;h=Math.floor(h/this._pSnap)*this._pSnap;p=Math.floor(p/this._pSnap)*this._pSnap;var m=2*this._pSnap;d=Math.floor(d/m+2)*m;_=Math.floor(_/m+2)*m;l=h+d;u=p+_;d=1/d;_=1/_;r[0]=2*d;r[5]=2*_;r[10]=y;r[12]=-(l+h)*d;r[13]=-(u+p)*_;r[14]=-this._pMinZ*y;r[15]=1;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[11]=0;i.copyRawDataFrom(r)};return e}(a);e.exports=h},{"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/projections/FreeMatrixProjection":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":undefined}],"awayjs-display/lib/materials/shadowmappers/NearDirectionalShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i]; -function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper");var s=function(t){r(e,t);function e(e){if(e===void 0){e=.5}t.call(this);this.coverageRatio=e}Object.defineProperty(e.prototype,"coverageRatio",{get:function(){return this._coverageRatio},set:function(t){if(t>1)t=1;else if(t<0)t=0;this._coverageRatio=t},enumerable:true,configurable:true});e.prototype.pUpdateDepthProjection=function(t){var e=t.projection.frustumCorners;for(var i=0;i<12;++i){var r=e[i];this._pLocalFrustum[i]=r;this._pLocalFrustum[i+12]=r+(e[i+12]-r)*this._coverageRatio}this.pUpdateProjectionFromFrustumCorners(t,this._pLocalFrustum,this._pMatrix);this._pOverallDepthProjection.matrix=this._pMatrix};return e}(n);e.exports=s},{"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined}],"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":[function(t,e,i){var r=t("awayjs-core/lib/errors/AbstractMethodError");var n=t("awayjs-display/lib/traverse/ShadowCasterCollector");var s=t("awayjs-core/lib/textures/RenderTexture");var o=function(){function t(){this._pDepthMapSize=2048;this._autoUpdateShadows=true;this._pCasterCollector=this.pCreateCasterCollector()}t.prototype.pCreateCasterCollector=function(){return new n};Object.defineProperty(t.prototype,"autoUpdateShadows",{get:function(){return this._autoUpdateShadows},set:function(t){this._autoUpdateShadows=t},enumerable:true,configurable:true});t.prototype.updateShadows=function(){this._iShadowsInvalid=true};t.prototype.iSetDepthMap=function(t){if(this._depthMap==t)return;if(this._depthMap&&!this._explicitDepthMap)this._depthMap.dispose();this._depthMap=t;if(this._depthMap){this._explicitDepthMap=true;this._pDepthMapSize=this._depthMap.size}else{this._explicitDepthMap=false}};Object.defineProperty(t.prototype,"light",{get:function(){return this._pLight},set:function(t){this._pLight=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"depthMap",{get:function(){if(!this._depthMap)this._depthMap=this.pCreateDepthTexture();return this._depthMap},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"depthMapSize",{get:function(){return this._pDepthMapSize},set:function(t){if(t==this._pDepthMapSize)return;this._pSetDepthMapSize(t)},enumerable:true,configurable:true});t.prototype.dispose=function(){this._pCasterCollector=null;if(this._depthMap&&!this._explicitDepthMap)this._depthMap.dispose();this._depthMap=null};t.prototype.pCreateDepthTexture=function(){return new s(this._pDepthMapSize,this._pDepthMapSize)};t.prototype.iRenderDepthMap=function(t,e){this._iShadowsInvalid=false;this.pUpdateDepthProjection(t.camera);if(!this._depthMap)this._depthMap=this.pCreateDepthTexture();this.pDrawDepthMap(this._depthMap,t.scene,e)};t.prototype.pUpdateDepthProjection=function(t){throw new r};t.prototype.pDrawDepthMap=function(t,e,i){throw new r};t.prototype._pSetDepthMapSize=function(t){this._pDepthMapSize=t;if(this._explicitDepthMap){throw Error("Cannot set depth map size for the current renderer.")}else if(this._depthMap){this._depthMap.dispose();this._depthMap=null}};return t}();e.exports=o},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/textures/RenderTexture":undefined,"awayjs-display/lib/traverse/ShadowCasterCollector":undefined}],"awayjs-display/lib/partition/CameraNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e)}e.prototype.acceptTraverser=function(t){};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/DirectionalLightNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e);this._directionalLight=e}e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyDirectionalLight(this._directionalLight)};e.prototype.isCastingShadow=function(){return false};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/EntityNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/errors/PartialImplementationError");var s=t("awayjs-display/lib/partition/NodeBase");var o=function(t){r(e,t);function e(e){t.call(this);this._entity=e;this._iNumEntities=1}Object.defineProperty(e.prototype,"entity",{get:function(){return this._entity},enumerable:true,configurable:true});e.prototype.removeFromParent=function(){if(this._iParent)this._iParent.iRemoveNode(this);this._iParent=null};e.prototype.isCastingShadow=function(){return this.entity.castsShadows};e.prototype.isInFrustum=function(t,e){if(!this._entity._iIsVisible())return false;return this._entity.worldBounds.isInFrustum(t,e)};e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyEntity(this._entity)};e.prototype.isIntersectingRay=function(t,e){if(!this._entity._iIsVisible())return false;return this._entity.isIntersectingRay(t,e)};e.prototype._pCreateBoundsPrimitive=function(){throw new n};return e}(s);e.exports=o},{"awayjs-core/lib/errors/PartialImplementationError":undefined,"awayjs-display/lib/partition/NodeBase":undefined}],"awayjs-display/lib/partition/LightProbeNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e);this._lightProbe=e}e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyLightProbe(this._lightProbe)};e.prototype.isCastingShadow=function(){return false};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/NodeBase":[function(t,e,i){var r=function(){function t(){this._pNumChildNodes=0;this._iNumEntities=0;this._pChildNodes=new Array}Object.defineProperty(t.prototype,"boundsVisible",{get:function(){return this._explicitBoundsVisible},set:function(t){if(this._explicitBoundsVisible==t)return;this._explicitBoundsVisible=t;this._iUpdateImplicitBoundsVisible(this._iParent?this._iParent.boundsChildrenVisible:false)},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"boundsChildrenVisible",{get:function(){return this._boundsChildrenVisible},set:function(t){if(this._boundsChildrenVisible==t)return;this._boundsChildrenVisible=t;for(var e=0;ee._iPickingCollisionVO.rayEntryDistance?1:-1};t.prototype.getPickingCollisionVO=function(t){this._entities.length=this._numEntities;this._entities=this._entities.sort(this.sortOnNearT);var e=Number.MAX_VALUE;var i;var r;var n;var s;for(s=0;sthis._segmentsH/2?this._height/2:-this._height/2;var j=g*Math.sin(v);var A=1/Math.sqrt(w*w+j*j+b*b);var O=Math.sqrt(j*j+w*w);if(this._yUp){f=0;d=O>.007?w/O:0;u=-b;c=j}else{f=O>.007?w/O:0;d=0;u=j;c=b}if(o==this._segmentsW){r[p]=r[l];r[p+1]=r[l+1];r[p+2]=r[l+2];n[p]=(n[l]+w*A)*.5;n[p+1]=(n[l+1]+u*A)*.5;n[p+2]=(n[l+2]+c*A)*.5;s[p]=(s[l]+(O>.007?-j/O:1))*.5;s[p+1]=(s[l+1]+f)*.5;s[p+2]=(s[l+2]+d)*.5}else{r[p]=w;r[p+1]=this._yUp?u-P:u;r[p+2]=this._yUp?c:c+P;n[p]=w*A;n[p+1]=u*A;n[p+2]=c*A;s[p]=O>.007?-j/O:1;s[p+1]=f;s[p+2]=d}if(o>0&&a>0){var C=(this._segmentsW+1)*a+o;var D=(this._segmentsW+1)*a+o-1;var S=(this._segmentsW+1)*(a-1)+o-1;var E=(this._segmentsW+1)*(a-1)+o;if(a==this._segmentsH){r[p]=r[l];r[p+1]=r[l+1];r[p+2]=r[l+2];i[h++]=C;i[h++]=S;i[h++]=E}else if(a==1){i[h++]=C;i[h++]=D;i[h++]=S}else{i[h++]=C;i[h++]=D;i[h++]=S;i[h++]=C;i[h++]=S;i[h++]=E}}p+=3}}y.updateIndices(i);y.updatePositions(r);y.updateVertexNormals(n);y.updateVertexTangents(s)}else if(e=="lineSubGeometry"){}};e.prototype._pBuildUVs=function(t,e){var i,r;var n;if(e=="triangleSubGeometry"){var s=t;if(s.uvs&&this._numVertices==s.numVertices){n=s.uvs}else{n=new Array(this._numVertices*2)}var o=0;for(r=0;r<=this._segmentsH;++r){for(i=0;i<=this._segmentsW;++i){n[o++]=i/this._segmentsW*s.scaleU;n[o++]=r/this._segmentsH*s.scaleV}}s.updateUVs(n)}else if(e=="lineSubGeometry"){}};return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitivePrefabBase":undefined}],"awayjs-display/lib/prefabs/PrimitiveConePrefab":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/prefabs/PrimitiveCylinderPrefab");var s=function(t){r(e,t);function e(e,i,r,n,s,o){if(e===void 0){e=50}if(i===void 0){i=100}if(r===void 0){r=16}if(n===void 0){n=1}if(s===void 0){s=true}if(o===void 0){o=true}t.call(this,0,e,i,r,n,false,s,true,o)}Object.defineProperty(e.prototype,"radius",{get:function(){return this._pBottomRadius},set:function(t){this._pBottomRadius=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab":undefined}],"awayjs-display/lib/prefabs/PrimitiveCubePrefab":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/prefabs/PrimitivePrefabBase");var s=function(t){r(e,t);function e(e,i,r,n,s,o,a){if(e===void 0){e=100}if(i===void 0){i=100}if(r===void 0){r=100}if(n===void 0){n=1}if(s===void 0){s=1}if(o===void 0){o=1}if(a===void 0){a=true}t.call(this);this._width=e;this._height=i;this._depth=r;this._segmentsW=n;this._segmentsH=s;this._segmentsD=o;this._tile6=a}Object.defineProperty(e.prototype,"width",{get:function(){return this._width},set:function(t){this._width=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"height",{get:function(){return this._height},set:function(t){this._height=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"depth",{get:function(){return this._depth},set:function(t){this._depth=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"tile6",{get:function(){return this._tile6},set:function(t){this._tile6=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsW",{get:function(){return this._segmentsW},set:function(t){this._segmentsW=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsH",{get:function(){return this._segmentsH},set:function(t){this._segmentsH=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsD",{get:function(){return this._segmentsD},set:function(t){this._segmentsD=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});e.prototype._pBuildGeometry=function(t,e){var i;var r;var n;var s;var o,a,h,p;var l,u,c=0;var f,d;var _,y,m;var b,g,v;var w;var P;var j;_=this._width/2;y=this._height/2;m=this._depth/2;if(e=="triangleSubGeometry"){var A=t;j=((this._segmentsW+1)*(this._segmentsH+1)+(this._segmentsW+1)*(this._segmentsD+1)+(this._segmentsH+1)*(this._segmentsD+1))*2;P=(this._segmentsW*this._segmentsH+this._segmentsW*this._segmentsD+this._segmentsH*this._segmentsD)*12;if(j==A.numVertices&&A.indices!=null){i=A.indices;r=A.positions;n=A.vertexNormals;s=A.vertexTangents}else{i=new Array(P);r=new Array(j*3);n=new Array(j*3);s=new Array(j*3);this._pInvalidateUVs()}f=0;d=0;b=this._width/this._segmentsW;g=this._height/this._segmentsH;v=this._depth/this._segmentsD;for(l=0;l<=this._segmentsW;l++){w=-_+l*b;for(u=0;u<=this._segmentsH;u++){r[f]=w;r[f+1]=-y+u*g;r[f+2]=-m;n[f]=0;n[f+1]=0;n[f+2]=-1;s[f]=1;s[f+1]=0;s[f+2]=0;f+=3;r[f]=w;r[f+1]=-y+u*g;r[f+2]=m;n[f]=0;n[f+1]=0;n[f+2]=1;s[f]=-1;s[f+1]=0;s[f+2]=0;f+=3;if(l&&u){o=2*((l-1)*(this._segmentsH+1)+(u-1));a=2*(l*(this._segmentsH+1)+(u-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}c+=2*(this._segmentsW+1)*(this._segmentsH+1);for(l=0;l<=this._segmentsW;l++){w=-_+l*b;for(u=0;u<=this._segmentsD;u++){r[f]=w;r[f+1]=y;r[f+2]=-m+u*v;n[f]=0;n[f+1]=1;n[f+2]=0;s[f]=1;s[f+1]=0;s[f+2]=0;f+=3;r[f]=w;r[f+1]=-y;r[f+2]=-m+u*v;n[f]=0;n[f+1]=-1;n[f+2]=0;s[f]=1;s[f+1]=0;s[f+2]=0;f+=3;if(l&&u){o=c+2*((l-1)*(this._segmentsD+1)+(u-1));a=c+2*(l*(this._segmentsD+1)+(u-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}c+=2*(this._segmentsW+1)*(this._segmentsD+1);for(l=0;l<=this._segmentsD;l++){w=m-l*v;for(u=0;u<=this._segmentsH;u++){r[f]=-_;r[f+1]=-y+u*g;r[f+2]=w;n[f]=-1;n[f+1]=0;n[f+2]=0;s[f]=0;s[f+1]=0;s[f+2]=-1;f+=3;r[f]=_;r[f+1]=-y+u*g;r[f+2]=w;n[f]=1;n[f+1]=0;n[f+2]=0;s[f]=0;s[f+1]=0;s[f+2]=1;f+=3;if(l&&u){o=c+2*((l-1)*(this._segmentsH+1)+(u-1));a=c+2*(l*(this._segmentsH+1)+(u-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}A.updateIndices(i);A.updatePositions(r);A.updateVertexNormals(n);A.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var O=t;var C=this._segmentsH*4+this._segmentsW*4+this._segmentsD*4;var D;var S;var E;if(O.indices!=null&&C==O.numSegments){D=O.startPositions;S=O.endPositions;E=O.thickness}else{D=new Array(C*3);S=new Array(C*3);E=new Array(C)}f=0;d=0;for(l=0;l0){l=-.5*this._height;for(o=0;o<=this._pSegmentsW;++o){if(this._yUp){j=1;A=0;g=-l;v=0}else{j=0;A=-1;g=0;v=l}r[u]=0;r[u+1]=g;r[u+2]=v;n[u]=0;n[u+1]=j;n[u+2]=A;s[u]=1;s[u+1]=0;s[u+2]=0;u+=3;d=o*O;h=this._topRadius*Math.cos(d);p=this._topRadius*Math.sin(d);if(this._yUp){g=-l;v=p}else{g=p;v=l}if(o==this._pSegmentsW){r[u]=r[w+3];r[u+1]=r[w+4];r[u+2]=r[w+5]}else{r[u]=h;r[u+1]=g;r[u+2]=v}n[u]=0;n[u+1]=j;n[u+2]=A;s[u]=1;s[u+1]=0;s[u+2]=0;u+=3;if(o>0){i[c++]=P;i[c++]=P+1;i[c++]=P+2;P+=2}}P+=2}if(this._bottomClosed&&this._pBottomRadius>0){l=.5*this._height;w=P*3;for(o=0;o<=this._pSegmentsW;++o){if(this._yUp){j=-1;A=0;g=-l;v=0}else{j=0;A=1;g=0;v=l}r[u]=0;r[u+1]=g;r[u+2]=v;n[u]=0;n[u+1]=j;n[u+2]=A;s[u]=1;s[u+1]=0;s[u+2]=0;u+=3;d=o*O;h=this._pBottomRadius*Math.cos(d);p=this._pBottomRadius*Math.sin(d);if(this._yUp){g=-l;v=p}else{g=p;v=l}if(o==this._pSegmentsW){r[u]=r[w+3];r[u+1]=r[w+4];r[u+2]=r[w+5]}else{r[u]=h;r[u+1]=g;r[u+2]=v}n[u]=0;n[u+1]=j;n[u+2]=A;s[u]=1;s[u+1]=0;s[u+2]=0;u+=3;if(o>0){i[c++]=P;i[c++]=P+2;i[c++]=P+1;P+=2}}P+=2}_=this._pBottomRadius-this._topRadius;y=_/this._height;m=y==0?1:this._height/_;if(this._surfaceClosed){var D;var S;var E;var T;var x,N,I,M;for(a=0;a<=this._pSegmentsH;++a){f=this._topRadius-a/this._pSegmentsH*(this._topRadius-this._pBottomRadius);l=-(this._height/2)+a/this._pSegmentsH*this._height;w=P*3;for(o=0;o<=this._pSegmentsW;++o){d=o*O;h=f*Math.cos(d);p=f*Math.sin(d);x=m*Math.cos(d);N=m*Math.sin(d);if(this._yUp){j=0;A=-x;g=-l;v=p;I=y;M=N}else{j=-x;A=0;g=p;v=l;I=N;M=y}if(o==this._pSegmentsW){r[u]=r[w];r[u+1]=r[w+1];r[u+2]=r[w+2];n[u]=x;n[u+1]=y;n[u+2]=N;s[u]=N;s[u+1]=j;s[u+2]=A}else{r[u]=h;r[u+1]=g;r[u+2]=v;n[u]=x;n[u+1]=I;n[u+2]=M;s[u]=-N;s[u+1]=j;s[u+2]=A}u+=3;if(o>0&&a>0){D=P;S=P-1;E=S-this._pSegmentsW-1;T=D-this._pSegmentsW-1;i[c++]=D;i[c++]=S;i[c++]=E;i[c++]=D;i[c++]=E;i[c++]=T}P++}}}C.updateIndices(i);C.updatePositions(r);C.updateVertexNormals(n);C.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var R=t;var L=(this._pSegmentsH+1)*this._pSegmentsW+this._pSegmentsW;var U;var V;var B;if(R.indices!=null&&L==R.numSegments){U=R.startPositions;V=R.endPositions;B=R.thickness}else{U=new Array(L*3);V=new Array(L*3);B=new Array(L)}u=0;c=0;for(a=0;a<=this._pSegmentsH;++a){f=this._topRadius-a/this._pSegmentsH*(this._topRadius-this._pBottomRadius);l=this._height*(a/this._pSegmentsH-.5);for(o=0;o<=this._pSegmentsW;++o){d=o*O;h=f*Math.cos(d);p=f*Math.sin(d);if(this._yUp){g=-l;v=p}else{g=p;v=l}if(o>0){V[u]=h;V[u+1]=g;V[u+2]=v;B[c++]=1;u+=3;U[u]=V[u-this._pSegmentsW*6];U[u+1]=V[u+1-this._pSegmentsW*6];U[u+2]=V[u+2-this._pSegmentsW*6];V[u]=h;V[u+1]=g;V[u+2]=v;B[c++]=1;u+=3}if(o.007?w/A:0;l=-b;u=P}else{_=A>.007?w/A:0;y=0;l=P;u=b}if(o==this._segmentsW){r[h]=r[d];r[h+1]=r[d+1];r[h+2]=r[d+2];n[h]=n[d]+w*j*.5;n[h+1]=n[d+1]+l*j*.5;n[h+2]=n[d+2]+u*j*.5;s[h]=A>.007?-P/A:1;s[h+1]=_;s[h+2]=y}else{r[h]=w;r[h+1]=l;r[h+2]=u;n[h]=w*j;n[h+1]=l*j;n[h+2]=u*j;s[h]=A>.007?-P/A:1;s[h+1]=_;s[h+2]=y}if(o>0&&a>0){var O=(this._segmentsW+1)*a+o;var C=(this._segmentsW+1)*a+o-1;var D=(this._segmentsW+1)*(a-1)+o-1;var S=(this._segmentsW+1)*(a-1)+o;if(a==this._segmentsH){r[h]=r[d];r[h+1]=r[d+1];r[h+2]=r[d+2];i[p++]=O;i[p++]=D;i[p++]=S}else if(a==1){i[p++]=O;i[p++]=C;i[p++]=D}else{i[p++]=O;i[p++]=C;i[p++]=D;i[p++]=O;i[p++]=D;i[p++]=S}}h+=3}}f.updateIndices(i);f.updatePositions(r);f.updateVertexNormals(n);f.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var E=t;var T=(this._segmentsH-1)*this._segmentsW*2;var x;var N;var I;if(E.indices!=null&&T==E.numSegments){x=E.startPositions;N=E.endPositions;I=E.thickness}else{x=new Array(T*3);N=new Array(T*3);I=new Array(T)}h=0;p=0;for(a=0;a<=this._segmentsH;++a){var m=Math.PI*a/this._segmentsH;var b=-this._radius*Math.cos(m);var g=this._radius*Math.sin(m);for(o=0;o<=this._segmentsW;++o){var v=2*Math.PI*o/this._segmentsW;var w=g*Math.cos(v);var P=g*Math.sin(v);if(this._yUp){l=-b;u=P}else{l=P;u=b}if(o>0&&a>0){if(a0&&a0&&a>0){T=E;x=E-1;N=x-this._segmentsR-1;I=T-this._segmentsR-1;i[m++]=T;i[m++]=x;i[m++]=N;i[m++]=T;i[m++]=N;i[m++]=I}E++}}g.updateIndices(i);g.updatePositions(r);g.updateVertexNormals(n);g.updateVertexTangents(s)}else if(e=="lineSubGeometry"){}};e.prototype._pBuildUVs=function(t,e){var i,r;var n;if(e=="triangleSubGeometry"){var s=t;if(s.uvs&&this._numVertices==s.numVertices){n=s.uvs}else{n=new Array(this._numVertices*2)}var o=0;for(r=0;r<=this._segmentsT;++r){for(i=0;i<=this._segmentsR;++i){n[o++]=i/this._segmentsR*s.scaleU;n[o++]=r/this._segmentsT*s.scaleV}}s.updateUVs(n)}else if(e=="lineSubGeometry"){}};return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitivePrefabBase":undefined}],"awayjs-display/lib/render/CSSDefaultRenderer":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Matrix3D");var s=t("awayjs-core/lib/projections/CoordinateSystem");var o=t("awayjs-display/lib/render/CSSRendererBase");var a=t("awayjs-display/lib/traverse/CSSEntityCollector");var h=function(t){r(e,t);function e(){t.call(this);this._contextMatrix=new n;this._skyboxProjection=new n;this._transform=new n;this._container=document.createElement("div");this._container.style.overflow="hidden";this._container.style.position="absolute";document.body.appendChild(this._container);this._context=document.createElement("div");this._contextStyle=this._context.style;this._contextStyle.position="absolute";this._contextStyle.transformStyle=this._contextStyle["-webkit-transform-style"]=this._contextStyle["-moz-transform-style"]=this._contextStyle["-o-transform-style"]=this._contextStyle["-ms-transform-style"]="preserve-3d";this._contextStyle.transformOrigin=this._contextStyle["-webkit-transform-origin"]=this._contextStyle["-moz-transform-origin"]=this._contextStyle["-o-transform-origin"]=this._contextStyle["-ms-transform-origin"]="0% 0%";this._container.appendChild(this._context)}e.prototype.render=function(e){t.prototype.render.call(this,e);if(this._pBackBufferInvalid)this.pUpdateBackBuffer();this._iRender(e);this._pBackBufferInvalid=false};e.prototype.pDraw=function(t){var e=document.styleSheets[document.styleSheets.length-1];for(var i=0;iu){a=1}else{a=-1}}else if(h>p){a=1}else{a=-1}if(a<0){o=t;t=t.next}else{o=e;e=e.next}if(!n){n=o;s=o}else{s.next=o;s=o}}if(t)s.next=t;else if(e)s.next=e;return n};return t}();e.exports=r},{}],"awayjs-display/lib/text/AntiAliasType":[function(t,e,i){var r=function(){function t(){}t.ADVANCED="advanced";t.NORMAL="normal";return t}();e.exports=r},{}],"awayjs-display/lib/text/GridFitType":[function(t,e,i){var r=function(){function t(){}t.NONE="none";t.PIXEL="pixel";t.SUBPIXEL="subpixel";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFieldAutoSize":[function(t,e,i){var r=function(){function t(){}t.CENTER="center";t.LEFT="left";t.NONE="none";t.RIGHT="right";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFieldType":[function(t,e,i){var r=function(){function t(){}t.DYNAMIC="dynamic";t.INPUT="input";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFormatAlign":[function(t,e,i){var r=function(){function t(){this.CENTER="center";this.JUSTIFY="justify";this.LEFT="left";this.RIGHT="right"}return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFormat":[function(t,e,i){var r=function(){function t(t,e,i,r,n,s,o,a,h,p,l,u,c){if(t===void 0){t="Times New Roman"}if(e===void 0){e=12}if(i===void 0){i=0}if(r===void 0){r=false}if(n===void 0){n=false}if(s===void 0){s=false}if(o===void 0){o=""}if(a===void 0){a=""}if(h===void 0){h="left"}if(p===void 0){p=0}if(l===void 0){l=0}if(u===void 0){u=0}if(c===void 0){c=0}this.tabStops=new Array;this.font=t;this.size=e;this.bold=r;this.italic=n;this.underline=s;this.url=o;this.target=a;this.align=h;this.leftMargin=p;this.rightMargin=l;this.indent=u;this.leading=c}return t}();e.exports=r},{}],"awayjs-display/lib/text/TextInteractionMode":[function(t,e,i){var r=function(){function t(){}t.NORMAL="normal";t.SELECTION="selection";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextLineMetrics":[function(t,e,i){var r=function(){function t(t,e,i,r,n,s){if(t===void 0){t=NaN}if(e===void 0){e=NaN}if(i===void 0){i=NaN}if(r===void 0){r=NaN}if(n===void 0){n=NaN}if(s===void 0){s=NaN}}return t}();e.exports=r},{}],"awayjs-display/lib/traverse/CSSEntityCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this)}return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/CollectorBase":[function(t,e,i){var r=t("awayjs-display/lib/pool/EntityListItemPool");var n=function(){function t(){this._numCullPlanes=0;this._pNumEntities=0;this._pNumInteractiveEntities=0;this._pEntityListItemPool=new r}Object.defineProperty(t.prototype,"camera",{get:function(){return this._pCamera},set:function(t){this._pCamera=t;this._cullPlanes=this._pCamera.frustumPlanes},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"cullPlanes",{get:function(){return this._customCullPlanes},set:function(t){this._customCullPlanes=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"entityHead",{get:function(){return this._pEntityHead},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"numEntities",{get:function(){return this._pNumEntities},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"numInteractiveEntities",{get:function(){return this._pNumInteractiveEntities},enumerable:true,configurable:true});t.prototype.clear=function(){this._pNumEntities=this._pNumInteractiveEntities=0;this._cullPlanes=this._customCullPlanes?this._customCullPlanes:this._pCamera?this._pCamera.frustumPlanes:null;this._numCullPlanes=this._cullPlanes?this._cullPlanes.length:0;this._pEntityHead=null;this._pEntityListItemPool.freeAll()};t.prototype.enterNode=function(t){var e=this.scene._iCollectionMark!=t._iCollectionMark&&t.isInFrustum(this._cullPlanes,this._numCullPlanes);t._iCollectionMark=this.scene._iCollectionMark;return e};t.prototype.applyDirectionalLight=function(t){};t.prototype.applyEntity=function(t){this._pNumEntities++;if(t._iIsMouseEnabled())this._pNumInteractiveEntities++;var e=this._pEntityListItemPool.getItem();e.entity=t;e.next=this._pEntityHead;this._pEntityHead=e};t.prototype.applyLightProbe=function(t){};t.prototype.applyPointLight=function(t){};t.prototype.applySkybox=function(t){};return t}();e.exports=n},{"awayjs-display/lib/pool/EntityListItemPool":undefined}],"awayjs-display/lib/traverse/EntityCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this);this._pNumLights=0;this._numDirectionalLights=0;this._numPointLights=0;this._numLightProbes=0;this._pLights=new Array;this._directionalLights=new Array;this._pointLights=new Array;this._lightProbes=new Array}Object.defineProperty(e.prototype,"directionalLights",{get:function(){return this._directionalLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightProbes",{get:function(){return this._lightProbes},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lights",{get:function(){return this._pLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"pointLights",{get:function(){return this._pointLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"skyBox",{get:function(){return this._pSkybox},enumerable:true,configurable:true});e.prototype.applyDirectionalLight=function(t){this._directionalLights[this._numDirectionalLights++]=t};e.prototype.applyLightProbe=function(t){this._lightProbes[this._numLightProbes++]=t};e.prototype.applyPointLight=function(t){this._pointLights[this._numPointLights++]=t};e.prototype.applySkybox=function(t){this._pSkybox=t};e.prototype.clear=function(){t.prototype.clear.call(this);this._pSkybox=null;if(this._pNumLights>0)this._pLights.length=this._pNumLights=0;if(this._numDirectionalLights>0)this._directionalLights.length=this._numDirectionalLights=0;if(this._numPointLights>0)this._pointLights.length=this._numPointLights=0;if(this._numLightProbes>0)this._lightProbes.length=this._numLightProbes=0};return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/ICollector":[function(t,e,i){},{}],"awayjs-display/lib/traverse/RaycastCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/traverse/CollectorBase");var o=function(t){r(e,t);function e(){t.call(this);this._rayPosition=new n;this._rayDirection=new n;this._iCollectionMark=0}Object.defineProperty(e.prototype,"rayPosition",{get:function(){return this._rayPosition},set:function(t){this._rayPosition=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"rayDirection",{get:function(){return this._rayDirection},set:function(t){this._rayDirection=t},enumerable:true,configurable:true});e.prototype.enterNode=function(t){return t.isIntersectingRay(this._rayPosition,this._rayDirection)};return e}(s);e.exports=o},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/ShadowCasterCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this)}e.prototype.enterNode=function(e){var i=this.scene._iCollectionMark!=e._iCollectionMark&&e.isCastingShadow();if(!i){e._iCollectionMark=this.scene._iCollectionMark;return false}return t.prototype.enterNode.call(this,e)};return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/utils/Cast":[function(t,e,i){var r=t("awayjs-core/lib/base/BitmapData");var n=t("awayjs-core/lib/utils/ByteArray");var s=t("awayjs-display/lib/errors/CastError");var o=t("awayjs-core/lib/textures/BitmapTexture");var a=t("awayjs-core/lib/textures/ImageTexture");var h=function(){function t(){}t.string=function(t){if(typeof t=="function")t=new t;if(typeof t=="string")return t;return t};t.byteArray=function(t){if(typeof t=="function")t=new t;if(t instanceof n)return t;return t};t.isHex=function(t){var e=t.length;for(var i=0;i>16&255)/255;this._colorG=(this._color>>8&255)/255;this._colorB=(this._color&255)/255;this.updateDiffuse();this.updateSpecular()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"ambient",{get:function(){return this._ambient},set:function(t){if(t<0)t=0;else if(t>1)t=1;this._ambient=t;this.updateAmbient()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"ambientColor",{get:function(){return this._ambientColor},set:function(t){this._ambientColor=t;this.updateAmbient()},enumerable:true,configurable:true});e.prototype.updateAmbient=function(){this._iAmbientR=(this._ambientColor>>16&255)/255*this._ambient;this._iAmbientG=(this._ambientColor>>8&255)/255*this._ambient;this._iAmbientB=(this._ambientColor&255)/255*this._ambient};e.prototype.iGetObjectProjectionMatrix=function(t,e,i){if(i===void 0){i=null}throw new s};Object.defineProperty(e.prototype,"assetType",{get:function(){return n.LIGHT},enumerable:true,configurable:true});e.prototype.updateSpecular=function(){this._iSpecularR=this._colorR*this._specular;this._iSpecularG=this._colorG*this._specular;this._iSpecularB=this._colorB*this._specular};e.prototype.updateDiffuse=function(){this._iDiffuseR=this._colorR*this._diffuse;this._iDiffuseG=this._colorG*this._diffuse;this._iDiffuseB=this._colorB*this._diffuse}; +Object.defineProperty(e.prototype,"shadowMapper",{get:function(){return this._shadowMapper},set:function(t){this._shadowMapper=t;this._shadowMapper.light=this},enumerable:true,configurable:true});return e}(o);e.exports=h},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/library/AssetType":undefined,"awayjs-display/lib/containers/DisplayObjectContainer":undefined,"awayjs-display/lib/events/LightEvent":undefined}],"awayjs-display/lib/base/LineScaleMode":[function(t,e,i){var r=function(){function t(){}t.HORIZONTAL="horizontal";t.NONE="none";t.NORMAL="normal";t.VERTICAL="vertical";return t}();e.exports=r},{}],"awayjs-display/lib/base/LineSubGeometry":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/base/LineSubMesh");var s=t("awayjs-display/lib/base/SubGeometryBase");var o=t("awayjs-display/lib/base/TriangleSubGeometry");var a=t("awayjs-display/lib/events/SubGeometryEvent");var h=function(t){r(e,t);function e(){t.call(this,true);this._positionsDirty=true;this._boundingPositionDirty=true;this._thicknessDirty=true;this._colorsDirty=true;this._pSubMeshClass=n}e.prototype._pUpdateStrideOffset=function(){this._pOffset[e.VERTEX_DATA]=0;var t=0;this._pOffset[e.START_POSITION_DATA]=t;t+=3;this._pOffset[e.END_POSITION_DATA]=t;t+=3;this._pOffset[e.THICKNESS_DATA]=t;t+=1;this._pOffset[e.COLOR_DATA]=t;t+=4;this._pStride[e.VERTEX_DATA]=t;this._pStride[e.START_POSITION_DATA]=t;this._pStride[e.END_POSITION_DATA]=t;this._pStride[e.THICKNESS_DATA]=t;this._pStride[e.COLOR_DATA]=t;var i=this._pNumVertices*t;if(this._pVertices==null)this._pVertices=new Array(i);else if(this._pVertices.length!=i)this._pVertices.length=i;this._pStrideOffsetDirty=false};Object.defineProperty(e.prototype,"vertices",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);if(this._thicknessDirty)this.updateThickness(this._thickness);if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._pVertices},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPositions",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);return this._startPositions},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endPositions",{get:function(){if(this._positionsDirty)this.updatePositions(this._startPositions,this._endPositions);return this._endPositions},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"thickness",{get:function(){if(this._thicknessDirty)this.updateThickness(this._thickness);return this._thickness},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startColors",{get:function(){if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._startColors},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endColors",{get:function(){if(this._colorsDirty)this.updateColors(this._startColors,this._endColors);return this._endColors},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"numSegments",{get:function(){return this._numSegments},enumerable:true,configurable:true});e.prototype.getBoundingPositions=function(){if(this._boundingPositionDirty)this._boundingPositions=this.startPositions.concat(this.endPositions);return this._boundingPositions};e.prototype.updatePositions=function(t,i){var r;var n;var s;var o;var a;var h;var p;this._startPositions=t;if(this._startPositions==null)this._startPositions=new Array;this._endPositions=i;if(this._endPositions==null)this._endPositions=new Array;this._boundingPositionDirty=true;this._numSegments=this._startPositions.length/3;this._pNumVertices=this._numSegments*4;var u=this._pNumVertices*this.getStride(e.VERTEX_DATA);if(this._pVertices==null)this._pVertices=new Array(u);else if(this._pVertices.length!=u)this._pVertices.length=u;r=0;n=0;o=this.getOffset(e.START_POSITION_DATA);a=this.getStride(e.START_POSITION_DATA);h=this._pVertices;p=new Array;while(r=0};e.prototype.disposeWithChildren=function(){this.dispose();while(this.numChildren>0)this.getChildAt(0).dispose()};e.prototype.getChildAt=function(t){var e=this._children[t];if(e==null)throw new a("Index does not exist in the child list of the caller");return e};e.prototype.getChildByName=function(t){var e=this._children.length;for(var i=0;ithis._children.length)throw new a("endIndex is out of range of the child list");for(var i=t;i>16&255)/255;this._pRenderer._iBackgroundG=(this._backgroundColor>>8&255)/255;this._pRenderer._iBackgroundB=(this._backgroundColor&255)/255;this._pRenderer._iBackgroundAlpha=this._backgroundAlpha;this._pRenderer.width=this._width;this._pRenderer.height=this._height;this._pRenderer.shareContext=this._shareContext},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"shareContext",{get:function(){return this._shareContext},set:function(t){if(this._shareContext==t)return;this._shareContext=t;if(this._pRenderer)this._pRenderer.shareContext=this._shareContext},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"backgroundColor",{get:function(){return this._backgroundColor},set:function(t){if(this._backgroundColor==t)return;this._backgroundColor=t;this._pRenderer._iBackgroundR=(t>>16&255)/255;this._pRenderer._iBackgroundG=(t>>8&255)/255;this._pRenderer._iBackgroundB=(t&255)/255},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"backgroundAlpha",{get:function(){return this._backgroundAlpha},set:function(t){if(t>1)t=1;else if(t<0)t=0;if(this._backgroundAlpha==t)return;this._pRenderer._iBackgroundAlpha=this._backgroundAlpha=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"camera",{get:function(){return this._pCamera},set:function(t){if(this._pCamera==t)return;if(this._pCamera)this._pCamera.removeEventListener(a.PROJECTION_CHANGED,this._onProjectionChangedDelegate);this._pCamera=t;if(this._pEntityCollector)this._pEntityCollector.camera=this._pCamera;if(this._pScene)this._pCamera.partition=this._pScene.partition;this._pCamera.addEventListener(a.PROJECTION_CHANGED,this._onProjectionChangedDelegate);this._scissorDirty=true;this._viewportDirty=true},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"scene",{get:function(){return this._pScene},set:function(t){if(this._pScene==t)return;if(this._pScene)this._pScene.removeEventListener(h.PARTITION_CHANGED,this._onScenePartitionChangedDelegate);this._pScene=t;this._pScene.addEventListener(h.PARTITION_CHANGED,this._onScenePartitionChangedDelegate);if(this._pCamera)this._pCamera.partition=this._pScene.partition},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"deltaTime",{get:function(){return this._deltaTime},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"width",{get:function(){return this._width},set:function(t){if(this._width==t)return;this._width=t;this._aspectRatio=this._width/this._height;this._pCamera.projection._iAspectRatio=this._aspectRatio;this._pRenderer.width=t;this._htmlElement.style.width=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"height",{get:function(){return this._height},set:function(t){if(this._height==t)return;this._height=t;this._aspectRatio=this._width/this._height;this._pCamera.projection._iAspectRatio=this._aspectRatio;this._pRenderer.height=t;this._htmlElement.style.height=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"mousePicker",{get:function(){return this._mousePicker},set:function(t){if(this._mousePicker==t)return;if(t==null)this._mousePicker=new s;else this._mousePicker=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"x",{get:function(){return this._pRenderer.x},set:function(t){if(this._pRenderer.x==t)return;this._pRenderer.x==t;this._htmlElement.style.left=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"y",{get:function(){return this._pRenderer.y},set:function(t){if(this._pRenderer.y==t)return;this._pRenderer.y==t;this._htmlElement.style.top=t+"px"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"visible",{get:function(){return this._htmlElement.style.visibility=="visible"},set:function(t){this._htmlElement.style.visibility=t?"visible":"hidden"},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"renderedFacesCount",{get:function(){return 0},enumerable:true,configurable:true});t.prototype.render=function(){this.pUpdateTime();this._pCamera.projection._iAspectRatio=this._aspectRatio;if(this._scissorDirty){this._scissorDirty=false;this._pCamera.projection._iUpdateScissorRect(this._pRenderer.scissorRect.x,this._pRenderer.scissorRect.y,this._pRenderer.scissorRect.width,this._pRenderer.scissorRect.height)}if(this._viewportDirty){this._viewportDirty=false;this._pCamera.projection._iUpdateViewport(this._pRenderer.viewPort.x,this._pRenderer.viewPort.y,this._pRenderer.viewPort.width,this._pRenderer.viewPort.height)}if(!this._shareContext){if(this.forceMouseMove&&this._htmlElement==this._mouseManager._iActiveDiv&&!this._mouseManager._iUpdateDirty)this._mouseManager._iCollidingObject=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this);this._mouseManager.fireMouseEvents(this.forceMouseMove)}this._pEntityCollector.clear();this._pScene.traversePartitions(this._pEntityCollector);this._pRenderer.render(this._pEntityCollector)};t.prototype.pUpdateTime=function(){var t=r();if(this._time==0)this._time=t;this._deltaTime=t-this._time;this._time=t};t.prototype.dispose=function(){this._pRenderer.dispose();this._mouseManager.unregisterView(this);this._mouseManager=null;this._pRenderer=null;this._pEntityCollector=null};Object.defineProperty(t.prototype,"iEntityCollector",{get:function(){return this._pEntityCollector},enumerable:true,configurable:true});t.prototype.onProjectionChanged=function(t){this._scissorDirty=true;this._viewportDirty=true};t.prototype.onViewportUpdated=function(t){this._viewportDirty=true};t.prototype.onScissorUpdated=function(t){this._scissorDirty=true};t.prototype.project=function(t){var e=this._pCamera.project(t);e.x=e.x*this._pRenderer.viewPort.width/2+this._width*this._pCamera.projection.originX;e.y=e.y*this._pRenderer.viewPort.height/2+this._height*this._pCamera.projection.originY;return e};t.prototype.unproject=function(t,e,i){return this._pCamera.unproject(2*(t-this._width*this._pCamera.projection.originX)/this._pRenderer.viewPort.width,2*(e-this._height*this._pCamera.projection.originY)/this._pRenderer.viewPort.height,i)};t.prototype.getRay=function(t,e,i){return this._pCamera.getRay((t*2-this._width)/this._width,(e*2-this._height)/this._height,i)};t.prototype.updateCollider=function(){if(!this._shareContext){if(this._htmlElement==this._mouseManager._iActiveDiv)this._mouseManager._iCollidingObject=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this)}else{var t=this.mousePicker.getViewCollision(this._pMouseX,this._pMouseY,this);if(this.layeredView||this._mouseManager._iCollidingObject==null||t.rayEntryDistance180)this._iCurrentPanAngle+=360}if(t){this._iCurrentTiltAngle+=(this._tiltAngle-this._iCurrentTiltAngle)/(this.steps+1);this._iCurrentPanAngle+=(this._panAngle-this._iCurrentPanAngle)/(this.steps+1)}else{this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}if(Math.abs(this.tiltAngle-this._iCurrentTiltAngle)<.01&&Math.abs(this._panAngle-this._iCurrentPanAngle)<.01){this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}}this.targetObject.rotationX=this._iCurrentTiltAngle;this.targetObject.rotationY=this._iCurrentPanAngle;if(this._walkIncrement){if(this.fly){this.targetObject.transform.moveForward(this._walkIncrement)}else{this.targetObject.x+=this._walkIncrement*Math.sin(this._panAngle*n.DEGREES_TO_RADIANS);this.targetObject.z+=this._walkIncrement*Math.cos(this._panAngle*n.DEGREES_TO_RADIANS)}this._walkIncrement=0}if(this._strafeIncrement){this.targetObject.transform.moveRight(this._strafeIncrement);this._strafeIncrement=0}};e.prototype.incrementWalk=function(t){if(t==0)return;this._walkIncrement+=t;this.pNotifyUpdate()};e.prototype.incrementStrafe=function(t){if(t==0)return;this._strafeIncrement+=t;this.pNotifyUpdate()};return e}(s);e.exports=o},{"awayjs-core/lib/geom/MathConsts":undefined,"awayjs-display/lib/controllers/ControllerBase":undefined}],"awayjs-display/lib/controllers/FollowController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/controllers/HoverController");var s=function(t){r(e,t);function e(e,i,r,n){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=45}if(n===void 0){n=700}t.call(this,e,i,0,r,n)}e.prototype.update=function(e){if(e===void 0){e=true}e=e;if(!this.lookAtObject)return;this.panAngle=this._pLookAtObject.rotationY-180;t.prototype.update.call(this)};return e}(n);e.exports=s},{"awayjs-display/lib/controllers/HoverController":undefined}],"awayjs-display/lib/controllers/HoverController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/MathConsts");var s=t("awayjs-core/lib/geom/Vector3D");var o=t("awayjs-display/lib/controllers/LookAtController");var a=function(t){r(e,t);function e(e,i,r,n,o,a,h,p,u,l,c,f){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=0}if(n===void 0){n=90}if(o===void 0){o=1e3}if(a===void 0){a=-90}if(h===void 0){h=90}if(p===void 0){p=null}if(u===void 0){u=null}if(l===void 0){l=8}if(c===void 0){c=2}if(f===void 0){f=false}t.call(this,e,i);this._iCurrentPanAngle=0;this._iCurrentTiltAngle=90;this._panAngle=0;this._tiltAngle=90;this._distance=1e3;this._minPanAngle=-Infinity;this._maxPanAngle=Infinity;this._minTiltAngle=-90;this._maxTiltAngle=90;this._steps=8;this._yFactor=2;this._wrapPanAngle=false;this._upAxis=new s;this.distance=o;this.panAngle=r;this.tiltAngle=n;this.minPanAngle=p!=null?p:-Infinity;this.maxPanAngle=u!=null?u:Infinity;this.minTiltAngle=a;this.maxTiltAngle=h;this.steps=l;this.yFactor=c;this.wrapPanAngle=f;this._iCurrentPanAngle=this._panAngle;this._iCurrentTiltAngle=this._tiltAngle}Object.defineProperty(e.prototype,"steps",{get:function(){return this._steps},set:function(t){t=t<1?1:t;if(this._steps==t)return;this._steps=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"panAngle",{get:function(){return this._panAngle},set:function(t){t=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,t));if(this._panAngle==t)return;this._panAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"tiltAngle",{get:function(){return this._tiltAngle},set:function(t){t=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,t));if(this._tiltAngle==t)return;this._tiltAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"distance",{get:function(){return this._distance},set:function(t){if(this._distance==t)return;this._distance=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"minPanAngle",{get:function(){return this._minPanAngle},set:function(t){if(this._minPanAngle==t)return;this._minPanAngle=t;this.panAngle=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,this._panAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"maxPanAngle",{get:function(){return this._maxPanAngle},set:function(t){if(this._maxPanAngle==t)return;this._maxPanAngle=t;this.panAngle=Math.max(this._minPanAngle,Math.min(this._maxPanAngle,this._panAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"minTiltAngle",{get:function(){return this._minTiltAngle},set:function(t){if(this._minTiltAngle==t)return;this._minTiltAngle=t;this.tiltAngle=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,this._tiltAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"maxTiltAngle",{get:function(){return this._maxTiltAngle},set:function(t){if(this._maxTiltAngle==t)return;this._maxTiltAngle=t;this.tiltAngle=Math.max(this._minTiltAngle,Math.min(this._maxTiltAngle,this._tiltAngle))},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"yFactor",{get:function(){return this._yFactor},set:function(t){if(this._yFactor==t)return;this._yFactor=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"wrapPanAngle",{get:function(){return this._wrapPanAngle},set:function(t){if(this._wrapPanAngle==t)return;this._wrapPanAngle=t;this.pNotifyUpdate()},enumerable:true,configurable:true});e.prototype.update=function(t){if(t===void 0){t=true}if(this._tiltAngle!=this._iCurrentTiltAngle||this._panAngle!=this._iCurrentPanAngle){this.pNotifyUpdate();if(this._wrapPanAngle){if(this._panAngle<0){this._iCurrentPanAngle+=this._panAngle%360+360-this._panAngle;this._panAngle=this._panAngle%360+360}else{this._iCurrentPanAngle+=this._panAngle%360-this._panAngle;this._panAngle=this._panAngle%360}while(this._panAngle-this._iCurrentPanAngle<-180)this._iCurrentPanAngle-=360;while(this._panAngle-this._iCurrentPanAngle>180)this._iCurrentPanAngle+=360}if(t){this._iCurrentTiltAngle+=(this._tiltAngle-this._iCurrentTiltAngle)/(this.steps+1);this._iCurrentPanAngle+=(this._panAngle-this._iCurrentPanAngle)/(this.steps+1)}else{this._iCurrentPanAngle=this._panAngle;this._iCurrentTiltAngle=this._tiltAngle}if(Math.abs(this.tiltAngle-this._iCurrentTiltAngle)<.01&&Math.abs(this._panAngle-this._iCurrentPanAngle)<.01){this._iCurrentTiltAngle=this._tiltAngle;this._iCurrentPanAngle=this._panAngle}}var e=this.lookAtObject?this.lookAtObject.transform.position:this.lookAtPosition?this.lookAtPosition:this._pOrigin;this.targetObject.x=e.x+this.distance*Math.sin(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this.targetObject.y=e.y+this.distance*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS)*this.yFactor;this.targetObject.z=e.z+this.distance*Math.cos(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.x=-Math.sin(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.y=Math.cos(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);this._upAxis.z=-Math.cos(this._iCurrentPanAngle*n.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*n.DEGREES_TO_RADIANS);if(this._pTargetObject){if(this._pLookAtPosition)this._pTargetObject.lookAt(this._pLookAtPosition,this._upAxis);else if(this._pLookAtObject)this._pTargetObject.lookAt(this._pLookAtObject.scene?this._pLookAtObject.scenePosition:this._pLookAtObject.transform.position,this._upAxis)}};return e}(o);e.exports=a},{"awayjs-core/lib/geom/MathConsts":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/LookAtController":undefined}],"awayjs-display/lib/controllers/LookAtController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/controllers/ControllerBase");var o=t("awayjs-display/lib/events/DisplayObjectEvent");var a=function(t){r(e,t);function e(e,i){var r=this;if(e===void 0){e=null}if(i===void 0){i=null}t.call(this,e);this._pOrigin=new n(0,0,0);this._onLookAtObjectChangedDelegate=function(t){return r.onLookAtObjectChanged(t)};if(i)this.lookAtObject=i;else this.lookAtPosition=new n}Object.defineProperty(e.prototype,"lookAtPosition",{get:function(){return this._pLookAtPosition},set:function(t){if(this._pLookAtObject){this._pLookAtObject.removeEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this._pLookAtObject=null}this._pLookAtPosition=t;this.pNotifyUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lookAtObject",{get:function(){return this._pLookAtObject},set:function(t){if(this._pLookAtPosition)this._pLookAtPosition=null;if(this._pLookAtObject==t)return;if(this._pLookAtObject)this._pLookAtObject.removeEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this._pLookAtObject=t;if(this._pLookAtObject)this._pLookAtObject.addEventListener(o.SCENETRANSFORM_CHANGED,this._onLookAtObjectChangedDelegate);this.pNotifyUpdate()},enumerable:true,configurable:true});e.prototype.update=function(t){if(t===void 0){t=true}if(this._pTargetObject){if(this._pLookAtPosition)this._pTargetObject.lookAt(this._pLookAtPosition);else if(this._pLookAtObject)this._pTargetObject.lookAt(this._pLookAtObject.scene?this._pLookAtObject.scenePosition:this._pLookAtObject.transform.position)}};e.prototype.onLookAtObjectChanged=function(t){this.pNotifyUpdate()};return e}(s);e.exports=a},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/ControllerBase":undefined,"awayjs-display/lib/events/DisplayObjectEvent":undefined}],"awayjs-display/lib/controllers/SpringController":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/controllers/LookAtController");var o=function(t){r(e,t);function e(e,i,r,s,o){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=1}if(s===void 0){s=40}if(o===void 0){o=4}t.call(this,e,i);this.positionOffset=new n(0,500,-1e3);this.stiffness=r;this.damping=o;this.mass=s;this._velocity=new n;this._dv=new n;this._stretch=new n;this._force=new n;this._acceleration=new n;this._desiredPosition=new n}e.prototype.update=function(e){if(e===void 0){e=true}var i;if(!this._pLookAtObject||!this._pTargetObject)return;i=this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);this._desiredPosition.x=this._pLookAtObject.x+i.x;this._desiredPosition.y=this._pLookAtObject.y+i.y;this._desiredPosition.z=this._pLookAtObject.z+i.z;this._stretch=this._pTargetObject.transform.position.add(this._desiredPosition);this._stretch.scaleBy(-this.stiffness);this._dv.copyFrom(this._velocity);this._dv.scaleBy(this.damping);this._force.x=this._stretch.x-this._dv.x;this._force.y=this._stretch.y-this._dv.y;this._force.z=this._stretch.z-this._dv.z;this._acceleration.copyFrom(this._force);this._acceleration.scaleBy(1/this.mass);this._velocity.incrementBy(this._acceleration);this._pTargetObject.transform.position=this._pTargetObject.transform.position.add(this._velocity);t.prototype.update.call(this)};return e}(s);e.exports=o},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/controllers/LookAtController":undefined}],"awayjs-display/lib/display/ContextMode":[function(t,e,i){var r=function(){function t(){}t.AUTO="auto";t.WEBGL="webgl";t.FLASH="flash";t.NATIVE="native";return t}();e.exports=r},{}],"awayjs-display/lib/display/IContext":[function(t,e,i){},{}],"awayjs-display/lib/entities/Billboard":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/library/AssetType");var s=t("awayjs-display/lib/base/DisplayObject");var o=t("awayjs-display/lib/partition/EntityNode");var a=t("awayjs-display/lib/events/MaterialEvent");var h=function(t){r(e,t);function e(e,i,r){var n=this;if(i===void 0){i="auto"}if(r===void 0){r=false}t.call(this);this._pIsEntity=true;this.onSizeChangedDelegate=function(t){return n.onSizeChanged(t)};this.material=e;this._billboardWidth=e.width;this._billboardHeight=e.height}Object.defineProperty(e.prototype,"animator",{get:function(){return this._animator},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return n.BILLBOARD},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"billboardHeight",{get:function(){return this._billboardHeight},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"billboardWidth",{get:function(){return this._billboardWidth},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"material",{get:function(){return this._material},set:function(t){if(t==this._material)return;if(this._material){this._material.iRemoveOwner(this);this._material.removeEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}this._material=t;if(this._material){this._material.iAddOwner(this);this._material.addEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"uvTransform",{get:function(){return this._uvTransform},set:function(t){this._uvTransform=t},enumerable:true,configurable:true});e.prototype.pCreateEntityPartitionNode=function(){return new o(this)};e.prototype.pUpdateBounds=function(){this._pBounds.fromExtremes(0,0,0,this._billboardWidth,this._billboardHeight,0);t.prototype.pUpdateBounds.call(this)};e.prototype._iTestCollision=function(t,e){return this._pPickingCollider.testBillboardCollision(this,this._pPickingCollisionVO,t)};e.prototype.onSizeChanged=function(t){this._billboardWidth=this._material.width;this._billboardHeight=this._material.height;this._pBoundsInvalid=true;var e=this._pRenderables.length;for(var i=0;ih)h=f;f=this._projAABBPoints[d++];if(fu)u=f;f=this._projAABBPoints[d++];if(fc)c=f}var _=1/(h-a);var y=1/(u-p);var m=1/(c-l);r[0]=2*_;r[5]=2*y;r[10]=m;r[12]=-(h+a)*_;r[13]=-(u+p)*y;r[14]=-l*m;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[11]=0;r[15]=1;if(!i)i=new s;i.copyRawDataFrom(r);i.prepend(o);return i};e.prototype._iCollectRenderables=function(t){};return e}(a);e.exports=u},{"awayjs-core/lib/bounds/NullBounds":undefined,"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined,"awayjs-display/lib/partition/DirectionalLightNode":undefined}],"awayjs-display/lib/entities/IEntity":[function(t,e,i){},{}],"awayjs-display/lib/entities/LightProbe":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/bounds/NullBounds");var s=t("awayjs-core/lib/errors/Error");var o=t("awayjs-display/lib/base/LightBase");var a=t("awayjs-display/lib/partition/LightProbeNode");var h=function(t){r(e,t);function e(e,i){if(i===void 0){i=null}t.call(this);this._pIsEntity=true;this._diffuseMap=e;this._specularMap=i}Object.defineProperty(e.prototype,"diffuseMap",{get:function(){return this._diffuseMap},set:function(t){this._diffuseMap=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"specularMap",{get:function(){return this._specularMap},set:function(t){this._specularMap=t},enumerable:true,configurable:true});e.prototype.pCreateEntityPartitionNode=function(){return new a(this)};e.prototype.pUpdateBounds=function(){this._pBoundsInvalid=false};e.prototype.pCreateDefaultBoundingVolume=function(){return new n};e.prototype.iGetObjectProjectionMatrix=function(t,e,i){if(i===void 0){i=null}throw new s("Object projection matrices are not supported for LightProbe objects!")};e.prototype._iCollectRenderables=function(t){};return e}(o);e.exports=h},{"awayjs-core/lib/bounds/NullBounds":undefined,"awayjs-core/lib/errors/Error":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/partition/LightProbeNode":undefined}],"awayjs-display/lib/entities/LineSegment":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/library/AssetType");var s=t("awayjs-display/lib/base/DisplayObject");var o=t("awayjs-display/lib/partition/EntityNode");var a=t("awayjs-display/lib/events/MaterialEvent");var h=function(t){r(e,t);function e(e,i,r,n){var s=this;if(n===void 0){n=1}t.call(this);this._pIsEntity=true;this.onSizeChangedDelegate=function(t){return s.onSizeChanged(t)};this.material=e;this._startPosition=i;this._endPosition=r;this._halfThickness=n*.5}Object.defineProperty(e.prototype,"animator",{get:function(){return this._animator},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"assetType",{get:function(){return n.LINE_SEGMENT},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPostion",{get:function(){return this._startPosition},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"startPosition",{set:function(t){if(this._startPosition==t)return;this._startPosition=t;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"endPosition",{get:function(){return this._endPosition},set:function(t){if(this._endPosition==t)return;this._endPosition=t;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"material",{get:function(){return this._material},set:function(t){if(t==this._material)return;if(this._material){this._material.iRemoveOwner(this);this._material.removeEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}this._material=t;if(this._material){this._material.iAddOwner(this);this._material.addEventListener(a.SIZE_CHANGED,this.onSizeChangedDelegate)}},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"thickness",{get:function(){return this._halfThickness*2},set:function(t){if(this._halfThickness==t)return;this._halfThickness=t*.5;this.notifyRenderableUpdate()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"uvTransform",{get:function(){return this._uvTransform},set:function(t){this._uvTransform=t},enumerable:true,configurable:true});e.prototype.dispose=function(){this._startPosition=null;this._endPosition=null};e.prototype.pCreateEntityPartitionNode=function(){return new o(this)};e.prototype.pUpdateBounds=function(){this._pBounds.fromExtremes(this._startPosition.x,this._startPosition.y,this._startPosition.z,this._endPosition.x,this._endPosition.y,this._endPosition.z);t.prototype.pUpdateBounds.call(this)};e.prototype.onSizeChanged=function(t){this.notifyRenderableUpdate()};e.prototype.notifyRenderableUpdate=function(){var t=this._pRenderables.length;for(var e=0;e0){e=0;s=n[0];o=s.getBoundingPositions();h=l=o[e];p=c=o[e+1];u=f=o[e+2];i=a;while(i--){s=n[i];o=s.getBoundingPositions();e=o.length;while(e--){r=o[e];if(rl)l=r;r=o[e+1];if(rc)c=r;r=o[e+2];if(rf)f=r}}this._pBounds.fromExtremes(h,p,u,l,c,f)}else{this._pBounds.fromExtremes(0,0,0,0,0,0)}t.prototype.pUpdateBounds.call(this)};e.prototype.onGeometryBoundsInvalid=function(t){this.pInvalidateBounds()};e.prototype.onSubGeometryAdded=function(t){this.addSubMesh(t.subGeometry)};e.prototype.onSubGeometryRemoved=function(t){var e;var i=t.subGeometry;var r=this._subMeshes.length;var n;for(n=0;nthis._pFallOff){this._pFallOff=this._pRadius;this.pInvalidateBounds()}this._pFallOffFactor=1/(this._pFallOff*this._pFallOff-this._pRadius*this._pRadius)},enumerable:true,configurable:true});e.prototype.iFallOffFactor=function(){return this._pFallOffFactor};Object.defineProperty(e.prototype,"fallOff",{get:function(){return this._pFallOff},set:function(t){this._pFallOff=t;if(this._pFallOff<0)this._pFallOff=0;if(this._pFallOffc?l:c);var d;var _;var y=a.rawData[14];d=y-f;_=y+f;r[5]=r[0]=d/f;r[10]=_/(_-d);r[11]=1;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[12]=r[13]=r[15]=0;r[14]=-d*r[10];if(!i)i=new s;i.copyRawDataFrom(r);i.prepend(a);return i};e.prototype._iCollectRenderables=function(t){};return e}(a);e.exports=u},{"awayjs-core/lib/bounds/BoundingSphere":undefined,"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/base/LightBase":undefined,"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper":undefined,"awayjs-display/lib/partition/PointLightNode":undefined}],"awayjs-display/lib/entities/Shape":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/base/DisplayObject");var s=function(t){r(e,t);function e(){t.call(this)}Object.defineProperty(e.prototype,"graphics",{get:function(){return this._graphics},enumerable:true,configurable:true});return e}(n);e.exports=s},{"awayjs-display/lib/base/DisplayObject":undefined}],"awayjs-display/lib/entities/Skybox":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/bounds/NullBounds");var s=t("awayjs-core/lib/library/AssetType");var o=t("awayjs-display/lib/base/DisplayObject");var a=t("awayjs-display/lib/base/BlendMode");var h=t("awayjs-display/lib/partition/SkyboxNode");var p=function(t){r(e,t);function e(e){if(e===void 0){e=null}t.call(this);this._pAlphaThreshold=0;this._pBlendMode=a.NORMAL;this._renderObjects=new Array;this._renderables=new Array;this._mipmap=false;this._smooth=true;this._pIsEntity=true;this._owners=new Array(this);this.cubeMap=e}Object.defineProperty(e.prototype,"alphaThreshold",{get:function(){return this._pAlphaThreshold},set:function(t){if(t<0)t=0;else if(t>1)t=1;if(this._pAlphaThreshold==t)return;this._pAlphaThreshold=t;this._pIinvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"mipmap",{get:function(){return this._mipmap},set:function(t){if(this._mipmap==t)return;this._mipmap=t;this._pIinvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"smooth",{get:function(){return this._smooth},set:function(t){if(this._smooth==t)return;this._smooth=t;this._pIinvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightPicker",{get:function(){return this._pLightPicker},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"animationSet",{get:function(){return this._animationSet},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"blendMode",{get:function(){return this._pBlendMode},set:function(t){if(this._pBlendMode==t)return;this._pBlendMode=t;this._pInvalidateRenderObject()},enumerable:true,configurable:true});e.prototype._pInvalidateRenderObject=function(){var t=this._renderObjects.length;for(var e=0;ethis._duration){if(this._playMode==0){this._time=this._duration;this.stop()}else if(this._playMode==1){this._time-=this._duration}}while(this._time<0){if(this._playMode==0){this._time=0;this.stop()}else if(this._playMode==1){this._time+=this._duration}}var r=0;var s;var o=false;while(r=s.startTime&&this._time<=s.endTime){o=true;r=this._frames.length}else{s.makeDirty();if(this._speed<0){this._currentFrame--;if(this._currentFrame<0){this._currentFrame=this._frames.length-1}}else{this._currentFrame++;if(this._currentFrame>=this._frames.length){this._currentFrame=0}}}r++}if(o){if(s.isDirty){var a=1;if(this._speed<0){a=2}a=0;for(i=0;i=0){this._time=e*(1e3/this._fps);this._isplaying=true;this.update(0,true)}};e.prototype.gotoAndStopLabel=function(t){var e=-1;for(var i=0;i=0){this._time=e*(1e3/this._fps);this.update(0,true);this._isplaying=false}};e.prototype.gotoAndPlayTime=function(t){this._time=t;this._isplaying=true;this.update(0,true)};e.prototype.gotoAndStopTime=function(t){this._time=t;this.update(0,true);this._isplaying=false};e.prototype.addTimeLineObject=function(t,e){if(e===void 0){e=true}if(e){this.addChild(t.asset)}t.deactivate();this._timeLineObjs.push(t)};e.prototype.getTimeLineObjectByID=function(t){for(var e=0;ethis._endTime*e){return}if(this._type==0){return this._startValue+(t-this._startTime)*(this._duration*e)*(this._endValue-this._startValue)}if(this._type==1){}if(this._type==2){}if(this._type==3){}return};return t}();e.exports=r},{}],"awayjs-display/lib/entities/timelinedata/TimeLineFrame":[function(t,e,i){var r=function(){function t(){this._isDirty=true;this._script="";this._duration=1;this._frameCommands=new Array;this._frameCommandsReverse=new Array;this._frameCommandsInit=new Array;this._framelabels=new Array;this._labelTypes=new Array}t.prototype.addCommand=function(t){this._frameCommands.push(t)};t.prototype.addCommandReverse=function(t){this._frameCommandsReverse.push(t)};t.prototype.addCommandInit=function(t){this._frameCommandsInit.push(t)};t.prototype.addLabel=function(t,e){this._framelabels.push(t);this._labelTypes.push(e)};Object.defineProperty(t.prototype,"framelabels",{get:function(){return this._framelabels},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"labelTypes",{get:function(){return this._labelTypes},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"script",{get:function(){return this._script},enumerable:true,configurable:true});t.prototype.addToScript=function(t){this._script+=t};Object.defineProperty(t.prototype,"isDirty",{get:function(){return this._isDirty},enumerable:true,configurable:true});t.prototype.makeDirty=function(){this._isDirty=true};Object.defineProperty(t.prototype,"startTime",{get:function(){return this._startTime},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"duration",{get:function(){return this._duration},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"endTime",{get:function(){return this._endTime},enumerable:true,configurable:true});t.prototype.setFrameTime=function(t,e){this._startTime=t;this._duration=e;this._endTime=t+e};t.prototype.executeCommands=function(t,e,i){if(t==0){for(var r=0;ri.right||ni.bottom){e._pMouseX=null;e._pMouseY=null}else{e._pMouseX=r+i.left;e._pMouseY=n+i.top;e.updateCollider();if(e.layeredView&&this._iCollidingObject)break}}this._iUpdateDirty=true};return t}();e.exports=s},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/events/MouseEvent":undefined}],"awayjs-display/lib/materials/BasicMaterial":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/textures/Texture2DBase");var s=t("awayjs-display/lib/materials/MaterialBase");var o=function(t){r(e,t);function e(e,i,r,s){if(e===void 0){e=null}if(i===void 0){i=null}if(r===void 0){r=false}if(s===void 0){s=false}t.call(this);if(e instanceof n){this.texture=e;this.smooth=i==null?true:false;this.repeat=r;this.mipmap=s}else{this.color=e?Number(e):13421772;this.alpha=i==null?1:Number(i)}}e.prototype.getRenderObject=function(t){return t.getMaterialRenderObject(this)};return e}(s);e.exports=o},{"awayjs-core/lib/textures/Texture2DBase":undefined,"awayjs-display/lib/materials/MaterialBase":undefined}],"awayjs-display/lib/materials/CSSMaterialBase":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/materials/MaterialBase");var s=t("awayjs-core/lib/textures/ImageTexture");var o=function(t){r(e,t);function e(e,i,r){if(e===void 0){e=null}if(i===void 0){i=true}if(r===void 0){r=false}t.call(this);this._iMaterialId=Number(this.id);this.texture=e;this.smooth=i;this.repeat=r}Object.defineProperty(e.prototype,"imageElement",{get:function(){return this._imageElement},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"imageStyle",{get:function(){return this._imageStyle},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"texture",{get:function(){return this._pTexture},set:function(t){if(this._pTexture==t)return;this._pTexture=t;if(t instanceof s){this._imageElement=t.htmlImageElement;var e=document.createElement("style");e.type="text/css";document.getElementsByTagName("head")[0].appendChild(e);var i=document.styleSheets[document.styleSheets.length-1];i.insertRule(".material"+this.id+"{ }",0);var r=i.cssRules[0].style;r.backgroundImage="url("+this._imageElement.src+")";r.backgroundSize="100% 100%";r.position="absolute";r.width=this._imageElement.width+"px";r.height=this._imageElement.height+"px";r.transformOrigin=r["-webkit-transform-origin"]=r["-moz-transform-origin"]=r["-o-transform-origin"]=r["-ms-transform-origin"]="0% 0%";this._pHeight=this._imageElement.height;this._pWidth=this._imageElement.width;this._pNotifySizeChanged()}},enumerable:true,configurable:true});return e}(n);e.exports=o},{"awayjs-core/lib/textures/ImageTexture":undefined,"awayjs-display/lib/materials/MaterialBase":undefined}],"awayjs-display/lib/materials/LightSources":[function(t,e,i){var r=function(){function t(){}t.LIGHTS=1;t.PROBES=2;t.ALL=3;return t}();e.exports=r},{}],"awayjs-display/lib/materials/MaterialBase":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/ColorTransform");var s=t("awayjs-core/lib/errors/AbstractMethodError");var o=t("awayjs-core/lib/events/Event");var a=t("awayjs-core/lib/library/AssetType");var h=t("awayjs-core/lib/library/NamedAssetBase");var p=t("awayjs-display/lib/base/BlendMode");var u=t("awayjs-display/lib/events/MaterialEvent");var l=t("awayjs-display/lib/events/RenderableOwnerEvent");var c=function(t){r(e,t);function e(){var e=this;t.call(this);this._alphaBlending=false;this._alpha=1;this._renderObjects=new Array;this._pAlphaThreshold=0;this._pAnimateUVs=false;this._enableLightFallOff=true;this._specularLightSources=1;this._diffuseLightSources=3;this._iMaterialId=0;this._iBaseScreenPassIndex=0;this._bothSides=false;this._pBlendMode=p.NORMAL;this._mipmap=false;this._smooth=true;this._repeat=false;this._color=16777215;this._pHeight=1;this._pWidth=1;this._iMaterialId=Number(this.id);this._owners=new Array;this._onLightChangeDelegate=function(t){return e.onLightsChange(t)};this.alphaPremultiplied=false}Object.defineProperty(e.prototype,"assetType",{get:function(){return a.MATERIAL},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"alpha",{get:function(){return this._alpha},set:function(t){if(t>1)t=1;else if(t<0)t=0;if(this._alpha==t)return;this._alpha=t;if(this._colorTransform==null)this._colorTransform=new n;this._colorTransform.alphaMultiplier=t;this._pInvalidateRenderObject()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"colorTransform",{get:function(){return this._colorTransform},set:function(t){this._colorTransform=t;this._pInvalidateRenderObject()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"alphaBlending",{get:function(){return this._alphaBlending},set:function(t){if(this._alphaBlending==t)return;this._alphaBlending=t;this._pInvalidateRenderObject()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"height",{get:function(){return this._pHeight},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"animationSet",{get:function(){return this._animationSet},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightPicker",{get:function(){return this._pLightPicker},set:function(t){if(this._pLightPicker==t)return;if(this._pLightPicker)this._pLightPicker.removeEventListener(o.CHANGE,this._onLightChangeDelegate);this._pLightPicker=t;if(this._pLightPicker)this._pLightPicker.addEventListener(o.CHANGE,this._onLightChangeDelegate);this._pInvalidateRenderObject()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"mipmap",{get:function(){return this._mipmap},set:function(t){if(this._mipmap==t)return;this._mipmap=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"smooth",{get:function(){return this._smooth},set:function(t){if(this._smooth==t)return;this._smooth=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"repeat",{get:function(){return this._repeat},set:function(t){if(this._repeat==t)return;this._repeat=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"color",{get:function(){return this._color},set:function(t){if(this._color==t)return;this._color=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"texture",{get:function(){return this._pTexture},set:function(t){if(this._pTexture==t)return;this._pTexture=t;this._pInvalidatePasses();this._pHeight=this._pTexture.height;this._pWidth=this._pTexture.width;this._pNotifySizeChanged()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"animateUVs",{get:function(){return this._pAnimateUVs},set:function(t){if(this._pAnimateUVs==t)return;this._pAnimateUVs=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"enableLightFallOff",{get:function(){return this._enableLightFallOff},set:function(t){if(this._enableLightFallOff==t)return;this._enableLightFallOff=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"diffuseLightSources",{get:function(){return this._diffuseLightSources},set:function(t){if(this._diffuseLightSources==t)return;this._diffuseLightSources=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"specularLightSources",{get:function(){return this._specularLightSources},set:function(t){if(this._specularLightSources==t)return;this._specularLightSources=t;this._pInvalidatePasses()},enumerable:true,configurable:true});e.prototype.dispose=function(){var t;var e;e=this._renderObjects.length;for(t=0;t1)t=1;if(this._pAlphaThreshold==t)return;this._pAlphaThreshold=t;this._pInvalidatePasses()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"width",{get:function(){return this._pWidth},enumerable:true,configurable:true});e.prototype.iAddOwner=function(t){this._owners.push(t);var e;var i=t.animator;if(i)e=i.animationSet;if(t.animator){if(this._animationSet&&e!=this._animationSet){throw new Error("A Material instance cannot be shared across material owners with different animation sets")}else{if(this._animationSet!=e){this._animationSet=e;this.invalidateAnimation()}}}t.dispatchEvent(new l(l.RENDER_OBJECT_OWNER_UPDATED,this))};e.prototype.iRemoveOwner=function(t){this._owners.splice(this._owners.indexOf(t),1);if(this._owners.length==0){this._animationSet=null;this.invalidateAnimation()}t.dispatchEvent(new l(l.RENDER_OBJECT_OWNER_UPDATED,this))};Object.defineProperty(e.prototype,"iOwners",{get:function(){return this._owners},enumerable:true,configurable:true});e.prototype._pInvalidatePasses=function(){var t=this._renderObjects.length;for(var e=0;e1e-5?1/p:5e7;this._pLightProbeWeights[l]=p;u+=p}u=1/u;for(l=0;l4)throw new Error("numCascades must be an integer between 1 and 4");this._numCascades=e;this._changeDispatcher=new a(this);this.init()}e.prototype.getSplitRatio=function(t){return this._splitRatios[t]};e.prototype.setSplitRatio=function(t,e){if(e<0)e=0;else if(e>1)e=1;if(t>=this._numCascades)throw new Error("index must be smaller than the number of cascades!");this._splitRatios[t]=e};e.prototype.getDepthProjections=function(t){return this._depthCameras[t].viewProjection};e.prototype.init=function(){this._splitRatios=new Array(this._numCascades);this._nearPlaneDistances=new Array(this._numCascades);var t=1;for(var e=this._numCascades-1;e>=0;--e){this._splitRatios[e]=t;t*=.4}this._texOffsetsX=Array(-1,1,-1,1);this._texOffsetsY=Array(1,1,-1,-1);this._pScissorRects=new Array(4);this._depthLenses=new Array;this._depthCameras=new Array;for(e=0;e4)throw new Error("numCascades must be an integer between 1 and 4");this._numCascades=t;this.invalidateScissorRects();this.init();this.dispatchEvent(new o(o.CHANGE))},enumerable:true,configurable:true});e.prototype.pDrawDepthMap=function(t,e,i){if(this._pScissorRectsInvalid)this.updateScissorRects();this._pCasterCollector.cullPlanes=this._pCullPlanes;this._pCasterCollector.camera=this._pOverallDepthCamera;this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRenderCascades(this._pCasterCollector,t,this._numCascades,this._pScissorRects,this._depthCameras)};e.prototype.updateScissorRects=function(){var t=this._pDepthMapSize*.5;this._pScissorRects[0]=new s(0,0,t,t);this._pScissorRects[1]=new s(t,0,t,t);this._pScissorRects[2]=new s(0,t,t,t);this._pScissorRects[3]=new s(t,t,t,t);this._pScissorRectsInvalid=false};e.prototype.pUpdateDepthProjection=function(t){var e;var i=t.projection;var r=i.near;var n=i.far-r;this.pUpdateProjectionFromFrustumCorners(t,t.projection.frustumCorners,this._pMatrix);this._pMatrix.appendScale(.96,.96,1);this._pOverallDepthProjection.matrix=this._pMatrix;this.pUpdateCullPlanes(t);for(var s=0;s_)_=o;if(ay)y=a;if(h>m)m=h;if(p_)_=p;if(uy)y=u;if(l>m)m=l;b+=3}d=1;var g=_-c;var v=y-f;var w=1/(m-d);if(c<0)c-=this._pSnap;if(f<0)f-=this._pSnap;c=Math.floor(c/this._pSnap)*this._pSnap;f=Math.floor(f/this._pSnap)*this._pSnap;var j=2*this._pSnap;g=Math.floor(g/j+1)*j;v=Math.floor(v/j+1)*j;_=c+g;y=f+v;g=1/g;v=1/v;s[0]=2*g;s[5]=2*v;s[10]=w;s[12]=-(_+c)*g;s[13]=-(y+f)*v;s[14]=-d*w;s[15]=1;s[1]=s[2]=s[3]=s[4]=s[6]=s[7]=s[8]=s[9]=s[11]=0;t.copyRawDataFrom(s);t.appendScale(.96,.96,1);t.appendTranslation(i,r,0);t.appendScale(.5,.5,1)};e.prototype.addEventListener=function(t,e){this._changeDispatcher.addEventListener(t,e)};e.prototype.removeEventListener=function(t,e){this._changeDispatcher.removeEventListener(t,e)};e.prototype.dispatchEvent=function(t){return this._changeDispatcher.dispatchEvent(t)};e.prototype.hasEventListener=function(t){return this._changeDispatcher.hasEventListener(t)};Object.defineProperty(e.prototype,"_iNearPlaneDistances",{get:function(){return this._nearPlaneDistances},enumerable:true,configurable:true});return e}(u);e.exports=l},{"awayjs-core/lib/events/Event":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/geom/Matrix3DUtils":undefined,"awayjs-core/lib/geom/Rectangle":undefined,"awayjs-core/lib/projections/FreeMatrixProjection":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined}],"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/errors/PartialImplementationError");var s=t("awayjs-display/lib/entities/Camera");var o=t("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase");var a=function(t){r(e,t);function e(){t.call(this);this._pDepthMapSize=512; +this._needsRender=new Array;this.initCameras()}e.prototype.initCameras=function(){this._depthCameras=new Array;this._projections=new Array;this.addCamera(0,90,0);this.addCamera(0,-90,0);this.addCamera(-90,0,0);this.addCamera(90,0,0);this.addCamera(0,0,0);this.addCamera(0,180,0)};e.prototype.addCamera=function(t,e,i){var r=new s;r.rotationX=t;r.rotationY=e;r.rotationZ=i;r.projection.near=.01;var n=r.projection;n.fieldOfView=90;this._projections.push(n);r.projection._iAspectRatio=1;this._depthCameras.push(r)};e.prototype.pCreateDepthTexture=function(){throw new n};e.prototype.pUpdateDepthProjection=function(t){var e=this._pLight;var i=e._pFallOff;var r=this._pLight.scenePosition;for(var n=0;n<6;++n){this._projections[n].far=i;this._depthCameras[n].transform.position=r;this._needsRender[n]=true}};e.prototype.pDrawDepthMap=function(t,e,i){for(var r=0;r<6;++r){if(this._needsRender[r]){this._pCasterCollector.camera=this._depthCameras[r];this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRender(this._pCasterCollector,t,null,r)}}};return e}(o);e.exports=a},{"awayjs-core/lib/errors/PartialImplementationError":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":undefined}],"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Matrix3D");var s=t("awayjs-core/lib/projections/FreeMatrixProjection");var o=t("awayjs-display/lib/entities/Camera");var a=t("awayjs-display/lib/materials/shadowmappers/ShadowMapperBase");var h=function(t){r(e,t);function e(){t.call(this);this._pLightOffset=1e4;this._pSnap=64;this._pCullPlanes=[];this._pOverallDepthProjection=new s;this._pOverallDepthCamera=new o(this._pOverallDepthProjection);this._pLocalFrustum=[];this._pMatrix=new n}Object.defineProperty(e.prototype,"snap",{get:function(){return this._pSnap},set:function(t){this._pSnap=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightOffset",{get:function(){return this._pLightOffset},set:function(t){this._pLightOffset=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"iDepthProjection",{get:function(){return this._pOverallDepthCamera.viewProjection},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"depth",{get:function(){return this._pMaxZ-this._pMinZ},enumerable:true,configurable:true});e.prototype.pDrawDepthMap=function(t,e,i){this._pCasterCollector.camera=this._pOverallDepthCamera;this._pCasterCollector.cullPlanes=this._pCullPlanes;this._pCasterCollector.clear();e.traversePartitions(this._pCasterCollector);i._iRender(this._pCasterCollector,t)};e.prototype.pUpdateCullPlanes=function(t){var e=this._pOverallDepthCamera.frustumPlanes;var i=t.frustumPlanes;this._pCullPlanes.length=4;this._pCullPlanes[0]=e[0];this._pCullPlanes[1]=e[1];this._pCullPlanes[2]=e[2];this._pCullPlanes[3]=e[3];var r=this._pLight;var n=r.sceneDirection;var s=n.x;var o=n.y;var a=n.z;var h=4;for(var p=0;p<6;++p){var u=i[p];if(u.a*s+u.b*o+u.c*a<0)this._pCullPlanes[h++]=u}};e.prototype.pUpdateDepthProjection=function(t){this.pUpdateProjectionFromFrustumCorners(t,t.projection.frustumCorners,this._pMatrix);this._pOverallDepthProjection.matrix=this._pMatrix;this.pUpdateCullPlanes(t)};e.prototype.pUpdateProjectionFromFrustumCorners=function(t,e,i){var r=new Array;var n;var s,o,a;var h,p;var u,l;var c;var f=this._pLight;n=f.sceneDirection;this._pOverallDepthCamera.transform.matrix3D=this._pLight.sceneTransform;s=Math.floor((t.x-n.x*this._pLightOffset)/this._pSnap)*this._pSnap;o=Math.floor((t.y-n.y*this._pLightOffset)/this._pSnap)*this._pSnap;a=Math.floor((t.z-n.z*this._pLightOffset)/this._pSnap)*this._pSnap;this._pOverallDepthCamera.x=s;this._pOverallDepthCamera.y=o;this._pOverallDepthCamera.z=a;this._pMatrix.copyFrom(this._pOverallDepthCamera.inverseSceneTransform);this._pMatrix.prepend(t.sceneTransform);this._pMatrix.transformVectors(e,this._pLocalFrustum);h=u=this._pLocalFrustum[0];p=l=this._pLocalFrustum[1];this._pMaxZ=this._pLocalFrustum[2];c=3;while(c<24){s=this._pLocalFrustum[c];o=this._pLocalFrustum[c+1];a=this._pLocalFrustum[c+2];if(su)u=s;if(ol)l=o;if(a>this._pMaxZ)this._pMaxZ=a;c+=3}this._pMinZ=1;var d=u-h;var _=l-p;var y=1/(this._pMaxZ-this._pMinZ);if(h<0)h-=this._pSnap;if(p<0)p-=this._pSnap;h=Math.floor(h/this._pSnap)*this._pSnap;p=Math.floor(p/this._pSnap)*this._pSnap;var m=2*this._pSnap;d=Math.floor(d/m+2)*m;_=Math.floor(_/m+2)*m;u=h+d;l=p+_;d=1/d;_=1/_;r[0]=2*d;r[5]=2*_;r[10]=y;r[12]=-(u+h)*d;r[13]=-(l+p)*_;r[14]=-this._pMinZ*y;r[15]=1;r[1]=r[2]=r[3]=r[4]=r[6]=r[7]=r[8]=r[9]=r[11]=0;i.copyRawDataFrom(r)};return e}(a);e.exports=h},{"awayjs-core/lib/geom/Matrix3D":undefined,"awayjs-core/lib/projections/FreeMatrixProjection":undefined,"awayjs-display/lib/entities/Camera":undefined,"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":undefined}],"awayjs-display/lib/materials/shadowmappers/NearDirectionalShadowMapper":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper");var s=function(t){r(e,t);function e(e){if(e===void 0){e=.5}t.call(this);this.coverageRatio=e}Object.defineProperty(e.prototype,"coverageRatio",{get:function(){return this._coverageRatio},set:function(t){if(t>1)t=1;else if(t<0)t=0;this._coverageRatio=t},enumerable:true,configurable:true});e.prototype.pUpdateDepthProjection=function(t){var e=t.projection.frustumCorners;for(var i=0;i<12;++i){var r=e[i];this._pLocalFrustum[i]=r;this._pLocalFrustum[i+12]=r+(e[i+12]-r)*this._coverageRatio}this.pUpdateProjectionFromFrustumCorners(t,this._pLocalFrustum,this._pMatrix);this._pOverallDepthProjection.matrix=this._pMatrix};return e}(n);e.exports=s},{"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper":undefined}],"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase":[function(t,e,i){var r=t("awayjs-core/lib/errors/AbstractMethodError");var n=t("awayjs-display/lib/traverse/ShadowCasterCollector");var s=t("awayjs-core/lib/textures/RenderTexture");var o=function(){function t(){this._pDepthMapSize=2048;this._autoUpdateShadows=true;this._pCasterCollector=this.pCreateCasterCollector()}t.prototype.pCreateCasterCollector=function(){return new n};Object.defineProperty(t.prototype,"autoUpdateShadows",{get:function(){return this._autoUpdateShadows},set:function(t){this._autoUpdateShadows=t},enumerable:true,configurable:true});t.prototype.updateShadows=function(){this._iShadowsInvalid=true};t.prototype.iSetDepthMap=function(t){if(this._depthMap==t)return;if(this._depthMap&&!this._explicitDepthMap)this._depthMap.dispose();this._depthMap=t;if(this._depthMap){this._explicitDepthMap=true;this._pDepthMapSize=this._depthMap.size}else{this._explicitDepthMap=false}};Object.defineProperty(t.prototype,"light",{get:function(){return this._pLight},set:function(t){this._pLight=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"depthMap",{get:function(){if(!this._depthMap)this._depthMap=this.pCreateDepthTexture();return this._depthMap},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"depthMapSize",{get:function(){return this._pDepthMapSize},set:function(t){if(t==this._pDepthMapSize)return;this._pSetDepthMapSize(t)},enumerable:true,configurable:true});t.prototype.dispose=function(){this._pCasterCollector=null;if(this._depthMap&&!this._explicitDepthMap)this._depthMap.dispose();this._depthMap=null};t.prototype.pCreateDepthTexture=function(){return new s(this._pDepthMapSize,this._pDepthMapSize)};t.prototype.iRenderDepthMap=function(t,e){this._iShadowsInvalid=false;this.pUpdateDepthProjection(t.camera);if(!this._depthMap)this._depthMap=this.pCreateDepthTexture();this.pDrawDepthMap(this._depthMap,t.scene,e)};t.prototype.pUpdateDepthProjection=function(t){throw new r};t.prototype.pDrawDepthMap=function(t,e,i){throw new r};t.prototype._pSetDepthMapSize=function(t){this._pDepthMapSize=t;if(this._explicitDepthMap){throw Error("Cannot set depth map size for the current renderer.")}else if(this._depthMap){this._depthMap.dispose();this._depthMap=null}};return t}();e.exports=o},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/textures/RenderTexture":undefined,"awayjs-display/lib/traverse/ShadowCasterCollector":undefined}],"awayjs-display/lib/partition/CameraNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e)}e.prototype.acceptTraverser=function(t){};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/DirectionalLightNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e);this._directionalLight=e}e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyDirectionalLight(this._directionalLight)};e.prototype.isCastingShadow=function(){return false};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/EntityNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/errors/PartialImplementationError");var s=t("awayjs-display/lib/partition/NodeBase");var o=function(t){r(e,t);function e(e){t.call(this);this._entity=e;this._iNumEntities=1}Object.defineProperty(e.prototype,"entity",{get:function(){return this._entity},enumerable:true,configurable:true});e.prototype.removeFromParent=function(){if(this._iParent)this._iParent.iRemoveNode(this);this._iParent=null};e.prototype.isCastingShadow=function(){return this.entity.castsShadows};e.prototype.isInFrustum=function(t,e){if(!this._entity._iIsVisible())return false;return this._entity.worldBounds.isInFrustum(t,e)};e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyEntity(this._entity)};e.prototype.isIntersectingRay=function(t,e){if(!this._entity._iIsVisible())return false;return this._entity.isIntersectingRay(t,e)};e.prototype._pCreateBoundsPrimitive=function(){throw new n};return e}(s);e.exports=o},{"awayjs-core/lib/errors/PartialImplementationError":undefined,"awayjs-display/lib/partition/NodeBase":undefined}],"awayjs-display/lib/partition/LightProbeNode":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/partition/EntityNode");var s=function(t){r(e,t);function e(e){t.call(this,e);this._lightProbe=e}e.prototype.acceptTraverser=function(t){if(t.enterNode(this))t.applyLightProbe(this._lightProbe)};e.prototype.isCastingShadow=function(){return false};return e}(n);e.exports=s},{"awayjs-display/lib/partition/EntityNode":undefined}],"awayjs-display/lib/partition/NodeBase":[function(t,e,i){var r=function(){function t(){this._pNumChildNodes=0;this._iNumEntities=0;this._pChildNodes=new Array}Object.defineProperty(t.prototype,"boundsVisible",{get:function(){return this._explicitBoundsVisible},set:function(t){if(this._explicitBoundsVisible==t)return;this._explicitBoundsVisible=t;this._iUpdateImplicitBoundsVisible(this._iParent?this._iParent.boundsChildrenVisible:false)},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"boundsChildrenVisible",{get:function(){return this._boundsChildrenVisible},set:function(t){if(this._boundsChildrenVisible==t)return;this._boundsChildrenVisible=t;for(var e=0;ee._iPickingCollisionVO.rayEntryDistance?1:-1};t.prototype.getPickingCollisionVO=function(t){this._entities.length=this._numEntities;this._entities=this._entities.sort(this.sortOnNearT);var e=Number.MAX_VALUE;var i;var r;var n;var s;for(s=0;sthis._segmentsH/2?this._height/2:-this._height/2;var P=g*Math.sin(v);var O=1/Math.sqrt(w*w+P*P+b*b);var A=Math.sqrt(P*P+w*w);if(this._yUp){f=0;d=A>.007?w/A:0;l=-b;c=P}else{f=A>.007?w/A:0;d=0;l=P;c=b}if(o==this._segmentsW){r[p]=r[u];r[p+1]=r[u+1];r[p+2]=r[u+2];n[p]=(n[u]+w*O)*.5;n[p+1]=(n[u+1]+l*O)*.5;n[p+2]=(n[u+2]+c*O)*.5;s[p]=(s[u]+(A>.007?-P/A:1))*.5;s[p+1]=(s[u+1]+f)*.5;s[p+2]=(s[u+2]+d)*.5}else{r[p]=w;r[p+1]=this._yUp?l-j:l;r[p+2]=this._yUp?c:c+j;n[p]=w*O;n[p+1]=l*O;n[p+2]=c*O;s[p]=A>.007?-P/A:1;s[p+1]=f;s[p+2]=d}if(o>0&&a>0){var D=(this._segmentsW+1)*a+o;var C=(this._segmentsW+1)*a+o-1;var T=(this._segmentsW+1)*(a-1)+o-1;var E=(this._segmentsW+1)*(a-1)+o;if(a==this._segmentsH){r[p]=r[u];r[p+1]=r[u+1];r[p+2]=r[u+2];i[h++]=D;i[h++]=T;i[h++]=E}else if(a==1){i[h++]=D;i[h++]=C;i[h++]=T}else{i[h++]=D;i[h++]=C;i[h++]=T;i[h++]=D;i[h++]=T;i[h++]=E}}p+=3}}y.updateIndices(i);y.updatePositions(r);y.updateVertexNormals(n);y.updateVertexTangents(s)}else if(e=="lineSubGeometry"){}};e.prototype._pBuildUVs=function(t,e){var i,r;var n;if(e=="triangleSubGeometry"){var s=t;if(s.uvs&&this._numVertices==s.numVertices){n=s.uvs}else{n=new Array(this._numVertices*2)}var o=0;for(r=0;r<=this._segmentsH;++r){for(i=0;i<=this._segmentsW;++i){n[o++]=i/this._segmentsW*s.scaleU;n[o++]=r/this._segmentsH*s.scaleV}}s.updateUVs(n)}else if(e=="lineSubGeometry"){}};return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitivePrefabBase":undefined}],"awayjs-display/lib/prefabs/PrimitiveConePrefab":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/prefabs/PrimitiveCylinderPrefab");var s=function(t){r(e,t);function e(e,i,r,n,s,o){if(e===void 0){e=50}if(i===void 0){i=100}if(r===void 0){r=16}if(n===void 0){n=1}if(s===void 0){s=true}if(o===void 0){o=true}t.call(this,0,e,i,r,n,false,s,true,o)}Object.defineProperty(e.prototype,"radius",{get:function(){return this._pBottomRadius},set:function(t){this._pBottomRadius=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab":undefined}],"awayjs-display/lib/prefabs/PrimitiveCubePrefab":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/prefabs/PrimitivePrefabBase");var s=function(t){r(e,t);function e(e,i,r,n,s,o,a){if(e===void 0){e=100}if(i===void 0){i=100}if(r===void 0){r=100}if(n===void 0){n=1}if(s===void 0){s=1}if(o===void 0){o=1}if(a===void 0){a=true}t.call(this);this._width=e;this._height=i;this._depth=r;this._segmentsW=n;this._segmentsH=s;this._segmentsD=o;this._tile6=a}Object.defineProperty(e.prototype,"width",{get:function(){return this._width},set:function(t){this._width=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"height",{get:function(){return this._height},set:function(t){this._height=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"depth",{get:function(){return this._depth},set:function(t){this._depth=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"tile6",{get:function(){return this._tile6},set:function(t){this._tile6=t;this._pInvalidateGeometry()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsW",{get:function(){return this._segmentsW},set:function(t){this._segmentsW=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsH",{get:function(){return this._segmentsH},set:function(t){this._segmentsH=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"segmentsD",{get:function(){return this._segmentsD},set:function(t){this._segmentsD=t;this._pInvalidateGeometry();this._pInvalidateUVs()},enumerable:true,configurable:true});e.prototype._pBuildGeometry=function(t,e){var i;var r;var n;var s;var o,a,h,p;var u,l,c=0;var f,d;var _,y,m;var b,g,v;var w;var j;var P;_=this._width/2;y=this._height/2;m=this._depth/2;if(e=="triangleSubGeometry"){var O=t;P=((this._segmentsW+1)*(this._segmentsH+1)+(this._segmentsW+1)*(this._segmentsD+1)+(this._segmentsH+1)*(this._segmentsD+1))*2;j=(this._segmentsW*this._segmentsH+this._segmentsW*this._segmentsD+this._segmentsH*this._segmentsD)*12;if(P==O.numVertices&&O.indices!=null){i=O.indices;r=O.positions;n=O.vertexNormals;s=O.vertexTangents}else{i=new Array(j);r=new Array(P*3);n=new Array(P*3);s=new Array(P*3);this._pInvalidateUVs()}f=0;d=0;b=this._width/this._segmentsW;g=this._height/this._segmentsH;v=this._depth/this._segmentsD;for(u=0;u<=this._segmentsW;u++){w=-_+u*b;for(l=0;l<=this._segmentsH;l++){r[f]=w;r[f+1]=-y+l*g;r[f+2]=-m;n[f]=0;n[f+1]=0;n[f+2]=-1;s[f]=1;s[f+1]=0;s[f+2]=0;f+=3;r[f]=w;r[f+1]=-y+l*g;r[f+2]=m;n[f]=0;n[f+1]=0;n[f+2]=1;s[f]=-1;s[f+1]=0;s[f+2]=0;f+=3;if(u&&l){o=2*((u-1)*(this._segmentsH+1)+(l-1));a=2*(u*(this._segmentsH+1)+(l-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}c+=2*(this._segmentsW+1)*(this._segmentsH+1);for(u=0;u<=this._segmentsW;u++){w=-_+u*b;for(l=0;l<=this._segmentsD;l++){r[f]=w;r[f+1]=y;r[f+2]=-m+l*v;n[f]=0;n[f+1]=1;n[f+2]=0;s[f]=1;s[f+1]=0; +s[f+2]=0;f+=3;r[f]=w;r[f+1]=-y;r[f+2]=-m+l*v;n[f]=0;n[f+1]=-1;n[f+2]=0;s[f]=1;s[f+1]=0;s[f+2]=0;f+=3;if(u&&l){o=c+2*((u-1)*(this._segmentsD+1)+(l-1));a=c+2*(u*(this._segmentsD+1)+(l-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}c+=2*(this._segmentsW+1)*(this._segmentsD+1);for(u=0;u<=this._segmentsD;u++){w=m-u*v;for(l=0;l<=this._segmentsH;l++){r[f]=-_;r[f+1]=-y+l*g;r[f+2]=w;n[f]=-1;n[f+1]=0;n[f+2]=0;s[f]=0;s[f+1]=0;s[f+2]=-1;f+=3;r[f]=_;r[f+1]=-y+l*g;r[f+2]=w;n[f]=1;n[f+1]=0;n[f+2]=0;s[f]=0;s[f+1]=0;s[f+2]=1;f+=3;if(u&&l){o=c+2*((u-1)*(this._segmentsH+1)+(l-1));a=c+2*(u*(this._segmentsH+1)+(l-1));h=o+2;p=a+2;i[d++]=o;i[d++]=h;i[d++]=p;i[d++]=o;i[d++]=p;i[d++]=a;i[d++]=a+1;i[d++]=p+1;i[d++]=h+1;i[d++]=a+1;i[d++]=h+1;i[d++]=o+1}}}O.updateIndices(i);O.updatePositions(r);O.updateVertexNormals(n);O.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var A=t;var D=this._segmentsH*4+this._segmentsW*4+this._segmentsD*4;var C;var T;var E;if(A.indices!=null&&D==A.numSegments){C=A.startPositions;T=A.endPositions;E=A.thickness}else{C=new Array(D*3);T=new Array(D*3);E=new Array(D)}f=0;d=0;for(u=0;u0){u=-.5*this._height;for(o=0;o<=this._pSegmentsW;++o){if(this._yUp){P=1;O=0;g=-u;v=0}else{P=0;O=-1;g=0;v=u}r[l]=0;r[l+1]=g;r[l+2]=v;n[l]=0;n[l+1]=P;n[l+2]=O;s[l]=1;s[l+1]=0;s[l+2]=0;l+=3;d=o*A;h=this._topRadius*Math.cos(d);p=this._topRadius*Math.sin(d);if(this._yUp){g=-u;v=p}else{g=p;v=u}if(o==this._pSegmentsW){r[l]=r[w+3];r[l+1]=r[w+4];r[l+2]=r[w+5]}else{r[l]=h;r[l+1]=g;r[l+2]=v}n[l]=0;n[l+1]=P;n[l+2]=O;s[l]=1;s[l+1]=0;s[l+2]=0;l+=3;if(o>0){i[c++]=j;i[c++]=j+1;i[c++]=j+2;j+=2}}j+=2}if(this._bottomClosed&&this._pBottomRadius>0){u=.5*this._height;w=j*3;for(o=0;o<=this._pSegmentsW;++o){if(this._yUp){P=-1;O=0;g=-u;v=0}else{P=0;O=1;g=0;v=u}r[l]=0;r[l+1]=g;r[l+2]=v;n[l]=0;n[l+1]=P;n[l+2]=O;s[l]=1;s[l+1]=0;s[l+2]=0;l+=3;d=o*A;h=this._pBottomRadius*Math.cos(d);p=this._pBottomRadius*Math.sin(d);if(this._yUp){g=-u;v=p}else{g=p;v=u}if(o==this._pSegmentsW){r[l]=r[w+3];r[l+1]=r[w+4];r[l+2]=r[w+5]}else{r[l]=h;r[l+1]=g;r[l+2]=v}n[l]=0;n[l+1]=P;n[l+2]=O;s[l]=1;s[l+1]=0;s[l+2]=0;l+=3;if(o>0){i[c++]=j;i[c++]=j+2;i[c++]=j+1;j+=2}}j+=2}_=this._pBottomRadius-this._topRadius;y=_/this._height;m=y==0?1:this._height/_;if(this._surfaceClosed){var C;var T;var E;var S;var x,N,I,M;for(a=0;a<=this._pSegmentsH;++a){f=this._topRadius-a/this._pSegmentsH*(this._topRadius-this._pBottomRadius);u=-(this._height/2)+a/this._pSegmentsH*this._height;w=j*3;for(o=0;o<=this._pSegmentsW;++o){d=o*A;h=f*Math.cos(d);p=f*Math.sin(d);x=m*Math.cos(d);N=m*Math.sin(d);if(this._yUp){P=0;O=-x;g=-u;v=p;I=y;M=N}else{P=-x;O=0;g=p;v=u;I=N;M=y}if(o==this._pSegmentsW){r[l]=r[w];r[l+1]=r[w+1];r[l+2]=r[w+2];n[l]=x;n[l+1]=y;n[l+2]=N;s[l]=N;s[l+1]=P;s[l+2]=O}else{r[l]=h;r[l+1]=g;r[l+2]=v;n[l]=x;n[l+1]=I;n[l+2]=M;s[l]=-N;s[l+1]=P;s[l+2]=O}l+=3;if(o>0&&a>0){C=j;T=j-1;E=T-this._pSegmentsW-1;S=C-this._pSegmentsW-1;i[c++]=C;i[c++]=T;i[c++]=E;i[c++]=C;i[c++]=E;i[c++]=S}j++}}}D.updateIndices(i);D.updatePositions(r);D.updateVertexNormals(n);D.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var R=t;var L=(this._pSegmentsH+1)*this._pSegmentsW+this._pSegmentsW;var U;var V;var B;if(R.indices!=null&&L==R.numSegments){U=R.startPositions;V=R.endPositions;B=R.thickness}else{U=new Array(L*3);V=new Array(L*3);B=new Array(L)}l=0;c=0;for(a=0;a<=this._pSegmentsH;++a){f=this._topRadius-a/this._pSegmentsH*(this._topRadius-this._pBottomRadius);u=this._height*(a/this._pSegmentsH-.5);for(o=0;o<=this._pSegmentsW;++o){d=o*A;h=f*Math.cos(d);p=f*Math.sin(d);if(this._yUp){g=-u;v=p}else{g=p;v=u}if(o>0){V[l]=h;V[l+1]=g;V[l+2]=v;B[c++]=1;l+=3;U[l]=V[l-this._pSegmentsW*6];U[l+1]=V[l+1-this._pSegmentsW*6];U[l+2]=V[l+2-this._pSegmentsW*6];V[l]=h;V[l+1]=g;V[l+2]=v;B[c++]=1;l+=3}if(o.007?w/O:0;u=-b;l=j}else{_=O>.007?w/O:0;y=0;u=j;l=b}if(o==this._segmentsW){r[h]=r[d];r[h+1]=r[d+1];r[h+2]=r[d+2];n[h]=n[d]+w*P*.5;n[h+1]=n[d+1]+u*P*.5;n[h+2]=n[d+2]+l*P*.5;s[h]=O>.007?-j/O:1;s[h+1]=_;s[h+2]=y}else{r[h]=w;r[h+1]=u;r[h+2]=l;n[h]=w*P;n[h+1]=u*P;n[h+2]=l*P;s[h]=O>.007?-j/O:1;s[h+1]=_;s[h+2]=y}if(o>0&&a>0){var A=(this._segmentsW+1)*a+o;var D=(this._segmentsW+1)*a+o-1;var C=(this._segmentsW+1)*(a-1)+o-1;var T=(this._segmentsW+1)*(a-1)+o;if(a==this._segmentsH){r[h]=r[d];r[h+1]=r[d+1];r[h+2]=r[d+2];i[p++]=A;i[p++]=C;i[p++]=T}else if(a==1){i[p++]=A;i[p++]=D;i[p++]=C}else{i[p++]=A;i[p++]=D;i[p++]=C;i[p++]=A;i[p++]=C;i[p++]=T}}h+=3}}f.updateIndices(i);f.updatePositions(r);f.updateVertexNormals(n);f.updateVertexTangents(s)}else if(e=="lineSubGeometry"){var E=t;var S=(this._segmentsH-1)*this._segmentsW*2;var x;var N;var I;if(E.indices!=null&&S==E.numSegments){x=E.startPositions;N=E.endPositions;I=E.thickness}else{x=new Array(S*3);N=new Array(S*3);I=new Array(S)}h=0;p=0;for(a=0;a<=this._segmentsH;++a){var m=Math.PI*a/this._segmentsH;var b=-this._radius*Math.cos(m);var g=this._radius*Math.sin(m);for(o=0;o<=this._segmentsW;++o){var v=2*Math.PI*o/this._segmentsW;var w=g*Math.cos(v);var j=g*Math.sin(v);if(this._yUp){u=-b;l=j}else{u=j;l=b}if(o>0&&a>0){if(a0&&a0&&a>0){S=E;x=E-1;N=x-this._segmentsR-1;I=S-this._segmentsR-1;i[m++]=S;i[m++]=x;i[m++]=N;i[m++]=S;i[m++]=N;i[m++]=I}E++}}g.updateIndices(i);g.updatePositions(r);g.updateVertexNormals(n);g.updateVertexTangents(s)}else if(e=="lineSubGeometry"){}};e.prototype._pBuildUVs=function(t,e){var i,r;var n;if(e=="triangleSubGeometry"){var s=t;if(s.uvs&&this._numVertices==s.numVertices){n=s.uvs}else{n=new Array(this._numVertices*2)}var o=0;for(r=0;r<=this._segmentsT;++r){for(i=0;i<=this._segmentsR;++i){n[o++]=i/this._segmentsR*s.scaleU;n[o++]=r/this._segmentsT*s.scaleV}}s.updateUVs(n)}else if(e=="lineSubGeometry"){}};return e}(n);e.exports=s},{"awayjs-display/lib/prefabs/PrimitivePrefabBase":undefined}],"awayjs-display/lib/render/CSSDefaultRenderer":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Matrix3D");var s=t("awayjs-core/lib/projections/CoordinateSystem");var o=t("awayjs-display/lib/render/CSSRendererBase");var a=t("awayjs-display/lib/traverse/CSSEntityCollector");var h=function(t){r(e,t);function e(){t.call(this);this._contextMatrix=new n;this._skyboxProjection=new n;this._transform=new n;this._container=document.createElement("div");this._container.style.overflow="hidden";this._container.style.position="absolute";document.body.appendChild(this._container);this._context=document.createElement("div");this._contextStyle=this._context.style;this._contextStyle.position="absolute";this._contextStyle.transformStyle=this._contextStyle["-webkit-transform-style"]=this._contextStyle["-moz-transform-style"]=this._contextStyle["-o-transform-style"]=this._contextStyle["-ms-transform-style"]="preserve-3d";this._contextStyle.transformOrigin=this._contextStyle["-webkit-transform-origin"]=this._contextStyle["-moz-transform-origin"]=this._contextStyle["-o-transform-origin"]=this._contextStyle["-ms-transform-origin"]="0% 0%";this._container.appendChild(this._context)}e.prototype.render=function(e){t.prototype.render.call(this,e);if(this._pBackBufferInvalid)this.pUpdateBackBuffer();this._iRender(e);this._pBackBufferInvalid=false};e.prototype.pDraw=function(t){var e=document.styleSheets[document.styleSheets.length-1];for(var i=0;il){a=1}else{a=-1}}else if(h>p){a=1}else{a=-1}if(a<0){o=t;t=t.next}else{o=e;e=e.next}if(!n){n=o;s=o}else{s.next=o;s=o}}if(t)s.next=t;else if(e)s.next=e;return n};return t}();e.exports=r},{}],"awayjs-display/lib/text/AntiAliasType":[function(t,e,i){var r=function(){function t(){}t.ADVANCED="advanced";t.NORMAL="normal";return t}();e.exports=r},{}],"awayjs-display/lib/text/GridFitType":[function(t,e,i){var r=function(){function t(){}t.NONE="none";t.PIXEL="pixel";t.SUBPIXEL="subpixel";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFieldAutoSize":[function(t,e,i){var r=function(){function t(){}t.CENTER="center";t.LEFT="left";t.NONE="none";t.RIGHT="right";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFieldType":[function(t,e,i){var r=function(){function t(){}t.DYNAMIC="dynamic";t.INPUT="input";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFormatAlign":[function(t,e,i){var r=function(){function t(){this.CENTER="center";this.JUSTIFY="justify";this.LEFT="left";this.RIGHT="right"}return t}();e.exports=r},{}],"awayjs-display/lib/text/TextFormat":[function(t,e,i){var r=function(){function t(t,e,i,r,n,s,o,a,h,p,u,l,c){if(t===void 0){t="Times New Roman"}if(e===void 0){e=12}if(i===void 0){i=0}if(r===void 0){r=false}if(n===void 0){n=false}if(s===void 0){s=false}if(o===void 0){o=""}if(a===void 0){a=""}if(h===void 0){h="left"}if(p===void 0){p=0}if(u===void 0){u=0}if(l===void 0){l=0}if(c===void 0){c=0}this.tabStops=new Array;this.font=t;this.size=e;this.bold=r;this.italic=n;this.underline=s;this.url=o;this.target=a;this.align=h;this.leftMargin=p;this.rightMargin=u;this.indent=l;this.leading=c}return t}();e.exports=r},{}],"awayjs-display/lib/text/TextInteractionMode":[function(t,e,i){var r=function(){function t(){}t.NORMAL="normal";t.SELECTION="selection";return t}();e.exports=r},{}],"awayjs-display/lib/text/TextLineMetrics":[function(t,e,i){var r=function(){function t(t,e,i,r,n,s){if(t===void 0){t=NaN}if(e===void 0){e=NaN}if(i===void 0){i=NaN}if(r===void 0){r=NaN}if(n===void 0){n=NaN}if(s===void 0){s=NaN}}return t}();e.exports=r},{}],"awayjs-display/lib/traverse/CSSEntityCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this)}return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/CollectorBase":[function(t,e,i){var r=t("awayjs-display/lib/pool/EntityListItemPool");var n=function(){function t(){this._numCullPlanes=0;this._pNumEntities=0;this._pNumInteractiveEntities=0;this._pEntityListItemPool=new r}Object.defineProperty(t.prototype,"camera",{get:function(){return this._pCamera},set:function(t){this._pCamera=t;this._cullPlanes=this._pCamera.frustumPlanes},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"cullPlanes",{get:function(){return this._customCullPlanes},set:function(t){this._customCullPlanes=t},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"entityHead",{get:function(){return this._pEntityHead},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"numEntities",{get:function(){return this._pNumEntities},enumerable:true,configurable:true});Object.defineProperty(t.prototype,"numInteractiveEntities",{get:function(){return this._pNumInteractiveEntities},enumerable:true,configurable:true});t.prototype.clear=function(){this._pNumEntities=this._pNumInteractiveEntities=0;this._cullPlanes=this._customCullPlanes?this._customCullPlanes:this._pCamera?this._pCamera.frustumPlanes:null;this._numCullPlanes=this._cullPlanes?this._cullPlanes.length:0;this._pEntityHead=null;this._pEntityListItemPool.freeAll()};t.prototype.enterNode=function(t){var e=this.scene._iCollectionMark!=t._iCollectionMark&&t.isInFrustum(this._cullPlanes,this._numCullPlanes);t._iCollectionMark=this.scene._iCollectionMark;return e};t.prototype.applyDirectionalLight=function(t){};t.prototype.applyEntity=function(t){this._pNumEntities++;if(t._iIsMouseEnabled())this._pNumInteractiveEntities++;var e=this._pEntityListItemPool.getItem();e.entity=t;e.next=this._pEntityHead;this._pEntityHead=e};t.prototype.applyLightProbe=function(t){};t.prototype.applyPointLight=function(t){};t.prototype.applySkybox=function(t){};return t}();e.exports=n},{"awayjs-display/lib/pool/EntityListItemPool":undefined}],"awayjs-display/lib/traverse/EntityCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this);this._pNumLights=0;this._numDirectionalLights=0;this._numPointLights=0;this._numLightProbes=0;this._pLights=new Array;this._directionalLights=new Array;this._pointLights=new Array;this._lightProbes=new Array}Object.defineProperty(e.prototype,"directionalLights",{get:function(){return this._directionalLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lightProbes",{get:function(){return this._lightProbes},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"lights",{get:function(){return this._pLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"pointLights",{get:function(){return this._pointLights},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"skyBox",{get:function(){return this._pSkybox},enumerable:true,configurable:true});e.prototype.applyDirectionalLight=function(t){this._directionalLights[this._numDirectionalLights++]=t};e.prototype.applyLightProbe=function(t){this._lightProbes[this._numLightProbes++]=t};e.prototype.applyPointLight=function(t){this._pointLights[this._numPointLights++]=t};e.prototype.applySkybox=function(t){this._pSkybox=t};e.prototype.clear=function(){t.prototype.clear.call(this);this._pSkybox=null;if(this._pNumLights>0)this._pLights.length=this._pNumLights=0;if(this._numDirectionalLights>0)this._directionalLights.length=this._numDirectionalLights=0;if(this._numPointLights>0)this._pointLights.length=this._numPointLights=0;if(this._numLightProbes>0)this._lightProbes.length=this._numLightProbes=0};return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/ICollector":[function(t,e,i){},{}],"awayjs-display/lib/traverse/RaycastCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-core/lib/geom/Vector3D");var s=t("awayjs-display/lib/traverse/CollectorBase");var o=function(t){r(e,t);function e(){t.call(this);this._rayPosition=new n;this._rayDirection=new n;this._iCollectionMark=0}Object.defineProperty(e.prototype,"rayPosition",{get:function(){return this._rayPosition},set:function(t){this._rayPosition=t},enumerable:true,configurable:true});Object.defineProperty(e.prototype,"rayDirection",{get:function(){return this._rayDirection},set:function(t){this._rayDirection=t},enumerable:true,configurable:true});e.prototype.enterNode=function(t){return t.isIntersectingRay(this._rayPosition,this._rayDirection)};return e}(s);e.exports=o},{"awayjs-core/lib/geom/Vector3D":undefined,"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/traverse/ShadowCasterCollector":[function(t,e,i){var r=this.__extends||function(t,e){for(var i in e)if(e.hasOwnProperty(i))t[i]=e[i];function r(){this.constructor=t}r.prototype=e.prototype;t.prototype=new r};var n=t("awayjs-display/lib/traverse/CollectorBase");var s=function(t){r(e,t);function e(){t.call(this)}e.prototype.enterNode=function(e){var i=this.scene._iCollectionMark!=e._iCollectionMark&&e.isCastingShadow();if(!i){e._iCollectionMark=this.scene._iCollectionMark;return false}return t.prototype.enterNode.call(this,e)};return e}(n);e.exports=s},{"awayjs-display/lib/traverse/CollectorBase":undefined}],"awayjs-display/lib/utils/Cast":[function(t,e,i){var r=t("awayjs-core/lib/base/BitmapData");var n=t("awayjs-core/lib/utils/ByteArray");var s=t("awayjs-display/lib/errors/CastError");var o=t("awayjs-core/lib/textures/BitmapTexture");var a=t("awayjs-core/lib/textures/ImageTexture");var h=function(){function t(){}t.string=function(t){if(typeof t=="function")t=new t;if(typeof t=="string")return t;return t};t.byteArray=function(t){if(typeof t=="function")t=new t;if(t instanceof n)return t;return t};t.isHex=function(t){var e=t.length;for(var i=0;iAnimationNodeBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.ANIMATION_NODE;\n\t}\n}\n\nexport = AnimationNodeBase;","/**\n *\n */\nclass AlignmentMode\n{\n\t/**\n\t *\n\t */\n\tpublic static REGISTRATION_POINT:string = \"registrationPoint\";\n\n\t/**\n\t *\n\t */\n\tpublic static PIVOT_POINT:string = \"pivot\";\n}\n\nexport = AlignmentMode;","/**\n * A class that provides constant values for visual blend mode effects. These\n * constants are used in the following:\n *
    \n *
  • The blendMode property of the\n * flash.display.DisplayObject class.
  • \n *
  • The blendMode parameter of the draw()\n * method of the flash.display.BitmapData class
  • \n *
\n */\nclass BlendMode\n{\n\t/**\n\t * Adds the values of the constituent colors of the display object to the\n\t * colors of its background, applying a ceiling of 0xFF. This setting is\n\t * commonly used for animating a lightening dissolve between two objects.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the\n\t * resulting RGB value for the displayed pixel is 0xFFC833(because 0xAA +\n\t * 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).

\n\t */\n\tpublic static ADD:string = \"add\";\n\n\t/**\n\t * Applies the alpha value of each pixel of the display object to the\n\t * background. This requires the blendMode property of the\n\t * parent display object be set to\n\t * away.base.BlendMode.LAYER.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static ALPHA:string = \"alpha\";\n\n\t/**\n\t * Selects the darker of the constituent colors of the display object and the\n\t * colors of the background(the colors with the smaller values). This\n\t * setting is commonly used for superimposing type.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0xDDCC00(because 0xFF >\n\t * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static DARKEN:string = \"darken\";\n\n\t/**\n\t * Compares the constituent colors of the display object with the colors of\n\t * its background, and subtracts the darker of the values of the two\n\t * constituent colors from the lighter value. This setting is commonly used\n\t * for more vibrant colors.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0x222C33(because 0xFF -\n\t * 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33).

\n\t */\n\tpublic static DIFFERENCE:string = \"difference\";\n\n\t/**\n\t * Erases the background based on the alpha value of the display object. This\n\t * process requires that the blendMode property of the parent\n\t * display object be set to flash.display.BlendMode.LAYER.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static ERASE:string = \"erase\";\n\n\t/**\n\t * Adjusts the color of each pixel based on the darkness of the display\n\t * object. If the display object is lighter than 50% gray, the display object\n\t * and background colors are screened, which results in a lighter color. If\n\t * the display object is darker than 50% gray, the colors are multiplied,\n\t * which results in a darker color. This setting is commonly used for shading\n\t * effects.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static HARDLIGHT:string = \"hardlight\";\n\n\t/**\n\t * Inverts the background.\n\t */\n\tpublic static INVERT:string = \"invert\";\n\n\t/**\n\t * Forces the creation of a transparency group for the display object. This\n\t * means that the display object is precomposed in a temporary buffer before\n\t * it is processed further. The precomposition is done automatically if the\n\t * display object is precached by means of bitmap caching or if the display\n\t * object is a display object container that has at least one child object\n\t * with a blendMode setting other than \"normal\".\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static LAYER:string = \"layer\";\n\n\t/**\n\t * Selects the lighter of the constituent colors of the display object and\n\t * the colors of the background(the colors with the larger values). This\n\t * setting is commonly used for superimposing type.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0xFFF833(because 0xFF >\n\t * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static LIGHTEN:string = \"lighten\";\n\n\t/**\n\t * Multiplies the values of the display object constituent colors by the\n\t * constituent colors of the background color, and normalizes by dividing by\n\t * 0xFF, resulting in darker colors. This setting is commonly used for\n\t * shadows and depth effects.\n\t *\n\t *

For example, if a constituent color(such as red) of one pixel in the\n\t * display object and the corresponding color of the pixel in the background\n\t * both have the value 0x88, the multiplied result is 0x4840. Dividing by\n\t * 0xFF yields a value of 0x48 for that constituent color, which is a darker\n\t * shade than the color of the display object or the color of the\n\t * background.

\n\t */\n\tpublic static MULTIPLY:string = \"multiply\";\n\n\t/**\n\t * The display object appears in front of the background. Pixel values of the\n\t * display object override the pixel values of the background. Where the\n\t * display object is transparent, the background is visible.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * Adjusts the color of each pixel based on the darkness of the background.\n\t * If the background is lighter than 50% gray, the display object and\n\t * background colors are screened, which results in a lighter color. If the\n\t * background is darker than 50% gray, the colors are multiplied, which\n\t * results in a darker color. This setting is commonly used for shading\n\t * effects.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static OVERLAY:string = \"overlay\";\n\n\t/**\n\t * Multiplies the complement(inverse) of the display object color by the\n\t * complement of the background color, resulting in a bleaching effect. This\n\t * setting is commonly used for highlights or to remove black areas of the\n\t * display object.\n\t */\n\tpublic static SCREEN:string = \"screen\";\n\n\t/**\n\t * Uses a shader to define the blend between objects.\n\t *\n\t *

Setting the blendShader property to a Shader instance\n\t * automatically sets the display object's blendMode property to\n\t * BlendMode.SHADER. If the blendMode property is\n\t * set to BlendMode.SHADER without first setting the\n\t * blendShader property, the blendMode property is\n\t * set to BlendMode.NORMAL instead. If the\n\t * blendShader property is set(which sets the\n\t * blendMode property to BlendMode.SHADER), then\n\t * later the value of the blendMode property is changed, the\n\t * blend mode can be reset to use the blend shader simply by setting the\n\t * blendMode property to BlendMode.SHADER. The\n\t * blendShader property does not need to be set again except to\n\t * change the shader that's used to define the blend mode.

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static SHADER:string = \"shader\";\n\n\t/**\n\t * Subtracts the values of the constituent colors in the display object from\n\t * the values of the background color, applying a floor of 0. This setting is\n\t * commonly used for animating a darkening dissolve between two objects.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the\n\t * resulting RGB value for the displayed pixel is 0x338400(because 0xDD -\n\t * 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00).

\n\t */\n\tpublic static SUBTRACT:string = \"subtract\";\n}\n\nexport = BlendMode;","/**\n * The CapsStyle class is an enumeration of constant values that specify the\n * caps style to use in drawing lines. The constants are provided for use as\n * values in the caps parameter of the\n * flash.display.Graphics.lineStyle() method. You can specify the\n * following three types of caps:\n */\nclass CapsStyle\n{\n\t/**\n\t * Used to specify round caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static ROUND:string = \"round\";\n\n\t/**\n\t * Used to specify no caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Used to specify square caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static SQUARE:string = \"square\";\n}\n\nexport = CapsStyle;","import AxisAlignedBoundingBox\t= require(\"awayjs-core/lib/bounds/AxisAlignedBoundingBox\");\nimport BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Point\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Scene\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport AlignmentMode\t\t\t= require(\"awayjs-display/lib/base/AlignmentMode\");\nimport BlendMode\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport LoaderInfo\t\t\t\t= require(\"awayjs-display/lib/base/LoaderInfo\");\nimport OrientationMode\t\t\t= require(\"awayjs-display/lib/base/OrientationMode\");\nimport IBitmapDrawable\t\t\t= require(\"awayjs-display/lib/base/IBitmapDrawable\");\nimport Transform\t\t\t\t= require(\"awayjs-display/lib/base/Transform\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport Partition\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport IPickingCollider\t\t\t= require(\"awayjs-display/lib/pick/IPickingCollider\");\nimport PickingCollisionVO\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DisplayObjectEvent\t\t= require(\"awayjs-display/lib/events/DisplayObjectEvent\");\nimport SceneEvent\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport PrefabBase\t\t\t\t= require(\"awayjs-display/lib/prefabs/PrefabBase\");\n\n/**\n * The DisplayObject class is the base class for all objects that can be\n * placed on the display list. The display list manages all objects displayed\n * in flash. Use the DisplayObjectContainer class to arrange the\n * display objects in the display list. DisplayObjectContainer objects can\n * have child display objects, while other display objects, such as Shape and\n * TextField objects, are \"leaf\" nodes that have only parents and siblings, no\n * children.\n *\n *

The DisplayObject class supports basic functionality like the x\n * and y position of an object, as well as more advanced properties of\n * the object such as its transformation matrix.

\n *\n *

DisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject() throws an\n * ArgumentError exception.

\n *\n *

All display objects inherit from the DisplayObject class.

\n *\n *

The DisplayObject class itself does not include any APIs for rendering\n * content onscreen. For that reason, if you want create a custom subclass of\n * the DisplayObject class, you will want to extend one of its subclasses that\n * do have APIs for rendering content onscreen, such as the Shape, Sprite,\n * Bitmap, SimpleButton, TextField, or MovieClip class.

\n *\n *

The DisplayObject class contains several broadcast events. Normally, the\n * target of any particular event is a specific DisplayObject instance. For\n * example, the target of an added event is the specific\n * DisplayObject instance that was added to the display list. Having a single\n * target restricts the placement of event listeners to that target and in\n * some cases the target's ancestors on the display list. With broadcast\n * events, however, the target is not a specific DisplayObject instance, but\n * rather all DisplayObject instances, including those that are not on the\n * display list. This means that you can add a listener to any DisplayObject\n * instance to listen for broadcast events. In addition to the broadcast\n * events listed in the DisplayObject class's Events table, the DisplayObject\n * class also inherits two broadcast events from the EventDispatcher class:\n * activate and deactivate.

\n *\n *

Some properties previously used in the ActionScript 1.0 and 2.0\n * MovieClip, TextField, and Button classes(such as _alpha,\n * _height, _name, _width,\n * _x, _y, and others) have equivalents in the\n * ActionScript 3.0 DisplayObject class that are renamed so that they no\n * longer begin with the underscore(_) character.

\n *\n *

For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.

\n * \n * @event added Dispatched when a display object is added to the\n * display list. The following methods trigger this\n * event:\n * DisplayObjectContainer.addChild(),\n * DisplayObjectContainer.addChildAt().\n * @event addedToStage Dispatched when a display object is added to the on\n * stage display list, either directly or through the\n * addition of a sub tree in which the display object\n * is contained. The following methods trigger this\n * event:\n * DisplayObjectContainer.addChild(),\n * DisplayObjectContainer.addChildAt().\n * @event enterFrame [broadcast event] Dispatched when the playhead is\n * entering a new frame. If the playhead is not\n * moving, or if there is only one frame, this event\n * is dispatched continuously in conjunction with the\n * frame rate. This event is a broadcast event, which\n * means that it is dispatched by all display objects\n * with a listener registered for this event.\n * @event exitFrame [broadcast event] Dispatched when the playhead is\n * exiting the current frame. All frame scripts have\n * been run. If the playhead is not moving, or if\n * there is only one frame, this event is dispatched\n * continuously in conjunction with the frame rate.\n * This event is a broadcast event, which means that\n * it is dispatched by all display objects with a\n * listener registered for this event.\n * @event frameConstructed [broadcast event] Dispatched after the constructors\n * of frame display objects have run but before frame\n * scripts have run. If the playhead is not moving, or\n * if there is only one frame, this event is\n * dispatched continuously in conjunction with the\n * frame rate. This event is a broadcast event, which\n * means that it is dispatched by all display objects\n * with a listener registered for this event.\n * @event removed Dispatched when a display object is about to be\n * removed from the display list. Two methods of the\n * DisplayObjectContainer class generate this event:\n * removeChild() and\n * removeChildAt().\n *\n *

The following methods of a\n * DisplayObjectContainer object also generate this\n * event if an object must be removed to make room for\n * the new object: addChild(),\n * addChildAt(), and\n * setChildIndex().

\n * @event removedFromStage Dispatched when a display object is about to be\n * removed from the display list, either directly or\n * through the removal of a sub tree in which the\n * display object is contained. Two methods of the\n * DisplayObjectContainer class generate this event:\n * removeChild() and\n * removeChildAt().\n *\n *

The following methods of a\n * DisplayObjectContainer object also generate this\n * event if an object must be removed to make room for\n * the new object: addChild(),\n * addChildAt(), and\n * setChildIndex().

\n * @event render [broadcast event] Dispatched when the display list\n * is about to be updated and rendered. This event\n * provides the last opportunity for objects listening\n * for this event to make changes before the display\n * list is rendered. You must call the\n * invalidate() method of the Stage\n * object each time you want a render\n * event to be dispatched. Render events\n * are dispatched to an object only if there is mutual\n * trust between it and the object that called\n * Stage.invalidate(). This event is a\n * broadcast event, which means that it is dispatched\n * by all display objects with a listener registered\n * for this event.\n *\n *

Note: This event is not dispatched if the\n * display is not rendering. This is the case when the\n * content is either minimized or obscured.

\n */\nclass DisplayObject extends NamedAssetBase implements IBitmapDrawable\n{\n\tprivate _loaderInfo:LoaderInfo;\n\tprivate _mouseX:number;\n\tprivate _mouseY:number;\n\tprivate _root:DisplayObjectContainer;\n\tprivate _bounds:Rectangle;\n\tprivate _boundsVisible:boolean;\n\tprivate _depth:number;\n\tprivate _height:number;\n\tprivate _width:number;\n\n\tpublic _pScene:Scene;\n\tpublic _pParent:DisplayObjectContainer;\n\tpublic _pSceneTransform:Matrix3D = new Matrix3D();\n\tpublic _pSceneTransformDirty:boolean = true;\n\tpublic _pIsEntity:boolean;\n\n\tprivate _explicitPartition:Partition;\n\tpublic _pImplicitPartition:Partition;\n\tprivate _partitionNode:EntityNode;\n\n\tprivate _sceneTransformChanged:DisplayObjectEvent;\n\tprivate _scenechanged:DisplayObjectEvent;\n\tprivate _transform:Transform;\n\tprivate _matrix3D:Matrix3D = new Matrix3D();\n\tprivate _matrix3DDirty:boolean = true;\n\n\tprivate _inverseSceneTransform:Matrix3D = new Matrix3D();\n\tprivate _inverseSceneTransformDirty:boolean = true;\n\tprivate _scenePosition:Vector3D = new Vector3D();\n\tprivate _scenePositionDirty:boolean = true;\n\tprivate _explicitVisibility:boolean = true;\n\tpublic _pImplicitVisibility:boolean = true;\n\tprivate _explicitMouseEnabled:boolean = true;\n\tpublic _pImplicitMouseEnabled:boolean = true;\n\tprivate _listenToSceneTransformChanged:boolean;\n\tprivate _listenToSceneChanged:boolean;\n\n\tprivate _positionDirty:boolean = true;\n\tprivate _rotationDirty:boolean = true;\n\tprivate _scaleDirty:boolean = true;\n\n\tprivate _positionChanged:DisplayObjectEvent;\n\tprivate _rotationChanged:DisplayObjectEvent;\n\tprivate _scaleChanged:DisplayObjectEvent;\n\n\tprivate _rotationX:number = 0;\n\tprivate _rotationY:number = 0;\n\tprivate _rotationZ:number = 0;\n\tprivate _eulers:Vector3D = new Vector3D();\n\tprivate _flipY:Matrix3D = new Matrix3D();\n\n\tprivate _listenToPositionChanged:boolean;\n\tprivate _listenToRotationChanged:boolean;\n\tprivate _listenToScaleChanged:boolean;\n\tprivate _zOffset:number = 0;\n\n\tpublic _pScaleX:number = 1;\n\tpublic _pScaleY:number = 1;\n\tpublic _pScaleZ:number = 1;\n\tprivate _x:number = 0;\n\tprivate _y:number = 0;\n\tprivate _z:number = 0;\n\tprivate _pivot:Vector3D = new Vector3D();\n\tprivate _orientationMatrix:Matrix3D = new Matrix3D();\n\tprivate _pivotZero:boolean = true;\n\tprivate _pivotDirty:boolean = true;\n\tprivate _pos:Vector3D = new Vector3D();\n\tprivate _rot:Vector3D = new Vector3D();\n\tprivate _sca:Vector3D = new Vector3D();\n\tprivate _transformComponents:Array;\n\n\tpublic _pIgnoreTransform:boolean = false;\n\n\tprivate _shaderPickingDetails:boolean;\n\n\tpublic _pPickingCollisionVO:PickingCollisionVO;\n\n\tpublic _pBounds:BoundingVolumeBase;\n\tpublic _pBoundsInvalid:boolean = true;\n\tprivate _worldBounds:BoundingVolumeBase;\n\tprivate _worldBoundsInvalid:boolean = true;\n\n\tpublic _pPickingCollider:IPickingCollider;\n\n\tpublic _pRenderables:Array = new Array();\n\n\tpublic _iSourcePrefab:PrefabBase;\n\n\t/**\n\t *\n\t */\n\tpublic alignmentMode:string = AlignmentMode.REGISTRATION_POINT;\n\n\t/**\n\t * Indicates the alpha transparency value of the object specified. Valid\n\t * values are 0(fully transparent) to 1(fully opaque). The default value is\n\t * 1. Display objects with alpha set to 0 are active,\n\t * even though they are invisible.\n\t */\n\tpublic alpha:number;\n\n\t/**\n\t * A value from the BlendMode class that specifies which blend mode to use. A\n\t * bitmap can be drawn internally in two ways. If you have a blend mode\n\t * enabled or an external clipping mask, the bitmap is drawn by adding a\n\t * bitmap-filled square shape to the vector render. If you attempt to set\n\t * this property to an invalid value, Flash runtimes set the value to\n\t * BlendMode.NORMAL.\n\t *\n\t *

The blendMode property affects each pixel of the display\n\t * object. Each pixel is composed of three constituent colors(red, green,\n\t * and blue), and each constituent color has a value between 0x00 and 0xFF.\n\t * Flash Player or Adobe AIR compares each constituent color of one pixel in\n\t * the movie clip with the corresponding color of the pixel in the\n\t * background. For example, if blendMode is set to\n\t * BlendMode.LIGHTEN, Flash Player or Adobe AIR compares the red\n\t * value of the display object with the red value of the background, and uses\n\t * the lighter of the two as the value for the red component of the displayed\n\t * color.

\n\t *\n\t *

The following table describes the blendMode settings. The\n\t * BlendMode class defines string values you can use. The illustrations in\n\t * the table show blendMode values applied to a circular display\n\t * object(2) superimposed on another display object(1).

\n\t */\n\tpublic blendMode:BlendMode;\n\n\t/**\n\t *\n\t */\n\tpublic get bounds():BoundingVolumeBase\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._pBounds;\n\t}\n\n\tpublic set bounds(value:BoundingVolumeBase)\n\t{\n\t\tif (this._pBounds == value)\n\t\t\treturn;\n\n\t\tthis._pBounds = value;\n\n\t\tthis._worldBounds = value.clone();\n\n\t\tthis.pInvalidateBounds();\n\n\t\tif (this._boundsVisible)\n\t\t\tthis._partitionNode._iUpdateEntityBounds();\n\t}\n\n\t/**\n\t * If set to true, NME will use the software renderer to cache\n\t * an internal bitmap representation of the display object. For native targets,\n\t * this is often much slower than the default hardware renderer. When you\n\t * are using the Flash target, this caching may increase performance for display\n\t * objects that contain complex vector content.\n\t *\n\t *

All vector data for a display object that has a cached bitmap is drawn\n\t * to the bitmap instead of the main display. If\n\t * cacheAsBitmapMatrix is null or unsupported, the bitmap is\n\t * then copied to the main display as unstretched, unrotated pixels snapped\n\t * to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent\n\t * object. If the bounds of the bitmap change, the bitmap is recreated\n\t * instead of being stretched.

\n\t *\n\t *

If cacheAsBitmapMatrix is non-null and supported, the\n\t * object is drawn to the off-screen bitmap using that matrix and the\n\t * stretched and/or rotated results of that rendering are used to draw the\n\t * object to the main display.

\n\t *\n\t *

No internal bitmap is created unless the cacheAsBitmap\n\t * property is set to true.

\n\t *\n\t *

After you set the cacheAsBitmap property to\n\t * true, the rendering does not change, however the display\n\t * object performs pixel snapping automatically. The animation speed can be\n\t * significantly faster depending on the complexity of the vector content.\n\t *

\n\t *\n\t *

The cacheAsBitmap property is automatically set to\n\t * true whenever you apply a filter to a display object(when\n\t * its filter array is not empty), and if a display object has a\n\t * filter applied to it, cacheAsBitmap is reported as\n\t * true for that display object, even if you set the property to\n\t * false. If you clear all filters for a display object, the\n\t * cacheAsBitmap setting changes to what it was last set to.

\n\t *\n\t *

A display object does not use a bitmap even if the\n\t * cacheAsBitmap property is set to true and\n\t * instead renders from vector data in the following cases:

\n\t *\n\t *
    \n\t *
  • The bitmap is too large. In AIR 1.5 and Flash Player 10, the maximum\n\t * size for a bitmap image is 8,191 pixels in width or height, and the total\n\t * number of pixels cannot exceed 16,777,215 pixels.(So, if a bitmap image\n\t * is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9\n\t * and earlier, the limitation is is 2880 pixels in height and 2,880 pixels\n\t * in width.
  • \n\t *
  • The bitmap fails to allocate(out of memory error).
  • \n\t *
\n\t *\n\t *

The cacheAsBitmap property is best used with movie clips\n\t * that have mostly static content and that do not scale and rotate\n\t * frequently. With such movie clips, cacheAsBitmap can lead to\n\t * performance increases when the movie clip is translated(when its x\n\t * and y position is changed).

\n\t */\n\tpublic cacheAsBitmap:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic castsShadows:boolean = true;\n\n\t/**\n\t * Indicates the depth of the display object, in pixels. The depth is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the depth property, the scaleZ property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content (such as an empty sprite) has a depth of 0, even if you try to\n\t * set depth to a different value.

\n\t */\n\tpublic get depth():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._depth;\n\t}\n\n\tpublic set depth(val:number)\n\t{\n\t\tif (this._depth == val)\n\t\t\treturn;\n\n\t\tthis._depth == val;\n\n\t\tthis._pScaleZ = val/this.bounds.aabb.depth;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis.\n\t */\n\tpublic get eulers():Vector3D\n\t{\n\t\tthis._eulers.x = this._rotationX*MathConsts.RADIANS_TO_DEGREES;\n\t\tthis._eulers.y = this._rotationY*MathConsts.RADIANS_TO_DEGREES;\n\t\tthis._eulers.z = this._rotationZ*MathConsts.RADIANS_TO_DEGREES;\n\n\t\treturn this._eulers;\n\t}\n\n\tpublic set eulers(value:Vector3D)\n\t{\n\t\tthis._rotationX = value.x*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationY = value.y*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationZ = value.z*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * An object that can contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * An indexed array that contains each filter object currently associated\n\t * with the display object. The flash.filters package contains several\n\t * classes that define specific filters you can use.\n\t *\n\t *

Filters can be applied in Flash Professional at design time, or at run\n\t * time by using ActionScript code. To apply a filter by using ActionScript,\n\t * you must make a temporary copy of the entire filters array,\n\t * modify the temporary array, then assign the value of the temporary array\n\t * back to the filters array. You cannot directly add a new\n\t * filter object to the filters array.

\n\t *\n\t *

To add a filter by using ActionScript, perform the following steps\n\t * (assume that the target display object is named\n\t * myDisplayObject):

\n\t *\n\t *
    \n\t *
  1. Create a new filter object by using the constructor method of your\n\t * chosen filter class.
  2. \n\t *
  3. Assign the value of the myDisplayObject.filters array\n\t * to a temporary array, such as one named myFilters.
  4. \n\t *
  5. Add the new filter object to the myFilters temporary\n\t * array.
  6. \n\t *
  7. Assign the value of the temporary array to the\n\t * myDisplayObject.filters array.
  8. \n\t *
\n\t *\n\t *

If the filters array is undefined, you do not need to use\n\t * a temporary array. Instead, you can directly assign an array literal that\n\t * contains one or more filter objects that you create. The first example in\n\t * the Examples section adds a drop shadow filter by using code that handles\n\t * both defined and undefined filters arrays.

\n\t *\n\t *

To modify an existing filter object, you must use the technique of\n\t * modifying a copy of the filters array:

\n\t *\n\t *
    \n\t *
  1. Assign the value of the filters array to a temporary\n\t * array, such as one named myFilters.
  2. \n\t *
  3. Modify the property by using the temporary array,\n\t * myFilters. For example, to set the quality property of the\n\t * first filter in the array, you could use the following code:\n\t * myFilters[0].quality = 1;
  4. \n\t *
  5. Assign the value of the temporary array to the filters\n\t * array.
  6. \n\t *
\n\t *\n\t *

At load time, if a display object has an associated filter, it is\n\t * marked to cache itself as a transparent bitmap. From this point forward,\n\t * as long as the display object has a valid filter list, the player caches\n\t * the display object as a bitmap. This source bitmap is used as a source\n\t * image for the filter effects. Each display object usually has two bitmaps:\n\t * one with the original unfiltered source display object and another for the\n\t * final image after filtering. The final image is used when rendering. As\n\t * long as the display object does not change, the final image does not need\n\t * updating.

\n\t *\n\t *

The flash.filters package includes classes for filters. For example, to\n\t * create a DropShadow filter, you would write:

\n\t *\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader output type is not compatible with\n\t * this operation(the shader must specify a\n\t * pixel4 output).\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader doesn't specify any image input or\n\t * the first input is not an image4 input.\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader specifies an image input that isn't\n\t * provided.\n\t * @throws ArgumentError When filters includes a ShaderFilter, a\n\t * ByteArray or Vector. instance as a shader\n\t * input, and the width and\n\t * height properties aren't specified for\n\t * the ShaderInput object, or the specified values\n\t * don't match the amount of data in the input data.\n\t * See the ShaderInput.input property for\n\t * more information.\n\t */\n//\t\tpublic filters:Array;\n\n\t/**\n\t * Indicates the height of the display object, in pixels. The height is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the height property, the scaleY property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content (such as an empty sprite) has a height of 0, even if you try to\n\t * set height to a different value.

\n\t */\n\tpublic get height():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._height;\n\t}\n\n\tpublic set height(val:number)\n\t{\n\t\tif (this._height == val)\n\t\t\treturn;\n\n\t\tthis._height == val;\n\n\t\tthis._pScaleY = val/this.bounds.aabb.height;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the instance container index of the DisplayObject. The object can be\n\t * identified in the child list of its parent display object container by\n\t * calling the getChildByIndex() method of the display object\n\t * container.\n\t *\n\t *

If the DisplayObject has no parent container, index defaults to 0.

\n\t */\n\tpublic get index():number\n\t{\n\t\tif (this._pParent)\n\t\t\treturn this._pParent.getChildIndex(this);\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get inverseSceneTransform():Matrix3D\n\t{\n\t\tif (this._inverseSceneTransformDirty) {\n\t\t\tthis._inverseSceneTransform.copyFrom(this.sceneTransform);\n\t\t\tthis._inverseSceneTransform.invert();\n\t\t\tthis._inverseSceneTransformDirty = false;\n\t\t}\n\t\treturn this._inverseSceneTransform;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get ignoreTransform():boolean\n\t{\n\t\treturn this._pIgnoreTransform;\n\t}\n\n\tpublic set ignoreTransform(value:boolean)\n\t{\n\t\tif (this._pIgnoreTransform == value)\n\t\t\treturn;\n\n\t\tthis._pIgnoreTransform = value;\n\n\t\tif (value) {\n\t\t\tthis._pSceneTransform.identity();\n\t\t\tthis._scenePosition.setTo(0, 0, 0);\n\t\t}\n\n\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get isEntity()\n\t{\n\t\treturn this._pIsEntity;\n\t}\n\t/**\n\t * Returns a LoaderInfo object containing information about loading the file\n\t * to which this display object belongs. The loaderInfo property\n\t * is defined only for the root display object of a SWF file or for a loaded\n\t * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the\n\t * loaderInfo object associated with the SWF file that contains\n\t * a display object named myDisplayObject, use\n\t * myDisplayObject.root.loaderInfo.\n\t *\n\t *

A large SWF file can monitor its download by calling\n\t * this.root.loaderInfo.addEventListener(Event.COMPLETE,\n\t * func).

\n\t */\n\tpublic get loaderInfo():LoaderInfo\n\t{\n\t\treturn this._loaderInfo;\n\t}\n\n\t/**\n\t * The calling display object is masked by the specified mask\n\t * object. To ensure that masking works when the Stage is scaled, the\n\t * mask display object must be in an active part of the display\n\t * list. The mask object itself is not drawn. Set\n\t * mask to null to remove the mask.\n\t *\n\t *

To be able to scale a mask object, it must be on the display list. To\n\t * be able to drag a mask Sprite object(by calling its\n\t * startDrag() method), it must be on the display list. To call\n\t * the startDrag() method for a mask sprite based on a\n\t * mouseDown event being dispatched by the sprite, set the\n\t * sprite's buttonMode property to true.

\n\t *\n\t *

When display objects are cached by setting the\n\t * cacheAsBitmap property to true an the\n\t * cacheAsBitmapMatrix property to a Matrix object, both the\n\t * mask and the display object being masked must be part of the same cached\n\t * bitmap. Thus, if the display object is cached, then the mask must be a\n\t * child of the display object. If an ancestor of the display object on the\n\t * display list is cached, then the mask must be a child of that ancestor or\n\t * one of its descendents. If more than one ancestor of the masked object is\n\t * cached, then the mask must be a descendent of the cached container closest\n\t * to the masked object in the display list.

\n\t *\n\t *

Note: A single mask object cannot be used to mask\n\t * more than one calling display object. When the mask is\n\t * assigned to a second display object, it is removed as the mask of the\n\t * first object, and that object's mask property becomes\n\t * null.

\n\t */\n\tpublic mask:DisplayObject;\n\n\t/**\n\t * Specifies whether this object receives mouse, or other user input,\n\t * messages. The default value is true, which means that by\n\t * default any InteractiveObject instance that is on the display list\n\t * receives mouse events or other user input events. If\n\t * mouseEnabled is set to false, the instance does\n\t * not receive any mouse events(or other user input events like keyboard\n\t * events). Any children of this instance on the display list are not\n\t * affected. To change the mouseEnabled behavior for all\n\t * children of an object on the display list, use\n\t * flash.display.DisplayObjectContainer.mouseChildren.\n\t *\n\t *

No event is dispatched by setting this property. You must use the\n\t * addEventListener() method to create interactive\n\t * functionality.

\n\t */\n\tpublic get mouseEnabled():boolean\n\t{\n\t\treturn this._explicitMouseEnabled;\n\t}\n\n\tpublic set mouseEnabled(value:boolean)\n\t{\n\t\tif (this._explicitMouseEnabled == value)\n\t\t\treturn;\n\n\t\tthis._explicitMouseEnabled = value;\n\n\t\tthis._pUpdateImplicitMouseEnabled(this._pParent? this._pParent.mouseChildren : true);\n\t}\n\n\n\t/**\n\t * Indicates the x coordinate of the mouse or user input device position, in\n\t * pixels.\n\t *\n\t *

Note: For a DisplayObject that has been rotated, the returned x\n\t * coordinate will reflect the non-rotated object.

\n\t */\n\tpublic get mouseX():number\n\t{\n\t\treturn this._mouseX;\n\t}\n\n\t/**\n\t * Indicates the y coordinate of the mouse or user input device position, in\n\t * pixels.\n\t *\n\t *

Note: For a DisplayObject that has been rotated, the returned y\n\t * coordinate will reflect the non-rotated object.

\n\t */\n\tpublic get mouseY():number\n\t{\n\t\treturn this._mouseY;\n\t}\n\n\t/**\n\t * Indicates the instance name of the DisplayObject. The object can be\n\t * identified in the child list of its parent display object container by\n\t * calling the getChildByName() method of the display object\n\t * container.\n\t *\n\t * @throws IllegalOperationError If you are attempting to set this property\n\t * on an object that was placed on the timeline\n\t * in the Flash authoring tool.\n\t */\n\tpublic name:string;\n\n\t/**\n\t *\n\t */\n\tpublic orientationMode:string = OrientationMode.DEFAULT;\n\n\t/**\n\t * Indicates the DisplayObjectContainer object that contains this display\n\t * object. Use the parent property to specify a relative path to\n\t * display objects that are above the current display object in the display\n\t * list hierarchy.\n\t *\n\t *

You can use parent to move up multiple levels in the\n\t * display list as in the following:

\n\t *\n\t * @throws SecurityError The parent display object belongs to a security\n\t * sandbox to which you do not have access. You can\n\t * avoid this situation by having the parent movie call\n\t * the Security.allowDomain() method.\n\t */\n\tpublic get parent():DisplayObjectContainer\n\t{\n\t\treturn this._pParent;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get partition():Partition\n\t{\n\t\treturn this._explicitPartition;\n\t}\n\n\tpublic set partition(value:Partition)\n\t{\n\t\tif (this._explicitPartition == value)\n\t\t\treturn;\n\n\t\tif (this._pScene && this._explicitPartition)\n\t\t\tthis._pScene.iUnregisterPartition(this._explicitPartition);\n\n\t\tthis._explicitPartition = value;\n\n\t\tif (this._pScene && value)\n\t\t\tthis._pScene.iRegisterPartition(value);\n\n\t\tthis._pUpdateImplicitPartition(this._pParent? this._pParent._iAssignedPartition : null);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get partitionNode():EntityNode\n\t{\n\t\tif (!this._partitionNode)\n\t\t\tthis._partitionNode = this.pCreateEntityPartitionNode();\n\n\t\treturn this._partitionNode;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get pickingCollider():IPickingCollider\n\t{\n\t\treturn this._pPickingCollider;\n\t}\n\n\tpublic set pickingCollider(value:IPickingCollider)\n\t{\n\t\tthis._pPickingCollider = value;\n\t}\n\n\t/**\n\t * Defines the local point around which the object rotates.\n\t */\n\tpublic get pivot():Vector3D\n\t{\n\t\treturn this._pivot;\n\t}\n\n\n\tpublic set pivot(pivot:Vector3D)\n\t{\n\t\tthis._pivot = pivot.clone();\n\n\t\tthis.invalidatePivot();\n\t}\n\n\t/**\n\t * For a display object in a loaded SWF file, the root property\n\t * is the top-most display object in the portion of the display list's tree\n\t * structure represented by that SWF file. For a Bitmap object representing a\n\t * loaded image file, the root property is the Bitmap object\n\t * itself. For the instance of the main class of the first SWF file loaded,\n\t * the root property is the display object itself. The\n\t * root property of the Stage object is the Stage object itself.\n\t * The root property is set to null for any display\n\t * object that has not been added to the display list, unless it has been\n\t * added to a display object container that is off the display list but that\n\t * is a child of the top-most display object in a loaded SWF file.\n\t *\n\t *

For example, if you create a new Sprite object by calling the\n\t * Sprite() constructor method, its root property\n\t * is null until you add it to the display list(or to a display\n\t * object container that is off the display list but that is a child of the\n\t * top-most display object in a SWF file).

\n\t *\n\t *

For a loaded SWF file, even though the Loader object used to load the\n\t * file may not be on the display list, the top-most display object in the\n\t * SWF file has its root property set to itself. The Loader\n\t * object does not have its root property set until it is added\n\t * as a child of a display object for which the root property is\n\t * set.

\n\t */\n\tpublic get root():DisplayObjectContainer\n\t{\n\t\treturn this._root;\n\t}\n\n\t/**\n\t * Indicates the rotation of the DisplayObject instance, in degrees, from its\n\t * original orientation. Values from 0 to 180 represent clockwise rotation;\n\t * values from 0 to -180 represent counterclockwise rotation. Values outside\n\t * this range are added to or subtracted from 360 to obtain a value within\n\t * the range. For example, the statement my_video.rotation = 450\n\t * is the same as my_video.rotation = 90.\n\t */\n\tpublic rotation:number; //TODO\n\n\t/**\n\t * Indicates the x-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationX():number\n\t{\n\t\treturn this._rotationX*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationX(val:number)\n\t{\n\t\tif (this.rotationX == val)\n\t\t\treturn;\n\n\t\tthis._rotationX = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Indicates the y-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationY():number\n\t{\n\t\treturn this._rotationY*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationY(val:number)\n\t{\n\t\tif (this.rotationY == val)\n\t\t\treturn;\n\n\t\tthis._rotationY = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Indicates the z-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationZ():number\n\t{\n\t\treturn this._rotationZ*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationZ(val:number)\n\t{\n\t\tif (this.rotationZ == val)\n\t\t\treturn;\n\n\t\tthis._rotationZ = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * The current scaling grid that is in effect. If set to null,\n\t * the entire display object is scaled normally when any scale transformation\n\t * is applied.\n\t *\n\t *

When you define the scale9Grid property, the display\n\t * object is divided into a grid with nine regions based on the\n\t * scale9Grid rectangle, which defines the center region of the\n\t * grid. The eight other regions of the grid are the following areas:

\n\t *\n\t *
    \n\t *
  • The upper-left corner outside of the rectangle
  • \n\t *
  • The area above the rectangle
  • \n\t *
  • The upper-right corner outside of the rectangle
  • \n\t *
  • The area to the left of the rectangle
  • \n\t *
  • The area to the right of the rectangle
  • \n\t *
  • The lower-left corner outside of the rectangle
  • \n\t *
  • The area below the rectangle
  • \n\t *
  • The lower-right corner outside of the rectangle
  • \n\t *
\n\t *\n\t *

You can think of the eight regions outside of the center(defined by\n\t * the rectangle) as being like a picture frame that has special rules\n\t * applied to it when scaled.

\n\t *\n\t *

When the scale9Grid property is set and a display object\n\t * is scaled, all text and gradients are scaled normally; however, for other\n\t * types of objects the following rules apply:

\n\t *\n\t *
    \n\t *
  • Content in the center region is scaled normally.
  • \n\t *
  • Content in the corners is not scaled.
  • \n\t *
  • Content in the top and bottom regions is scaled horizontally only.\n\t * Content in the left and right regions is scaled vertically only.
  • \n\t *
  • All fills(including bitmaps, video, and gradients) are stretched to\n\t * fit their shapes.
  • \n\t *
\n\t *\n\t *

If a display object is rotated, all subsequent scaling is normal(and\n\t * the scale9Grid property is ignored).

\n\t *\n\t *

For example, consider the following display object and a rectangle that\n\t * is applied as the display object's scale9Grid:

\n\t *\n\t *

A common use for setting scale9Grid is to set up a display\n\t * object to be used as a component, in which edge regions retain the same\n\t * width when the component is scaled.

\n\t *\n\t * @throws ArgumentError If you pass an invalid argument to the method.\n\t */\n\tpublic scale9Grid:Rectangle;\n\n\t/**\n\t * Indicates the horizontal scale(percentage) of the object as applied from\n\t * the registration point. The default registration point is(0,0). 1.0\n\t * equals 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x and\n\t * y property values, which are defined in whole pixels.

\n\t */\n\tpublic get scaleX():number\n\t{\n\t\treturn this._pScaleX;\n\t}\n\n\tpublic set scaleX(val:number)\n\t{\n\t\tif (this._pScaleX == val)\n\t\t\treturn;\n\n\t\tthis._pScaleX = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the vertical scale(percentage) of an object as applied from the\n\t * registration point of the object. The default registration point is(0,0).\n\t * 1.0 is 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x and\n\t * y property values, which are defined in whole pixels.

\n\t */\n\tpublic get scaleY():number\n\t{\n\t\treturn this._pScaleY;\n\t}\n\n\tpublic set scaleY(val:number)\n\t{\n\t\tif (this._pScaleY == val)\n\t\t\treturn;\n\n\t\tthis._pScaleY = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the depth scale(percentage) of an object as applied from the\n\t * registration point of the object. The default registration point is(0,0).\n\t * 1.0 is 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x,\n\t * y and z property values, which are defined in\n\t * whole pixels.

\n\t */\n\tpublic get scaleZ():number\n\t{\n\t\treturn this._pScaleZ;\n\t}\n\n\tpublic set scaleZ(val:number)\n\t{\n\t\tif (this._pScaleZ == val)\n\t\t\treturn;\n\n\t\tthis._pScaleZ = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scene():Scene\n\t{\n\t\treturn this._pScene;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scenePosition():Vector3D\n\t{\n\t\tif (this._scenePositionDirty) {\n\t\t\tif (!this._pivotZero && this.alignmentMode == AlignmentMode.PIVOT_POINT) {\n\t\t\t\tvar pivotScale:Vector3D = new Vector3D(this._pivot.x/this._pScaleX, this._pivot.y/this._pScaleY, this._pivot.z/this._pScaleZ)\n\t\t\t\t\tthis._scenePosition = this.sceneTransform.transformVector(pivotScale);\n\t\t\t\t//this._scenePosition.decrementBy(new Vector3D(this._pivot.x*this._pScaleX, this._pivot.y*this._pScaleY, this._pivot.z*this._pScaleZ));\n\t\t\t} else {\n\t\t\t\tthis.sceneTransform.copyColumnTo(3, this._scenePosition);\n\t\t\t}\n\n\t\t\tthis._scenePositionDirty = false;\n\t\t}\n\t\treturn this._scenePosition;\n\t}\n\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._pSceneTransform;\n\t}\n\n\t/**\n\t * The scroll rectangle bounds of the display object. The display object is\n\t * cropped to the size defined by the rectangle, and it scrolls within the\n\t * rectangle when you change the x and y properties\n\t * of the scrollRect object.\n\t *\n\t *

The properties of the scrollRect Rectangle object use the\n\t * display object's coordinate space and are scaled just like the overall\n\t * display object. The corner bounds of the cropped window on the scrolling\n\t * display object are the origin of the display object(0,0) and the point\n\t * defined by the width and height of the rectangle. They are not centered\n\t * around the origin, but use the origin to define the upper-left corner of\n\t * the area. A scrolled display object always scrolls in whole pixel\n\t * increments.

\n\t *\n\t *

You can scroll an object left and right by setting the x\n\t * property of the scrollRect Rectangle object. You can scroll\n\t * an object up and down by setting the y property of the\n\t * scrollRect Rectangle object. If the display object is rotated\n\t * 90° and you scroll it left and right, the display object actually scrolls\n\t * up and down.

\n\t */\n\tpublic scrollRect:Rectangle;\n\n\t/**\n\t *\n\t */\n\tpublic get shaderPickingDetails():boolean\n\t{\n\t\treturn this._shaderPickingDetails;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get boundsVisible():boolean\n\t{\n\t\treturn this._boundsVisible;\n\t}\n\n\tpublic set boundsVisible(value:boolean)\n\t{\n\t\tif (value == this._boundsVisible)\n\t\t\treturn;\n\n\t\tthis._boundsVisible = value;\n\n\t\tthis._partitionNode.boundsVisible = value;\n\t}\n\n\t/**\n\t * An object with properties pertaining to a display object's matrix, color\n\t * transform, and pixel bounds. The specific properties - matrix,\n\t * colorTransform, and three read-only properties\n\t * (concatenatedMatrix, concatenatedColorTransform,\n\t * and pixelBounds) - are described in the entry for the\n\t * Transform class.\n\t *\n\t *

Each of the transform object's properties is itself an object. This\n\t * concept is important because the only way to set new values for the matrix\n\t * or colorTransform objects is to create a new object and copy that object\n\t * into the transform.matrix or transform.colorTransform property.

\n\t *\n\t *

For example, to increase the tx value of a display\n\t * object's matrix, you must make a copy of the entire matrix object, then\n\t * copy the new object into the matrix property of the transform object:

\n\t *
 public myMatrix:Matrix =\n\t * myDisplayObject.transform.matrix; myMatrix.tx += 10;\n\t * myDisplayObject.transform.matrix = myMatrix; 
\n\t *\n\t *

You cannot directly set the tx property. The following\n\t * code has no effect on myDisplayObject:

\n\t *
 myDisplayObject.transform.matrix.tx +=\n\t * 10; 
\n\t *\n\t *

You can also copy an entire transform object and assign it to another\n\t * display object's transform property. For example, the following code\n\t * copies the entire transform object from myOldDisplayObj to\n\t * myNewDisplayObj:

\n\t * myNewDisplayObj.transform = myOldDisplayObj.transform;\n\t *\n\t *

The resulting display object, myNewDisplayObj, now has the\n\t * same values for its matrix, color transform, and pixel bounds as the old\n\t * display object, myOldDisplayObj.

\n\t *\n\t *

Note that AIR for TV devices use hardware acceleration, if it is\n\t * available, for color transforms.

\n\t */\n\tpublic get transform():Transform\n\t{\n\t\treturn this._transform;\n\t}\n\n\t/**\n\t * Whether or not the display object is visible. Display objects that are not\n\t * visible are disabled. For example, if visible=false for an\n\t * InteractiveObject instance, it cannot be clicked.\n\t */\n\tpublic get visible():boolean\n\t{\n\t\treturn this._explicitVisibility;\n\t}\n\n\tpublic set visible(value:boolean)\n\t{\n\t\tif (this._explicitVisibility == value)\n\t\t\treturn;\n\n\t\tthis._explicitVisibility = value;\n\n\t\tthis._pUpdateImplicitVisibility(this._pParent? this._pParent._iIsVisible() : true);\n\t}\n\n\t/**\n\t * Indicates the width of the display object, in pixels. The width is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the width property, the scaleX property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content(such as an empty sprite) has a width of 0, even if you try to set\n\t * width to a different value.

\n\t */\n\tpublic get width():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._width;\n\t}\n\n\tpublic set width(val:number)\n\t{\n\t\tif (this._width == val)\n\t\t\treturn;\n\n\t\tthis._width == val;\n\n\t\tthis._pScaleX = val/this.bounds.aabb.width;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get worldBounds():BoundingVolumeBase\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the bounds of the entity, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tif (this._worldBoundsInvalid) {\n\t\t\tthis._worldBoundsInvalid = false;\n\t\t\tthis._worldBounds.transformFrom(this.bounds, this.sceneTransform);\n\t\t}\n\n\t\treturn this._worldBounds;\n\t}\n\n\t/**\n\t * Indicates the x coordinate of the DisplayObject instance relative\n\t * to the local coordinates of the parent DisplayObjectContainer. If the\n\t * object is inside a DisplayObjectContainer that has transformations, it is\n\t * in the local coordinate system of the enclosing DisplayObjectContainer.\n\t * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\n\t * DisplayObjectContainer's children inherit a coordinate system that is\n\t * rotated 90° counterclockwise. The object's coordinates refer to the\n\t * registration point position.\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._x;\n\t}\n\n\tpublic set x(val:number)\n\t{\n\t\tif (this._x == val)\n\t\t\treturn;\n\n\t\tthis._x = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Indicates the y coordinate of the DisplayObject instance relative\n\t * to the local coordinates of the parent DisplayObjectContainer. If the\n\t * object is inside a DisplayObjectContainer that has transformations, it is\n\t * in the local coordinate system of the enclosing DisplayObjectContainer.\n\t * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\n\t * DisplayObjectContainer's children inherit a coordinate system that is\n\t * rotated 90° counterclockwise. The object's coordinates refer to the\n\t * registration point position.\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._y;\n\t}\n\n\tpublic set y(val:number)\n\t{\n\t\tif (this._y == val)\n\t\t\treturn;\n\n\t\tthis._y = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Indicates the z coordinate position along the z-axis of the DisplayObject\n\t * instance relative to the 3D parent container. The z property is used for\n\t * 3D coordinates, not screen or pixel coordinates.\n\t *\n\t *

When you set a z property for a display object to\n\t * something other than the default value of 0, a corresponding\n\t * Matrix3D object is automatically created. for adjusting a display object's\n\t * position and orientation in three dimensions. When working with the\n\t * z-axis, the existing behavior of x and y properties changes from screen or\n\t * pixel coordinates to positions relative to the 3D parent container.

\n\t *\n\t *

For example, a child of the _root at position x = 100, y =\n\t * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn\n\t * wherever the 3D projection calculation puts it. The calculation is:

\n\t *\n\t *

(x~~cameraFocalLength/cameraRelativeZPosition,\n\t * y~~cameraFocalLength/cameraRelativeZPosition)

\n\t */\n\tpublic get z():number\n\t{\n\t\treturn this._z;\n\t}\n\n\tpublic set z(val:number)\n\t{\n\t\tif (this._z == val)\n\t\t\treturn;\n\n\t\tthis._z = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get zOffset():number\n\t{\n\t\treturn this._zOffset;\n\t}\n\n\tpublic set zOffset(value:number)\n\t{\n\t\tthis._zOffset = value;\n\t}\n\n\t/**\n\t * Creates a new DisplayObject instance.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t// Cached vector of transformation components used when\n\t\t// recomposing the transform matrix in updateTransform()\n\n\t\tthis._transformComponents = new Array(3);//_transformComponents = new Vector.(3, true);\n\n\t\tthis._transformComponents[0] = this._pos;\n\t\tthis._transformComponents[1] = this._rot;\n\t\tthis._transformComponents[2] = this._sca;\n\n\t\t//creation of associated transform object\n\t\tthis._transform = new Transform(this);\n\n\t\tthis._matrix3D.identity();\n\n\t\tthis._flipY.appendScale(1, -1, 1);\n\n\t\tthis._pBounds = this.pCreateDefaultBoundingVolume();\n\n\t\tthis._worldBounds = this.pCreateDefaultBoundingVolume();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic addEventListener(type:string, listener:Function)\n\t{\n\t\tsuper.addEventListener(type, listener);\n\n\t\tswitch (type) {\n\t\t\tcase DisplayObjectEvent.POSITION_CHANGED:\n\t\t\t\tthis._listenToPositionChanged = true;\n\t\t\t\tbreak;\n\t\t\tcase DisplayObjectEvent.ROTATION_CHANGED:\n\t\t\t\tthis._listenToRotationChanged = true;\n\t\t\t\tbreak;\n\t\t\tcase DisplayObjectEvent.SCALE_CHANGED:\n\t\t\t\tthis._listenToScaleChanged = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:DisplayObject = new DisplayObject();\n\t\tclone.pivot = this.pivot;\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.name = name;\n\n\t\t// todo: implement for all subtypes\n\t\treturn clone;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tif (this.parent)\n\t\t\tthis.parent.removeChild(this);\n\n\t\twhile (this._pRenderables.length)\n\t\t\tthis._pRenderables[0].dispose();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic disposeAsset()\n\t{\n\t\tthis.dispose();\n\t}\n\n\t/**\n\t * Returns a rectangle that defines the area of the display object relative\n\t * to the coordinate system of the targetCoordinateSpace object.\n\t * Consider the following code, which shows how the rectangle returned can\n\t * vary depending on the targetCoordinateSpace parameter that\n\t * you pass to the method:\n\t *\n\t *

Note: Use the localToGlobal() and\n\t * globalToLocal() methods to convert the display object's local\n\t * coordinates to display coordinates, or display coordinates to local\n\t * coordinates, respectively.

\n\t *\n\t *

The getBounds() method is similar to the\n\t * getRect() method; however, the Rectangle returned by the\n\t * getBounds() method includes any strokes on shapes, whereas\n\t * the Rectangle returned by the getRect() method does not. For\n\t * an example, see the description of the getRect() method.

\n\t *\n\t * @param targetCoordinateSpace The display object that defines the\n\t * coordinate system to use.\n\t * @return The rectangle that defines the area of the display object relative\n\t * to the targetCoordinateSpace object's coordinate\n\t * system.\n\t */\n\tpublic getBounds(targetCoordinateSpace:DisplayObject):Rectangle\n\t{\n\t\treturn this._bounds; //TODO\n\t}\n\n\t/**\n\t * Returns a rectangle that defines the boundary of the display object, based\n\t * on the coordinate system defined by the targetCoordinateSpace\n\t * parameter, excluding any strokes on shapes. The values that the\n\t * getRect() method returns are the same or smaller than those\n\t * returned by the getBounds() method.\n\t *\n\t *

Note: Use localToGlobal() and\n\t * globalToLocal() methods to convert the display object's local\n\t * coordinates to Stage coordinates, or Stage coordinates to local\n\t * coordinates, respectively.

\n\t *\n\t * @param targetCoordinateSpace The display object that defines the\n\t * coordinate system to use.\n\t * @return The rectangle that defines the area of the display object relative\n\t * to the targetCoordinateSpace object's coordinate\n\t * system.\n\t */\n\tpublic getRect(targetCoordinateSpace:DisplayObject):Rectangle\n\t{\n\t\treturn this._bounds; //TODO\n\t}\n\n\t/**\n\t * Converts the point object from the Stage(global) coordinates\n\t * to the display object's(local) coordinates.\n\t *\n\t *

To use this method, first create an instance of the Point class. The\n\t * x and y values that you assign represent global coordinates\n\t * because they relate to the origin(0,0) of the main display area. Then\n\t * pass the Point instance as the parameter to the\n\t * globalToLocal() method. The method returns a new Point object\n\t * with x and y values that relate to the origin of the display\n\t * object instead of the origin of the Stage.

\n\t *\n\t * @param point An object created with the Point class. The Point object\n\t * specifies the x and y coordinates as\n\t * properties.\n\t * @return A Point object with coordinates relative to the display object.\n\t */\n\tpublic globalToLocal(point:Point):Point\n\t{\n\t\treturn point; //TODO\n\t}\n\n\t/**\n\t * Converts a two-dimensional point from the Stage(global) coordinates to a\n\t * three-dimensional display object's(local) coordinates.\n\t *\n\t *

To use this method, first create an instance of the Point class. The x\n\t * and y values that you assign to the Point object represent global\n\t * coordinates because they are relative to the origin(0,0) of the main\n\t * display area. Then pass the Point object to the\n\t * globalToLocal3D() method as the point parameter.\n\t * The method returns three-dimensional coordinates as a Vector3D object\n\t * containing x, y, and z values that\n\t * are relative to the origin of the three-dimensional display object.

\n\t *\n\t * @param point A two dimensional Point object representing global x and y\n\t * coordinates.\n\t * @return A Vector3D object with coordinates relative to the\n\t * three-dimensional display object.\n\t */\n\tpublic globalToLocal3D(point:Point):Vector3D\n\t{\n\t\treturn new Vector3D(); //TODO\n\t}\n\n\t/**\n\t * Evaluates the bounding box of the display object to see if it overlaps or\n\t * intersects with the bounding box of the obj display object.\n\t *\n\t * @param obj The display object to test against.\n\t * @return true if the bounding boxes of the display objects\n\t * intersect; false if not.\n\t */\n\tpublic hitTestObject(obj:DisplayObject):boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * Evaluates the display object to see if it overlaps or intersects with the\n\t * point specified by the x and y parameters. The\n\t * x and y parameters specify a point in the\n\t * coordinate space of the Stage, not the display object container that\n\t * contains the display object(unless that display object container is the\n\t * Stage).\n\t *\n\t * @param x The x coordinate to test against this object.\n\t * @param y The y coordinate to test against this object.\n\t * @param shapeFlag Whether to check against the actual pixels of the object\n\t * (true) or the bounding box\n\t * (false).\n\t * @return true if the display object overlaps or intersects\n\t * with the specified point; false otherwise.\n\t */\n\tpublic hitTestPoint(x:number, y:number, shapeFlag:boolean = false):boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\tvar localRayPosition:Vector3D = this.inverseSceneTransform.transformVector(rayPosition);\n\t\tvar localRayDirection:Vector3D = this.inverseSceneTransform.deltaTransformVector(rayDirection);\n\t\tvar pickingCollisionVO:PickingCollisionVO = this._iPickingCollisionVO;\n\n\t\tif (!pickingCollisionVO.localNormal)\n\t\t\tpickingCollisionVO.localNormal = new Vector3D();\n\n\t\tvar rayEntryDistance:number = this.bounds.rayIntersection(localRayPosition, localRayDirection, pickingCollisionVO.localNormal);\n\n\t\tif (rayEntryDistance < 0)\n\t\t\treturn false;\n\n\t\tpickingCollisionVO.rayEntryDistance = rayEntryDistance;\n\t\tpickingCollisionVO.localRayPosition = localRayPosition;\n\t\tpickingCollisionVO.localRayDirection = localRayDirection;\n\t\tpickingCollisionVO.rayPosition = rayPosition;\n\t\tpickingCollisionVO.rayDirection = rayDirection;\n\t\tpickingCollisionVO.rayOriginIsInsideBounds = rayEntryDistance == 0;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Converts a three-dimensional point of the three-dimensional display\n\t * object's(local) coordinates to a two-dimensional point in the Stage\n\t * (global) coordinates.\n\t *\n\t *

For example, you can only use two-dimensional coordinates(x,y) to draw\n\t * with the display.Graphics methods. To draw a\n\t * three-dimensional object, you need to map the three-dimensional\n\t * coordinates of a display object to two-dimensional coordinates. First,\n\t * create an instance of the Vector3D class that holds the x-, y-, and z-\n\t * coordinates of the three-dimensional display object. Then pass the\n\t * Vector3D object to the local3DToGlobal() method as the\n\t * point3d parameter. The method returns a two-dimensional Point\n\t * object that can be used with the Graphics API to draw the\n\t * three-dimensional object.

\n\t *\n\t * @param point3d A Vector3D object containing either a three-dimensional\n\t * point or the coordinates of the three-dimensional display\n\t * object.\n\t * @return A two-dimensional point representing a three-dimensional point in\n\t * two-dimensional space.\n\t */\n\tpublic local3DToGlobal(point3d:Vector3D):Point\n\t{\n\t\treturn new Point(); //TODO\n\t}\n\n\t/**\n\t * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D.\n\t *\n\t * @param target The vector defining the point to be looked at\n\t * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred\n\t */\n\tpublic lookAt(target:Vector3D, upAxis:Vector3D = null)\n\t{\n\n\t\tvar yAxis:Vector3D;\n\t\tvar zAxis:Vector3D;\n\t\tvar xAxis:Vector3D;\n\t\tvar raw:Array;\n\n\t\tif (upAxis == null)\n\t\t\tupAxis = Vector3D.Y_AXIS;\n\t\telse\n\t\t\tupAxis.normalize();\n\n\t\tzAxis = target.subtract(this._iMatrix3D.position);\n\t\tzAxis.normalize();\n\n\t\txAxis = upAxis.crossProduct(zAxis);\n\t\txAxis.normalize();\n\n\t\tif (xAxis.length < 0.05) {\n\t\t\txAxis.x = upAxis.y;\n\t\t\txAxis.y = upAxis.x;\n\t\t\txAxis.z = 0;\n\t\t\txAxis.normalize();\n\t\t}\n\n\t\tyAxis = zAxis.crossProduct(xAxis);\n\n\t\traw = Matrix3DUtils.RAW_DATA_CONTAINER;\n\n\t\traw[0] = xAxis.x;\n\t\traw[1] = xAxis.y;\n\t\traw[2] = xAxis.z;\n\t\traw[3] = 0;\n\n\t\traw[4] = yAxis.x;\n\t\traw[5] = yAxis.y;\n\t\traw[6] = yAxis.z;\n\t\traw[7] = 0;\n\n\t\traw[8] = zAxis.x;\n\t\traw[9] = zAxis.y;\n\t\traw[10] = zAxis.z;\n\t\traw[11] = 0;\n\n\t\tvar m:Matrix3D = new Matrix3D();\n\t\tm.copyRawDataFrom(raw);\n\n\t\tvar vec:Vector3D = m.decompose()[1];\n\n\t\tthis._rotationX = vec.x;\n\t\tthis._rotationY = vec.y;\n\t\tthis._rotationZ = vec.z;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Converts the point object from the display object's(local)\n\t * coordinates to the Stage(global) coordinates.\n\t *\n\t *

This method allows you to convert any given x and y\n\t * coordinates from values that are relative to the origin(0,0) of a\n\t * specific display object(local coordinates) to values that are relative to\n\t * the origin of the Stage(global coordinates).

\n\t *\n\t *

To use this method, first create an instance of the Point class. The\n\t * x and y values that you assign represent local coordinates\n\t * because they relate to the origin of the display object.

\n\t *\n\t *

You then pass the Point instance that you created as the parameter to\n\t * the localToGlobal() method. The method returns a new Point\n\t * object with x and y values that relate to the origin of the\n\t * Stage instead of the origin of the display object.

\n\t *\n\t * @param point The name or identifier of a point created with the Point\n\t * class, specifying the x and y coordinates as\n\t * properties.\n\t * @return A Point object with coordinates relative to the Stage.\n\t */\n\tpublic localToGlobal(point:Point):Point\n\t{\n\t\treturn new Point(); //TODO\n\t}\n\n\t/**\n\t * Moves the 3d object directly to a point in space\n\t *\n\t * @param dx The amount of movement along the local x axis.\n\t * @param dy The amount of movement along the local y axis.\n\t * @param dz The amount of movement along the local z axis.\n\t */\n\n\tpublic moveTo(dx:number, dy:number, dz:number)\n\t{\n\t\tif (this._x == dx && this._y == dy && this._z == dz)\n\t\t\treturn;\n\n\t\tthis._x = dx;\n\t\tthis._y = dy;\n\t\tthis._z = dz;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Moves the local point around which the object rotates.\n\t *\n\t * @param dx The amount of movement along the local x axis.\n\t * @param dy The amount of movement along the local y axis.\n\t * @param dz The amount of movement along the local z axis.\n\t */\n\tpublic movePivot(dx:number, dy:number, dz:number)\n\t{\n\t\tif (this._pivot == null)\n\t\t\tthis._pivot = new Vector3D();\n\n\t\tthis._pivot.x += dx;\n\t\tthis._pivot.y += dy;\n\t\tthis._pivot.z += dz;\n\n\t\tthis.invalidatePivot();\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local x-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic pitch(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.X_AXIS, angle);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\tif (this.orientationMode == OrientationMode.CAMERA_PLANE) {\n\t\t\tvar comps:Array = camera.sceneTransform.decompose();\n\t\t\tvar scale:Vector3D = comps[2];\n\t\t\tcomps[0] = this.scenePosition;\n\t\t\tscale.x = this._pScaleX;\n\t\t\tscale.y = this._pScaleY;\n\t\t\tscale.z = this._pScaleZ;\n\t\t\tthis._orientationMatrix.recompose(comps);\n\n\t\t\t//add in case of pivot\n\t\t\tif (!this._pivotZero && this.alignmentMode == AlignmentMode.PIVOT_POINT)\n\t\t\t\tthis._orientationMatrix.prependTranslation(-this._pivot.x/this._pScaleX, -this._pivot.y/this._pScaleY, -this._pivot.z/this._pScaleZ);\n\n\t\t\treturn this._orientationMatrix;\n\t\t}\n\n\t\treturn this.sceneTransform;\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local z-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic roll(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.Z_AXIS, angle);\n\t}\n\n\t/**\n\t * Rotates the 3d object around an axis by a defined angle\n\t *\n\t * @param axis The vector defining the axis of rotation\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic rotate(axis:Vector3D, angle:number)\n\t{\n\t\tvar m:Matrix3D = new Matrix3D();\n\t\tm.prependRotation(angle, axis);\n\n\t\tvar vec:Vector3D = m.decompose()[1];\n\n\t\tthis._rotationX += vec.x;\n\t\tthis._rotationY += vec.y;\n\t\tthis._rotationZ += vec.z;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Rotates the 3d object directly to a euler angle\n\t *\n\t * @param ax The angle in degrees of the rotation around the x axis.\n\t * @param ay The angle in degrees of the rotation around the y axis.\n\t * @param az The angle in degrees of the rotation around the z axis.\n\t */\n\tpublic rotateTo(ax:number, ay:number, az:number)\n\t{\n\t\tthis._rotationX = ax*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationY = ay*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationZ = az*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic removeEventListener(type:string, listener:Function)\n\t{\n\t\tsuper.removeEventListener(type, listener);\n\n\t\tif (this.hasEventListener(type, listener))\n\t\t\treturn;\n\n\t\tswitch (type) {\n\t\t\tcase DisplayObjectEvent.POSITION_CHANGED:\n\t\t\t\tthis._listenToPositionChanged = false;\n\t\t\t\tbreak;\n\n\t\t\tcase DisplayObjectEvent.ROTATION_CHANGED:\n\t\t\t\tthis._listenToRotationChanged = false;\n\t\t\t\tbreak;\n\n\t\t\tcase DisplayObjectEvent.SCALE_CHANGED:\n\t\t\t\tthis._listenToScaleChanged = false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Moves the 3d object along a vector by a defined length\n\t *\n\t * @param axis The vector defining the axis of movement\n\t * @param distance The length of the movement\n\t */\n\tpublic translate(axis:Vector3D, distance:number)\n\t{\n\t\tvar x:number = axis.x, y:number = axis.y, z:number = axis.z;\n\t\tvar len:number = distance/Math.sqrt(x*x + y*y + z*z);\n\n\t\tthis._x += x*len;\n\t\tthis._y += y*len;\n\t\tthis._z += z*len;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Moves the 3d object along a vector by a defined length\n\t *\n\t * @param axis The vector defining the axis of movement\n\t * @param distance The length of the movement\n\t */\n\tpublic translateLocal(axis:Vector3D, distance:number)\n\t{\n\t\tvar x:number = axis.x, y:number = axis.y, z:number = axis.z;\n\t\tvar len:number = distance/Math.sqrt(x*x + y*y + z*z);\n\n\t\tthis._iMatrix3D.prependTranslation(x*len, y*len, z*len);\n\n\t\tthis._matrix3D.copyColumnTo(3, this._pos);\n\n\t\tthis._x = this._pos.x;\n\t\tthis._y = this._pos.y;\n\t\tthis._z = this._pos.z;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local y-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic yaw(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.Y_AXIS, angle);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iController:ControllerBase;\n\n\t/**\n\t * @internal\n\t */\n\tpublic get _iAssignedPartition():Partition\n\t{\n\t\treturn this._pImplicitPartition;\n\t}\n\n\t/**\n\t * The transformation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t *\n\t * @internal\n\t */\n\tpublic get _iMatrix3D():Matrix3D\n\t{\n\t\tif (this._matrix3DDirty)\n\t\t\tthis._pUpdateMatrix3D();\n\n\t\treturn this._matrix3D;\n\t}\n\n\tpublic set _iMatrix3D(val:Matrix3D)\n\t{\n\n\t\t// TODO: From AS3 - Do we still need this in JS ?\n\t\t//ridiculous matrix error\n\t\t/*\n\t\tif (!val.rawData[0]) {\n\n\t\t\tvar raw:number[] = Matrix3DUtils.RAW_DATA_CONTAINER;\n\t\t\tval.copyRawDataTo(raw);\n\t\t\traw[0] = this._smallestNumber;\n\t\t\tval.copyRawDataFrom(raw);\n\t\t}\n\t\t//*/\n\t\tvar elements:Array = val.decompose();\n\t\tvar vec:Vector3D;\n\n\t\tvec = elements[0];\n\n\t\tif (this._x != vec.x || this._y != vec.y || this._z != vec.z) {\n\t\t\tthis._x = vec.x;\n\t\t\tthis._y = vec.y;\n\t\t\tthis._z = vec.z;\n\n\t\t\tthis.invalidatePosition();\n\t\t}\n\n\t\tvec = elements[1];\n\n\t\tif (this._rotationX != vec.x || this._rotationY != vec.y || this._rotationZ != vec.z) {\n\t\t\tthis._rotationX = vec.x;\n\t\t\tthis._rotationY = vec.y;\n\t\t\tthis._rotationZ = vec.z;\n\n\t\t\tthis.invalidateRotation();\n\t\t}\n\n\t\tvec = elements[2];\n\n\t\tif (this._pScaleX != vec.x || this._pScaleY != vec.y || this._pScaleZ != vec.z) {\n\t\t\tthis._pScaleX = vec.x;\n\t\t\tthis._pScaleY = vec.y;\n\t\t\tthis._pScaleZ = vec.z;\n\n\t\t\tthis.invalidateScale();\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic get _iPickingCollisionVO():PickingCollisionVO\n\t{\n\t\tif (!this._pPickingCollisionVO)\n\t\t\tthis._pPickingCollisionVO = new PickingCollisionVO(this);\n\n\t\treturn this._pPickingCollisionVO;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iSetParent(value:DisplayObjectContainer)\n\t{\n\t\tthis._pParent = value;\n\n\t\tif (value) {\n\t\t\tthis._pUpdateImplicitMouseEnabled(value.mouseChildren);\n\t\t\tthis._pUpdateImplicitVisibility(value._iIsVisible());\n\t\t\tthis._pUpdateImplicitPartition(value._iAssignedPartition);\n\t\t\tthis._iSetScene(value._pScene);\n\t\t} else {\n\t\t\tthis._pUpdateImplicitMouseEnabled(true);\n\t\t\tthis._pUpdateImplicitVisibility(true);\n\t\t\tthis._pUpdateImplicitPartition(null);\n\n\t\t\tthis._iSetScene(null);\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t// point lights should be using sphere bounds\n\t\t// directional lights should be using null bounds\n\t\treturn new AxisAlignedBoundingBox();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tthis._pBoundsInvalid = true;\n\t\tthis._worldBoundsInvalid = true;\n\n\n\t\tif (this.isEntity)\n\t\t\tthis.invalidatePartition();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tthis._pSceneTransformDirty = !this._pIgnoreTransform;\n\t\tthis._inverseSceneTransformDirty = !this._pIgnoreTransform;\n\t\tthis._scenePositionDirty = !this._pIgnoreTransform;\n\n\t\tthis._worldBoundsInvalid = !this._pIgnoreTransform;\n\n\t\tif (this.isEntity)\n\t\t\tthis.invalidatePartition();\n\n\t\tif (this._listenToSceneTransformChanged)\n\t\t\tthis.notifySceneTransformChange();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._width = this._pBounds.aabb.width*this._pScaleX;\n\t\tthis._height = this._pBounds.aabb.height*this._pScaleY;\n\t\tthis._depth = this._pBounds.aabb.depth*this._pScaleZ;\n\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tthis._pImplicitMouseEnabled = this._explicitMouseEnabled && value;\n\n\t\t// If there is a parent and this child does not have a picking collider, use its parent's picking collider.\n\t\tif (this._pImplicitMouseEnabled && this._pParent && !this._pPickingCollider)\n\t\t\tthis._pPickingCollider = this._pParent._pPickingCollider;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\t// assign parent implicit partition if no explicit one is given\n\t\tthis._pImplicitPartition = this._explicitPartition || value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tthis._pImplicitVisibility = this._explicitVisibility && value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateMatrix3D()\n\t{\n\n\t\tthis._pos.x = this._x;\n\t\tthis._pos.y = this._y;\n\t\tthis._pos.z = this._z;\n\n\t\tthis._rot.x = this._rotationX;\n\t\tthis._rot.y = this._rotationY;\n\t\tthis._rot.z = this._rotationZ;\n\n\t\tthis._sca.x = this._pScaleX;\n\t\tthis._sca.y = this._pScaleY;\n\t\tthis._sca.z = this._pScaleZ;\n\n\t\tthis._matrix3D.recompose(this._transformComponents);\n\n\t\tif (!this._pivotZero) {\n\t\t\tthis._matrix3D.prependTranslation(-this._pivot.x/this._pScaleX, -this._pivot.y/this._pScaleY, -this._pivot.z/this._pScaleZ);\n\t\t\tif (this.alignmentMode != AlignmentMode.PIVOT_POINT)\n\t\t\t\tthis._matrix3D.appendTranslation(this._pivot.x, this._pivot.y, this._pivot.z);\n\t\t}\n\n\t\tthis._matrix3DDirty = false;\n\t\tthis._positionDirty = false;\n\t\tthis._rotationDirty = false;\n\t\tthis._scaleDirty = false;\n\t\tthis._pivotDirty = false;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tif (this._pParent && !this._pParent._iIsRoot) {\n\t\t\tthis._pSceneTransform.copyFrom(this._pParent.sceneTransform);\n\t\t\tthis._pSceneTransform.prepend(this._iMatrix3D);\n\t\t} else {\n\t\t\tthis._pSceneTransform.copyFrom(this._iMatrix3D);\n\t\t}\n\n\t\tthis._pSceneTransformDirty = false;\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._pRenderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._pRenderables.indexOf(renderable);\n\n\t\tthis._pRenderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic _iInternalUpdate()\n\t{\n\t\tif (this._iController)\n\t\t\tthis._iController.update();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsVisible():boolean\n\t{\n\t\treturn this._pImplicitVisibility;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsMouseEnabled():boolean\n\t{\n\t\treturn this._pImplicitMouseEnabled;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iSetScene(value:Scene)\n\t{\n\t\t// test to see if we're switching roots while we're already using a scene partition\n\t\t/*\n\t\tif (value == null)\n\t\t\tthis._oldScene = this._pScene;\n\n\t\tif (this._explicitPartition && this._oldScene && this._oldScene != this._pScene)\n\t\t\tthis.partition = null;\n\n\t\tif (value)\n\t\t\tthis._oldScene = null;\n\n\t\t// end of stupid partition test code\n\t\t//*/\n\n\t\tif (this._pScene == value)\n\t\t\treturn;\n\n\t\tthis._pUpdateScene(value);\n\n\t\tif (!this._pSceneTransformDirty && !this._pIgnoreTransform)\n\t\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tif (this._pScene) {\n\t\t\tthis._pScene.dispatchEvent(new SceneEvent(SceneEvent.REMOVED_FROM_SCENE, this));\n\n\t\t\t//unregister entity from current scene\n\t\t\tthis._pScene.iUnregisterEntity(this);\n\t\t}\n\n\t\tthis._pScene = value;\n\n\t\tif (value) {\n\t\t\tvalue.dispatchEvent(new SceneEvent(SceneEvent.ADDED_TO_SCENE, this));\n\n\t\t\t//register entity with new scene\n\t\t\tvalue.iRegisterEntity(this);\n\t\t}\n\n\t\tthis.notifySceneChange();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyPositionChanged()\n\t{\n\t\tif (!this._positionChanged)\n\t\t\tthis._positionChanged = new DisplayObjectEvent(DisplayObjectEvent.POSITION_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._positionChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRotationChanged()\n\t{\n\t\tif (!this._rotationChanged)\n\t\t\tthis._rotationChanged = new DisplayObjectEvent(DisplayObjectEvent.ROTATION_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._rotationChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyScaleChanged()\n\t{\n\t\tif (!this._scaleChanged)\n\t\t\tthis._scaleChanged = new DisplayObjectEvent(DisplayObjectEvent.SCALE_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._scaleChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifySceneChange()\n\t{\n\t\tif (this._listenToSceneChanged) {\n\t\t\tif (!this._scenechanged)\n\t\t\t\tthis._scenechanged = new DisplayObjectEvent(DisplayObjectEvent.SCENE_CHANGED, this);\n\n\t\t\tthis.dispatchEvent(this._scenechanged);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifySceneTransformChange()\n\t{\n\t\tif (!this._sceneTransformChanged)\n\t\t\tthis._sceneTransformChanged = new DisplayObjectEvent(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._sceneTransformChanged);\n\t}\n\n\t/**\n\t * Invalidates the 3D transformation matrix, causing it to be updated upon the next request\n\t *\n\t * @private\n\t */\n\tprivate invalidateMatrix3D():void\n\t{\n\t\tif (this._matrix3DDirty)\n\t\t\treturn;\n\n\t\tthis._matrix3DDirty = true;\n\n\t\tif (!this._pSceneTransformDirty && !this._pIgnoreTransform)\n\t\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePartition()\n\t{\n\t\tif (this._iAssignedPartition)\n\t\t\tthis._iAssignedPartition.iMarkForUpdate(this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePivot()\n\t{\n\t\tthis._pivotZero = (this._pivot.x == 0) && (this._pivot.y == 0) && (this._pivot.z == 0);\n\n\t\tif (this._pivotDirty)\n\t\t\treturn;\n\n\t\tthis._pivotDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePosition()\n\t{\n\t\tif (this._positionDirty)\n\t\t\treturn;\n\n\t\tthis._positionDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToPositionChanged)\n\t\t\tthis.notifyPositionChanged();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidateRotation()\n\t{\n\t\tif (this._rotationDirty)\n\t\t\treturn;\n\n\t\tthis._rotationDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToRotationChanged)\n\t\t\tthis.notifyRotationChanged();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidateScale()\n\t{\n\t\tif (this._scaleDirty)\n\t\t\treturn;\n\n\t\tthis._scaleDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToScaleChanged)\n\t\t\tthis.notifyScaleChanged();\n\t}\n}\n\nexport = DisplayObject;","import Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport GeometryEvent\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\n\n/**\n *\n * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices,\n * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.\n * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns\n * the SubGeometries to its respective TriangleSubMesh objects.\n *\n *\n *\n * @see away.core.base.SubGeometry\n * @see away.entities.Mesh\n *\n * @class Geometry\n */\nclass Geometry extends NamedAssetBase implements IAsset\n{\n\tprivate _subGeometries:Array;\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.GEOMETRY;\n\t}\n\n\t/**\n\t * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc.\n\t */\n\tpublic get subGeometries():Array\n\t{\n\t\treturn this._subGeometries;\n\t}\n\n\tpublic getSubGeometries():Array\n\t{\n\t\treturn this._subGeometries;\n\t}\n\n\t/**\n\t * Creates a new Geometry object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._subGeometries = new Array();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\t\tvar len:number = this._subGeometries.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subGeometries[i].applyTransformation(transform);\n\t}\n\n\t/**\n\t * Adds a new TriangleSubGeometry object to the list.\n\t * @param subGeometry The TriangleSubGeometry object to be added.\n\t */\n\tpublic addSubGeometry(subGeometry:SubGeometryBase)\n\t{\n\t\tthis._subGeometries.push(subGeometry);\n\n\t\tsubGeometry.parentGeometry = this;\n\n\t\tif (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_ADDED))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_ADDED, subGeometry));\n\n\t\tthis.iInvalidateBounds(subGeometry);\n\t}\n\n\t/**\n\t * Removes a new TriangleSubGeometry object from the list.\n\t * @param subGeometry The TriangleSubGeometry object to be removed.\n\t */\n\tpublic removeSubGeometry(subGeometry:SubGeometryBase)\n\t{\n\t\tthis._subGeometries.splice(this._subGeometries.indexOf(subGeometry), 1);\n\n\t\tsubGeometry.parentGeometry = null;\n\n\t\tif (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_REMOVED, subGeometry));\n\n\t\tthis.iInvalidateBounds(subGeometry);\n\t}\n\n\t/**\n\t * Clones the geometry.\n\t * @return An exact duplicate of the current Geometry object.\n\t */\n\tpublic clone():Geometry\n\t{\n\t\tvar clone:Geometry = new Geometry();\n\t\tvar len:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone.addSubGeometry(this._subGeometries[i].clone());\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i)\n\t\t\tthis._subGeometries[i].scale(scale);\n\t}\n\n\t/**\n\t * Clears all resources used by the Geometry object, including SubGeometries.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i) {\n\t\t\tvar subGeom:SubGeometryBase = this._subGeometries[0];\n\t\t\tthis.removeSubGeometry(subGeom);\n\t\t\tsubGeom.dispose();\n\t\t}\n\t}\n\n\t/**\n\t * Scales the uv coordinates (tiling)\n\t * @param scaleU The amount by which to scale on the u axis. Default is 1;\n\t * @param scaleV The amount by which to scale on the v axis. Default is 1;\n\t */\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i)\n\t\t\tthis._subGeometries[i].scaleUV(scaleU, scaleV);\n\t}\n\n\tpublic iInvalidateBounds(subGeom:SubGeometryBase)\n\t{\n\t\tif (this.hasEventListener(GeometryEvent.BOUNDS_INVALID))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.BOUNDS_INVALID, subGeom));\n\t}\n}\n\nexport = Geometry;","/**\n * The GradientType class provides values for the type parameter\n * in the beginGradientFill() and\n * lineGradientStyle() methods of the flash.display.Graphics\n * class.\n */\nclass GradientType\n{\n\t/**\n\t * Value used to specify a linear gradient fill.\n\t */\n\tpublic static LINEAR:string = \"linear\";\n\n\t/**\n\t * Value used to specify a radial gradient fill.\n\t */\n\tpublic static RADIAL:string = \"radial\";\n}\n\nexport = GradientType;","/**\n * The GraphicsPathWinding class provides values for the\n * flash.display.GraphicsPath.winding property and the\n * flash.display.Graphics.drawPath() method to determine the\n * direction to draw a path. A clockwise path is positively wound, and a\n * counter-clockwise path is negatively wound:\n *\n *

When paths intersect or overlap, the winding direction determines the\n * rules for filling the areas created by the intersection or overlap:

\n */\nclass GraphicsPathWinding\n{\n\tpublic static EVEN_ODD:string = \"evenOdd\";\n\tpublic static NON_ZERO:string = \"nonZero\";\n}\n\nexport = GraphicsPathWinding;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\n\nimport CapsStyle\t\t\t\t= require(\"awayjs-display/lib/base/CapsStyle\");\nimport GradientType\t\t\t\t= require(\"awayjs-display/lib/base/GradientType\");\nimport GraphicsPathWinding\t\t= require(\"awayjs-display/lib/base/GraphicsPathWinding\");\nimport IGraphicsData\t\t\t= require(\"awayjs-display/lib/base/IGraphicsData\");\nimport InterpolationMethod\t\t= require(\"awayjs-display/lib/base/InterpolationMethod\");\nimport JointStyle\t\t\t\t= require(\"awayjs-display/lib/base/JointStyle\");\nimport LineScaleMode\t\t\t= require(\"awayjs-display/lib/base/LineScaleMode\");\nimport TriangleCulling\t\t\t= require(\"awayjs-display/lib/base/TriangleCulling\");\nimport SpreadMethod\t\t\t\t= require(\"awayjs-display/lib/base/SpreadMethod\");\n\n/**\n * The Graphics class contains a set of methods that you can use to create a\n * vector shape. Display objects that support drawing include Sprite and Shape\n * objects. Each of these classes includes a graphics property\n * that is a Graphics object. The following are among those helper functions\n * provided for ease of use: drawRect(),\n * drawRoundRect(), drawCircle(), and\n * drawEllipse().\n *\n *

You cannot create a Graphics object directly from ActionScript code. If\n * you call new Graphics(), an exception is thrown.

\n *\n *

The Graphics class is final; it cannot be subclassed.

\n */\nclass Graphics\n{\n\t/**\n\t * Fills a drawing area with a bitmap image. The bitmap can be repeated or\n\t * tiled to fill the area. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param bitmap A transparent or opaque bitmap image that contains the bits\n\t * to be displayed.\n\t * @param matrix A matrix object(of the flash.geom.Matrix class), which you\n\t * can use to define transformations on the bitmap. For\n\t * example, you can use the following matrix to rotate a bitmap\n\t * by 45 degrees(pi/4 radians):\n\t * @param repeat If true, the bitmap image repeats in a tiled\n\t * pattern. If false, the bitmap image does not\n\t * repeat, and the edges of the bitmap are used for any fill\n\t * area that extends beyond the bitmap.\n\t *\n\t *

For example, consider the following bitmap(a 20 x\n\t * 20-pixel checkerboard pattern):

\n\t *\n\t *

When repeat is set to true(as\n\t * in the following example), the bitmap fill repeats the\n\t * bitmap:

\n\t *\n\t *

When repeat is set to false,\n\t * the bitmap fill uses the edge pixels for the fill area\n\t * outside the bitmap:

\n\t * @param smooth If false, upscaled bitmap images are rendered\n\t * by using a nearest-neighbor algorithm and look pixelated. If\n\t * true, upscaled bitmap images are rendered by\n\t * using a bilinear algorithm. Rendering by using the nearest\n\t * neighbor algorithm is faster.\n\t */\n\tpublic beginBitmapFill(bitmap:BitmapData, matrix:Matrix = null, repeat:boolean = true, smooth:boolean = false)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a simple one-color fill that subsequent calls to other Graphics\n\t * methods(such as lineTo() or drawCircle()) use\n\t * when drawing. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param color The color of the fill(0xRRGGBB).\n\t * @param alpha The alpha value of the fill(0.0 to 1.0).\n\t */\n\tpublic beginFill(color:number /*int*/, alpha:number = 1)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a gradient fill used by subsequent calls to other Graphics\n\t * methods(such as lineTo() or drawCircle()) for\n\t * the object. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param type A value from the GradientType class that\n\t * specifies which gradient type to use:\n\t * GradientType.LINEAR or\n\t * GradientType.RADIAL.\n\t * @param colors An array of RGB hexadecimal color values used\n\t * in the gradient; for example, red is 0xFF0000,\n\t * blue is 0x0000FF, and so on. You can specify\n\t * up to 15 colors. For each color, specify a\n\t * corresponding value in the alphas and ratios\n\t * parameters.\n\t * @param alphas An array of alpha values for the corresponding\n\t * colors in the colors array; valid values are 0\n\t * to 1. If the value is less than 0, the default\n\t * is 0. If the value is greater than 1, the\n\t * default is 1.\n\t * @param ratios An array of color distribution ratios; valid\n\t * values are 0-255. This value defines the\n\t * percentage of the width where the color is\n\t * sampled at 100%. The value 0 represents the\n\t * left position in the gradient box, and 255\n\t * represents the right position in the gradient\n\t * box.\n\t * @param matrix A transformation matrix as defined by the\n\t * flash.geom.Matrix class. The flash.geom.Matrix\n\t * class includes a\n\t * createGradientBox() method, which\n\t * lets you conveniently set up the matrix for use\n\t * with the beginGradientFill()\n\t * method.\n\t * @param spreadMethod A value from the SpreadMethod class that\n\t * specifies which spread method to use, either:\n\t * SpreadMethod.PAD,\n\t * SpreadMethod.REFLECT, or\n\t * SpreadMethod.REPEAT.\n\t *\n\t *

For example, consider a simple linear\n\t * gradient between two colors:

\n\t *\n\t *

This example uses\n\t * SpreadMethod.PAD for the spread\n\t * method, and the gradient fill looks like the\n\t * following:

\n\t *\n\t *

If you use SpreadMethod.REFLECT\n\t * for the spread method, the gradient fill looks\n\t * like the following:

\n\t *\n\t *

If you use SpreadMethod.REPEAT\n\t * for the spread method, the gradient fill looks\n\t * like the following:

\n\t * @param interpolationMethod A value from the InterpolationMethod class that\n\t * specifies which value to use:\n\t * InterpolationMethod.LINEAR_RGB or\n\t * InterpolationMethod.RGB\n\t *\n\t *

For example, consider a simple linear\n\t * gradient between two colors(with the\n\t * spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The\n\t * different interpolation methods affect the\n\t * appearance as follows:

\n\t * @param focalPointRatio A number that controls the location of the\n\t * focal point of the gradient. 0 means that the\n\t * focal point is in the center. 1 means that the\n\t * focal point is at one border of the gradient\n\t * circle. -1 means that the focal point is at the\n\t * other border of the gradient circle. A value\n\t * less than -1 or greater than 1 is rounded to -1\n\t * or 1. For example, the following example shows\n\t * a focalPointRatio set to 0.75:\n\t * @throws ArgumentError If the type parameter is not valid.\n\t */\n\tpublic beginGradientFill(type:GradientType, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:string = \"pad\", interpolationMethod:string = \"rgb\", focalPointRatio:number = 0)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a shader fill used by subsequent calls to other Graphics methods\n\t * (such as lineTo() or drawCircle()) for the\n\t * object. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t *

Shader fills are not supported under GPU rendering; filled areas will\n\t * be colored cyan.

\n\t *\n\t * @param shader The shader to use for the fill. This Shader instance is not\n\t * required to specify an image input. However, if an image\n\t * input is specified in the shader, the input must be provided\n\t * manually. To specify the input, set the input\n\t * property of the corresponding ShaderInput property of the\n\t * Shader.data property.\n\t *\n\t *

When you pass a Shader instance as an argument the shader\n\t * is copied internally. The drawing fill operation uses that\n\t * internal copy, not a reference to the original shader. Any\n\t * changes made to the shader, such as changing a parameter\n\t * value, input, or bytecode, are not applied to the copied\n\t * shader that's used for the fill.

\n\t * @param matrix A matrix object(of the flash.geom.Matrix class), which you\n\t * can use to define transformations on the shader. For\n\t * example, you can use the following matrix to rotate a shader\n\t * by 45 degrees(pi/4 radians):\n\t *\n\t *

The coordinates received in the shader are based on the\n\t * matrix that is specified for the matrix\n\t * parameter. For a default(null) matrix, the\n\t * coordinates in the shader are local pixel coordinates which\n\t * can be used to sample an input.

\n\t * @throws ArgumentError When the shader output type is not compatible with\n\t * this operation(the shader must specify a\n\t * pixel3 or pixel4 output).\n\t * @throws ArgumentError When the shader specifies an image input that isn't\n\t * provided.\n\t * @throws ArgumentError When a ByteArray or Vector. instance is used\n\t * as an input and the width and\n\t * height properties aren't specified for\n\t * the ShaderInput, or the specified values don't match\n\t * the amount of data in the input object. See the\n\t * ShaderInput.input property for more\n\t * information.\n\t */\n//\t\tpublic beginShaderFill(shader:Shader, matrix:Matrix = null)\n//\t\t{\n//\n//\t\t}\n\n\t/**\n\t * Clears the graphics that were drawn to this Graphics object, and resets\n\t * fill and line style settings.\n\t *\n\t */\n\tpublic clear()\n\t{\n\n\t}\n\n\t/**\n\t * Copies all of drawing commands from the source Graphics object into the\n\t * calling Graphics object.\n\t *\n\t * @param sourceGraphics The Graphics object from which to copy the drawing\n\t * commands.\n\t */\n\tpublic copyFrom(sourceGraphics:Graphics)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a cubic Bezier curve from the current drawing position to the\n\t * specified anchor point. Cubic Bezier curves consist of two anchor points\n\t * and two control points. The curve interpolates the two anchor points and\n\t * curves toward the two control points.\n\t *\n\t * The four points you use to draw a cubic Bezier curve with the\n\t * cubicCurveTo() method are as follows:\n\t *\n\t *
    \n\t *
  • The current drawing position is the first anchor point.
  • \n\t *
  • The anchorX and anchorY parameters specify the second anchor point.\n\t *
  • \n\t *
  • The controlX1 and controlY1 parameters\n\t * specify the first control point.
  • \n\t *
  • The controlX2 and controlY2 parameters\n\t * specify the second control point.
  • \n\t *
\n\t *\n\t * If you call the cubicCurveTo() method before calling the\n\t * moveTo() method, your curve starts at position (0, 0).\n\t *\n\t * If the cubicCurveTo() method succeeds, the Flash runtime sets\n\t * the current drawing position to (anchorX,\n\t * anchorY). If the cubicCurveTo() method fails,\n\t * the current drawing position remains unchanged.\n\t *\n\t * If your movie clip contains content created with the Flash drawing tools,\n\t * the results of calls to the cubicCurveTo() method are drawn\n\t * underneath that content.\n\t *\n\t * @param controlX1 Specifies the horizontal position of the first control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlY1 Specifies the vertical position of the first control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlX2 Specifies the horizontal position of the second control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlY2 Specifies the vertical position of the second control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param anchorX Specifies the horizontal position of the anchor point\n\t * relative to the registration point of the parent display\n\t * object.\n\t * @param anchorY Specifies the vertical position of the anchor point\n\t * relative to the registration point of the parent display\n\t * object.\n\t */\n\tpublic cubicCurveTo(controlX1:number, controlY1:number, controlX2:number, controlY2:number, anchorX:number, anchorY:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a curve using the current line style from the current drawing\n\t * position to(anchorX, anchorY) and using the control point that\n\t * (controlX, controlY) specifies. The current\n\t * drawing position is then set to(anchorX,\n\t * anchorY). If the movie clip in which you are drawing contains\n\t * content created with the Flash drawing tools, calls to the\n\t * curveTo() method are drawn underneath this content. If you\n\t * call the curveTo() method before any calls to the\n\t * moveTo() method, the default of the current drawing position\n\t * is(0, 0). If any of the parameters are missing, this method fails and the\n\t * current drawing position is not changed.\n\t *\n\t *

The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves\n\t * consist of two anchor points and one control point. The curve interpolates\n\t * the two anchor points and curves toward the control point.

\n\t *\n\t * @param controlX A number that specifies the horizontal position of the\n\t * control point relative to the registration point of the\n\t * parent display object.\n\t * @param controlY A number that specifies the vertical position of the\n\t * control point relative to the registration point of the\n\t * parent display object.\n\t * @param anchorX A number that specifies the horizontal position of the\n\t * next anchor point relative to the registration point of\n\t * the parent display object.\n\t * @param anchorY A number that specifies the vertical position of the next\n\t * anchor point relative to the registration point of the\n\t * parent display object.\n\t */\n\tpublic curveTo(controlX:number, controlY:number, anchorX:number, anchorY:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a circle. Set the line style, fill, or both before you call the\n\t * drawCircle() method, by calling the linestyle(),\n\t * lineGradientStyle(), beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method.\n\t *\n\t * @param x The x location of the center of the circle relative\n\t * to the registration point of the parent display object(in\n\t * pixels).\n\t * @param y The y location of the center of the circle relative\n\t * to the registration point of the parent display object(in\n\t * pixels).\n\t * @param radius The radius of the circle(in pixels).\n\t */\n\tpublic drawCircle(x:number, y:number, radius:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws an ellipse. Set the line style, fill, or both before you call the\n\t * drawEllipse() method, by calling the\n\t * linestyle(), lineGradientStyle(),\n\t * beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method.\n\t *\n\t * @param x The x location of the top-left of the bounding-box of\n\t * the ellipse relative to the registration point of the parent\n\t * display object(in pixels).\n\t * @param y The y location of the top left of the bounding-box of\n\t * the ellipse relative to the registration point of the parent\n\t * display object(in pixels).\n\t * @param width The width of the ellipse(in pixels).\n\t * @param height The height of the ellipse(in pixels).\n\t */\n\tpublic drawEllipse(x:number, y:number, width:number, height:number)\n\t{\n\n\t}\n\n\t/**\n\t * Submits a series of IGraphicsData instances for drawing. This method\n\t * accepts a Vector containing objects including paths, fills, and strokes\n\t * that implement the IGraphicsData interface. A Vector of IGraphicsData\n\t * instances can refer to a part of a shape, or a complex fully defined set\n\t * of data for rendering a complete shape.\n\t *\n\t *

Graphics paths can contain other graphics paths. If the\n\t * graphicsData Vector includes a path, that path and all its\n\t * sub-paths are rendered during this operation.

\n\t *\n\t */\n\tpublic drawGraphicsData(graphicsData:Array)\n\t{\n\n\t}\n\n\t/**\n\t * Submits a series of commands for drawing. The drawPath()\n\t * method uses vector arrays to consolidate individual moveTo(),\n\t * lineTo(), and curveTo() drawing commands into a\n\t * single call. The drawPath() method parameters combine drawing\n\t * commands with x- and y-coordinate value pairs and a drawing direction. The\n\t * drawing commands are values from the GraphicsPathCommand class. The x- and\n\t * y-coordinate value pairs are Numbers in an array where each pair defines a\n\t * coordinate location. The drawing direction is a value from the\n\t * GraphicsPathWinding class.\n\t *\n\t *

Generally, drawings render faster with drawPath() than\n\t * with a series of individual lineTo() and\n\t * curveTo() methods.

\n\t *\n\t *

The drawPath() method uses a uses a floating computation\n\t * so rotation and scaling of shapes is more accurate and gives better\n\t * results. However, curves submitted using the drawPath()\n\t * method can have small sub-pixel alignment errors when used in conjunction\n\t * with the lineTo() and curveTo() methods.

\n\t *\n\t *

The drawPath() method also uses slightly different rules\n\t * for filling and drawing lines. They are:

\n\t *\n\t *
    \n\t *
  • When a fill is applied to rendering a path:\n\t *
      \n\t *
    • A sub-path of less than 3 points is not rendered.(But note that the\n\t * stroke rendering will still occur, consistent with the rules for strokes\n\t * below.)
    • \n\t *
    • A sub-path that isn't closed(the end point is not equal to the\n\t * begin point) is implicitly closed.
    • \n\t *
    \n\t *
  • \n\t *
  • When a stroke is applied to rendering a path:\n\t *
      \n\t *
    • The sub-paths can be composed of any number of points.
    • \n\t *
    • The sub-path is never implicitly closed.
    • \n\t *
    \n\t *
  • \n\t *
\n\t *\n\t * @param winding Specifies the winding rule using a value defined in the\n\t * GraphicsPathWinding class.\n\t */\n\tpublic drawPath(commands:Array, data:Array, winding:GraphicsPathWinding)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a rectangle. Set the line style, fill, or both before you call the\n\t * drawRect() method, by calling the linestyle(),\n\t * lineGradientStyle(), beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method.\n\t *\n\t * @param x A number indicating the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number indicating the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param width The width of the rectangle(in pixels).\n\t * @param height The height of the rectangle(in pixels).\n\t * @throws ArgumentError If the width or height\n\t * parameters are not a number\n\t * (Number.NaN).\n\t */\n\tpublic drawRect(x:number, y:number, width:number, height:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a rounded rectangle. Set the line style, fill, or both before you\n\t * call the drawRoundRect() method, by calling the\n\t * linestyle(), lineGradientStyle(),\n\t * beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method.\n\t *\n\t * @param x A number indicating the horizontal position relative\n\t * to the registration point of the parent display\n\t * object(in pixels).\n\t * @param y A number indicating the vertical position relative to\n\t * the registration point of the parent display object\n\t * (in pixels).\n\t * @param width The width of the round rectangle(in pixels).\n\t * @param height The height of the round rectangle(in pixels).\n\t * @param ellipseWidth The width of the ellipse used to draw the rounded\n\t * corners(in pixels).\n\t * @param ellipseHeight The height of the ellipse used to draw the rounded\n\t * corners(in pixels). Optional; if no value is\n\t * specified, the default value matches that provided\n\t * for the ellipseWidth parameter.\n\t * @throws ArgumentError If the width, height,\n\t * ellipseWidth or\n\t * ellipseHeight parameters are not a\n\t * number(Number.NaN).\n\t */\n\tpublic drawRoundRect(x:number, y:number, width:number, height:number, ellipseWidth:number, ellipseHeight:number = NaN)\n\t{\n\n\t}\n\n\t//public drawRoundRectComplex(x:Float, y:Float, width:Float, height:Float, topLeftRadius:Float, topRightRadius:Float, bottomLeftRadius:Float, bottomRightRadius:Float):Void;\n\n\t/**\n\t * Renders a set of triangles, typically to distort bitmaps and give them a\n\t * three-dimensional appearance. The drawTriangles() method maps\n\t * either the current fill, or a bitmap fill, to the triangle faces using a\n\t * set of(u,v) coordinates.\n\t *\n\t *

Any type of fill can be used, but if the fill has a transform matrix\n\t * that transform matrix is ignored.

\n\t *\n\t *

A uvtData parameter improves texture mapping when a\n\t * bitmap fill is used.

\n\t *\n\t * @param culling Specifies whether to render triangles that face in a\n\t * specified direction. This parameter prevents the rendering\n\t * of triangles that cannot be seen in the current view. This\n\t * parameter can be set to any value defined by the\n\t * TriangleCulling class.\n\t */\n\tpublic drawTriangles(vertices:Array, indices:Array = null, uvtData:Array = null, culling:TriangleCulling = null)\n\t{\n\n\t}\n\n\t/**\n\t * Applies a fill to the lines and curves that were added since the last call\n\t * to the beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method. Flash uses the fill that was\n\t * specified in the previous call to the beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method. If the current drawing position does not equal the previous\n\t * position specified in a moveTo() method and a fill is\n\t * defined, the path is closed with a line and then filled.\n\t *\n\t */\n\tpublic endFill()\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a bitmap to use for the line stroke when drawing lines.\n\t *\n\t *

The bitmap line style is used for subsequent calls to Graphics methods\n\t * such as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineStyle() or lineGradientStyle() methods, or\n\t * the lineBitmapStyle() method again with different parameters.\n\t *

\n\t *\n\t *

You can call the lineBitmapStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineBitmapStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param bitmap The bitmap to use for the line stroke.\n\t * @param matrix An optional transformation matrix as defined by the\n\t * flash.geom.Matrix class. The matrix can be used to scale or\n\t * otherwise manipulate the bitmap before applying it to the\n\t * line style.\n\t * @param repeat Whether to repeat the bitmap in a tiled fashion.\n\t * @param smooth Whether smoothing should be applied to the bitmap.\n\t */\n\tpublic lineBitmapStyle(bitmap:BitmapData, matrix:Matrix = null, repeat:boolean = true, smooth:boolean = false)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a gradient to use for the stroke when drawing lines.\n\t *\n\t *

The gradient line style is used for subsequent calls to Graphics\n\t * methods such as the lineTo() methods or the\n\t * drawCircle() method. The line style remains in effect until\n\t * you call the lineStyle() or lineBitmapStyle()\n\t * methods, or the lineGradientStyle() method again with\n\t * different parameters.

\n\t *\n\t *

You can call the lineGradientStyle() method in the middle\n\t * of drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineGradientStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param type A value from the GradientType class that\n\t * specifies which gradient type to use, either\n\t * GradientType.LINEAR or GradientType.RADIAL.\n\t * @param colors An array of RGB hexadecimal color values used\n\t * in the gradient; for example, red is 0xFF0000,\n\t * blue is 0x0000FF, and so on. You can specify\n\t * up to 15 colors. For each color, specify a\n\t * corresponding value in the alphas and ratios\n\t * parameters.\n\t * @param alphas An array of alpha values for the corresponding\n\t * colors in the colors array; valid values are 0\n\t * to 1. If the value is less than 0, the default\n\t * is 0. If the value is greater than 1, the\n\t * default is 1.\n\t * @param ratios An array of color distribution ratios; valid\n\t * values are 0-255. This value defines the\n\t * percentage of the width where the color is\n\t * sampled at 100%. The value 0 represents the\n\t * left position in the gradient box, and 255\n\t * represents the right position in the gradient\n\t * box.\n\t * @param matrix A transformation matrix as defined by the\n\t * flash.geom.Matrix class. The flash.geom.Matrix\n\t * class includes a\n\t * createGradientBox() method, which\n\t * lets you conveniently set up the matrix for use\n\t * with the lineGradientStyle()\n\t * method.\n\t * @param spreadMethod A value from the SpreadMethod class that\n\t * specifies which spread method to use:\n\t * @param interpolationMethod A value from the InterpolationMethod class that\n\t * specifies which value to use. For example,\n\t * consider a simple linear gradient between two\n\t * colors(with the spreadMethod\n\t * parameter set to\n\t * SpreadMethod.REFLECT). The\n\t * different interpolation methods affect the\n\t * appearance as follows:\n\t * @param focalPointRatio A number that controls the location of the\n\t * focal point of the gradient. The value 0 means\n\t * the focal point is in the center. The value 1\n\t * means the focal point is at one border of the\n\t * gradient circle. The value -1 means that the\n\t * focal point is at the other border of the\n\t * gradient circle. Values less than -1 or greater\n\t * than 1 are rounded to -1 or 1. The following\n\t * image shows a gradient with a\n\t * focalPointRatio of -0.75:\n\t */\n\tpublic lineGradientStyle(type:GradientType, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:SpreadMethod = null, interpolationMethod:InterpolationMethod = null, focalPointRatio:number = 0)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a shader to use for the line stroke when drawing lines.\n\t *\n\t *

The shader line style is used for subsequent calls to Graphics methods\n\t * such as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineStyle() or lineGradientStyle() methods, or\n\t * the lineBitmapStyle() method again with different parameters.\n\t *

\n\t *\n\t *

You can call the lineShaderStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineShaderStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param shader The shader to use for the line stroke.\n\t * @param matrix An optional transformation matrix as defined by the\n\t * flash.geom.Matrix class. The matrix can be used to scale or\n\t * otherwise manipulate the bitmap before applying it to the\n\t * line style.\n\t */\n//\t\tpublic lineShaderStyle(shader:Shader, matrix:Matrix = null)\n//\t\t{\n//\n//\t\t}\n\n\t/**\n\t * Specifies a line style used for subsequent calls to Graphics methods such\n\t * as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineGradientStyle() method, the\n\t * lineBitmapStyle() method, or the lineStyle()\n\t * method with different parameters.\n\t *\n\t *

You can call the lineStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within the path.

\n\t *\n\t *

Note: Calls to the clear() method set the line\n\t * style back to undefined.

\n\t *\n\t *

Note: Flash Lite 4 supports only the first three parameters\n\t * (thickness, color, and alpha).

\n\t *\n\t * @param thickness An integer that indicates the thickness of the line in\n\t * points; valid values are 0-255. If a number is not\n\t * specified, or if the parameter is undefined, a line is\n\t * not drawn. If a value of less than 0 is passed, the\n\t * default is 0. The value 0 indicates hairline\n\t * thickness; the maximum thickness is 255. If a value\n\t * greater than 255 is passed, the default is 255.\n\t * @param color A hexadecimal color value of the line; for example,\n\t * red is 0xFF0000, blue is 0x0000FF, and so on. If a\n\t * value is not indicated, the default is 0x000000\n\t * (black). Optional.\n\t * @param alpha A number that indicates the alpha value of the color\n\t * of the line; valid values are 0 to 1. If a value is\n\t * not indicated, the default is 1(solid). If the value\n\t * is less than 0, the default is 0. If the value is\n\t * greater than 1, the default is 1.\n\t * @param pixelHinting(Not supported in Flash Lite 4) A Boolean value that\n\t * specifies whether to hint strokes to full pixels. This\n\t * affects both the position of anchors of a curve and\n\t * the line stroke size itself. With\n\t * pixelHinting set to true,\n\t * line widths are adjusted to full pixel widths. With\n\t * pixelHinting set to false,\n\t * disjoints can appear for curves and straight lines.\n\t * For example, the following illustrations show how\n\t * Flash Player or Adobe AIR renders two rounded\n\t * rectangles that are identical, except that the\n\t * pixelHinting parameter used in the\n\t * lineStyle() method is set differently\n\t * (the images are scaled by 200%, to emphasize the\n\t * difference):\n\t *\n\t *

If a value is not supplied, the line does not use\n\t * pixel hinting.

\n\t * @param scaleMode (Not supported in Flash Lite 4) A value from the\n\t * LineScaleMode class that specifies which scale mode to\n\t * use:\n\t *
    \n\t *
  • LineScaleMode.NORMAL - Always\n\t * scale the line thickness when the object is scaled\n\t * (the default).
  • \n\t *
  • LineScaleMode.NONE - Never scale\n\t * the line thickness.
  • \n\t *
  • LineScaleMode.VERTICAL - Do not\n\t * scale the line thickness if the object is scaled\n\t * vertically only. For example, consider the\n\t * following circles, drawn with a one-pixel line, and\n\t * each with the scaleMode parameter set to\n\t * LineScaleMode.VERTICAL. The circle on the\n\t * left is scaled vertically only, and the circle on the\n\t * right is scaled both vertically and horizontally:\n\t *
  • \n\t *
  • LineScaleMode.HORIZONTAL - Do not\n\t * scale the line thickness if the object is scaled\n\t * horizontally only. For example, consider the\n\t * following circles, drawn with a one-pixel line, and\n\t * each with the scaleMode parameter set to\n\t * LineScaleMode.HORIZONTAL. The circle on\n\t * the left is scaled horizontally only, and the circle\n\t * on the right is scaled both vertically and\n\t * horizontally:
  • \n\t *
\n\t * @param caps (Not supported in Flash Lite 4) A value from the\n\t * CapsStyle class that specifies the type of caps at the\n\t * end of lines. Valid values are:\n\t * CapsStyle.NONE,\n\t * CapsStyle.ROUND, and\n\t * CapsStyle.SQUARE. If a value is not\n\t * indicated, Flash uses round caps.\n\t *\n\t *

For example, the following illustrations show the\n\t * different capsStyle settings. For each\n\t * setting, the illustration shows a blue line with a\n\t * thickness of 30(for which the capsStyle\n\t * applies), and a superimposed black line with a\n\t * thickness of 1(for which no capsStyle\n\t * applies):

\n\t * @param joints (Not supported in Flash Lite 4) A value from the\n\t * JointStyle class that specifies the type of joint\n\t * appearance used at angles. Valid values are:\n\t * JointStyle.BEVEL,\n\t * JointStyle.MITER, and\n\t * JointStyle.ROUND. If a value is not\n\t * indicated, Flash uses round joints.\n\t *\n\t *

For example, the following illustrations show the\n\t * different joints settings. For each\n\t * setting, the illustration shows an angled blue line\n\t * with a thickness of 30(for which the\n\t * jointStyle applies), and a superimposed\n\t * angled black line with a thickness of 1(for which no\n\t * jointStyle applies):

\n\t *\n\t *

Note: For joints set to\n\t * JointStyle.MITER, you can use the\n\t * miterLimit parameter to limit the length\n\t * of the miter.

\n\t * @param miterLimit (Not supported in Flash Lite 4) A number that\n\t * indicates the limit at which a miter is cut off. Valid\n\t * values range from 1 to 255(and values outside that\n\t * range are rounded to 1 or 255). This value is only\n\t * used if the jointStyle is set to\n\t * \"miter\". The miterLimit\n\t * value represents the length that a miter can extend\n\t * beyond the point at which the lines meet to form a\n\t * joint. The value expresses a factor of the line\n\t * thickness. For example, with a\n\t * miterLimit factor of 2.5 and a\n\t * thickness of 10 pixels, the miter is cut\n\t * off at 25 pixels.\n\t *\n\t *

For example, consider the following angled lines,\n\t * each drawn with a thickness of 20, but\n\t * with miterLimit set to 1, 2, and 4.\n\t * Superimposed are black reference lines showing the\n\t * meeting points of the joints:

\n\t *\n\t *

Notice that a given miterLimit value\n\t * has a specific maximum angle for which the miter is\n\t * cut off. The following table lists some examples:

\n\t */\n\tpublic lineStyle(thickness:number = 0, color:number /*int*/ = 0, alpha:number = 1, pixelHinting:boolean = false, scaleMode:LineScaleMode = null, caps:CapsStyle = null, joints:JointStyle = null, miterLimit:number = 3)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a line using the current line style from the current drawing\n\t * position to(x, y); the current drawing position\n\t * is then set to(x, y). If the display object in\n\t * which you are drawing contains content that was created with the Flash\n\t * drawing tools, calls to the lineTo() method are drawn\n\t * underneath the content. If you call lineTo() before any calls\n\t * to the moveTo() method, the default position for the current\n\t * drawing is(0, 0). If any of the parameters are missing, this\n\t * method fails and the current drawing position is not changed.\n\t *\n\t * @param x A number that indicates the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number that indicates the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t */\n\tpublic lineTo(x:number, y:number)\n\t{\n\n\t}\n\n\t/**\n\t * Moves the current drawing position to(x, y). If\n\t * any of the parameters are missing, this method fails and the current\n\t * drawing position is not changed.\n\t *\n\t * @param x A number that indicates the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number that indicates the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t */\n\tpublic moveTo(x:number, y:number)\n\t{\n\n\t}\n}\n\nexport = Graphics;","/**\n * The InterpolationMethod class provides values for the\n * interpolationMethod parameter in the\n * Graphics.beginGradientFill() and\n * Graphics.lineGradientStyle() methods. This parameter\n * determines the RGB space to use when rendering the gradient.\n */\nclass InterpolationMethod\n{\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static LINEAR_RGB:string = \"linearRGB\";\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static RGB:string = \"rgb\";\n}\n\nexport = InterpolationMethod;","/**\n * The JointStyle class is an enumeration of constant values that specify the\n * joint style to use in drawing lines. These constants are provided for use\n * as values in the joints parameter of the\n * flash.display.Graphics.lineStyle() method. The method supports\n * three types of joints: miter, round, and bevel, as the following example\n * shows:\n */\nclass JointStyle\n{\n\t/**\n\t * Specifies beveled joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static BEVEL:string = \"bevel\";\n\n\t/**\n\t * Specifies mitered joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static MITER:string = \"miter\";\n\n\t/**\n\t * Specifies round joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static ROUND:string = \"round\";\n}\n\nexport = JointStyle;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightEvent\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport ShadowMapperBase\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\n\nclass LightBase extends DisplayObjectContainer\n{\n\tprivate _color:number = 0xffffff;\n\tprivate _colorR:number = 1;\n\tprivate _colorG:number = 1;\n\tprivate _colorB:number = 1;\n\n\tprivate _ambientColor:number = 0xffffff;\n\tprivate _ambient:number = 0;\n\tpublic _iAmbientR:number = 0;\n\tpublic _iAmbientG:number = 0;\n\tpublic _iAmbientB:number = 0;\n\n\tprivate _specular:number = 1;\n\tpublic _iSpecularR:number = 1;\n\tpublic _iSpecularG:number = 1;\n\tpublic _iSpecularB:number = 1;\n\n\tprivate _diffuse:number = 1;\n\tpublic _iDiffuseR:number = 1;\n\tpublic _iDiffuseG:number = 1;\n\tpublic _iDiffuseB:number = 1;\n\n\tprivate _castsShadows:boolean = false;\n\n\tprivate _shadowMapper:ShadowMapperBase;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tif (this._castsShadows == value)\n\t\t\treturn;\n\n\t\tthis._castsShadows = value;\n\n\t\tif (value) {\n\t\t\tif (this._shadowMapper == null)\n\t\t\t\tthis._shadowMapper = this.pCreateShadowMapper();\n\n\t\t\tthis._shadowMapper.light = this;\n\t\t} else {\n\t\t\tthis._shadowMapper.dispose();\n\t\t\tthis._shadowMapper = null;\n\t\t}\n\t\t//*/\n\t\tthis.dispatchEvent(new LightEvent(LightEvent.CASTS_SHADOW_CHANGE));\n\t}\n\n\tpublic pCreateShadowMapper():ShadowMapperBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get specular():number\n\t{\n\t\treturn this._specular;\n\t}\n\n\tpublic set specular(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._specular = value;\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get diffuse():number\n\t{\n\t\treturn this._diffuse;\n\t}\n\n\tpublic set diffuse(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._diffuse = value;\n\t\tthis.updateDiffuse();\n\t}\n\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tthis._color = value;\n\t\tthis._colorR = ((this._color >> 16) & 0xff)/0xff;\n\t\tthis._colorG = ((this._color >> 8) & 0xff)/0xff;\n\t\tthis._colorB = (this._color & 0xff)/0xff;\n\n\t\tthis.updateDiffuse();\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get ambient():number\n\t{\n\t\treturn this._ambient;\n\t}\n\n\tpublic set ambient(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tthis._ambient = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tpublic get ambientColor():number\n\t{\n\t\treturn this._ambientColor;\n\t}\n\n\tpublic set ambientColor(value:number)\n\t{\n\t\tthis._ambientColor = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tprivate updateAmbient()\n\t{\n\t\tthis._iAmbientR = ((this._ambientColor >> 16) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientG = ((this._ambientColor >> 8) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientB = (this._ambientColor & 0xff)/0xff*this._ambient;\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT;\n\t}\n\n\tprivate updateSpecular()\n\t{\n\t\tthis._iSpecularR = this._colorR*this._specular;\n\t\tthis._iSpecularG = this._colorG*this._specular;\n\t\tthis._iSpecularB = this._colorB*this._specular;\n\t}\n\n\tprivate updateDiffuse()\n\t{\n\t\tthis._iDiffuseR = this._colorR*this._diffuse;\n\t\tthis._iDiffuseG = this._colorG*this._diffuse;\n\t\tthis._iDiffuseB = this._colorB*this._diffuse;\n\t}\n\n\tpublic get shadowMapper():ShadowMapperBase\n\t{\n\t\treturn this._shadowMapper;\n\t}\n\n\tpublic set shadowMapper(value:ShadowMapperBase)\n\t{\n\t\tthis._shadowMapper = value;\n\t\tthis._shadowMapper.light = this;\n\t}\n}\n\nexport = LightBase;","/**\n * The LineScaleMode class provides values for the scaleMode\n * parameter in the Graphics.lineStyle() method.\n */\nclass LineScaleMode\n{\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only vertically. For example, consider the following circles, drawn\n\t * with a one-pixel line, and each with the scaleMode parameter\n\t * set to LineScaleMode.VERTICAL. The circle on the left is\n\t * scaled only vertically, and the circle on the right is scaled both\n\t * vertically and horizontally.\n\t */\n\tpublic static HORIZONTAL:string = \"horizontal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line never scales.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line always scales\n\t * when the object is scaled(the default).\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only horizontally. For example, consider the following circles,\n\t * drawn with a one-pixel line, and each with the scaleMode\n\t * parameter set to LineScaleMode.HORIZONTAL. The circle on the\n\t * left is scaled only horizontally, and the circle on the right is scaled\n\t * both vertically and horizontally.\n\t */\n\tpublic static VERTICAL:string = \"vertical\";\n}\n\nexport = LineScaleMode;","import DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport LineSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class LineSubGeometry\n */\nclass LineSubGeometry extends SubGeometryBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\tpublic static START_POSITION_DATA:string = \"startPositions\";\n\tpublic static END_POSITION_DATA:string = \"endPositions\";\n\tpublic static THICKNESS_DATA:string = \"thickness\";\n\tpublic static COLOR_DATA:string = \"colors\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static COLOR_FORMAT:string = \"float4\";\n\tpublic static THICKNESS_FORMAT:string = \"float1\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _boundingPositionDirty = true;\n\tprivate _thicknessDirty:boolean = true;\n\tprivate _colorsDirty:boolean = true;\n\n\tprivate _startPositions:Array;\n\tprivate _endPositions:Array;\n\tprivate _boundingPositions:Array\n\tprivate _thickness:Array;\n\tprivate _startColors:Array;\n\tprivate _endColors:Array;\n\n\tprivate _numSegments:number;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _thicknessUpdated:SubGeometryEvent;\n\tprivate _colorUpdated:SubGeometryEvent;\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthis._pOffset[LineSubGeometry.VERTEX_DATA] = 0;\n\n\t\tvar stride:number = 0;\n\t\tthis._pOffset[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tstride += 1;\n\n\t\tthis._pOffset[LineSubGeometry.COLOR_DATA] = stride;\n\t\tstride += 4;\n\n\t\tthis._pStride[LineSubGeometry.VERTEX_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.COLOR_DATA] = stride;\n\n\t\tvar len:number = this._pNumVertices*stride;\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(len);\n\t\telse if (this._pVertices.length != len)\n\t\t\tthis._pVertices.length = len;\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._startPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._endPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():Array\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\treturn this._thickness;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._startColors;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._endColors;\n\t}\n\n\t/**\n\t * The total amount of segments in the TriangleSubGeometry.\n\t */\n\tpublic get numSegments():number\n\t{\n\t\treturn this._numSegments;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tsuper(true);\n\n\t\tthis._pSubMeshClass = LineSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._boundingPositionDirty)\n\t\t\tthis._boundingPositions = this.startPositions.concat(this.endPositions);\n\n\t\treturn this._boundingPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\t\tvar indices:Array;\n\n\t\tthis._startPositions = startValues;\n\n\t\tif (this._startPositions == null)\n\t\t\tthis._startPositions = new Array();\n\n\t\tthis._endPositions = endValues;\n\n\t\tif (this._endPositions == null)\n\t\t\tthis._endPositions = new Array();\n\n\t\tthis._boundingPositionDirty = true;\n\n\t\tthis._numSegments = this._startPositions.length/3;\n\n\t\tthis._pNumVertices = this._numSegments*4;\n\n\t\tvar lenV:number = this._pNumVertices*this.getStride(LineSubGeometry.VERTEX_DATA);\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(lenV);\n\t\telse if (this._pVertices.length != lenV)\n\t\t\tthis._pVertices.length = lenV;\n\n\t\ti = 0;\n\t\tj = 0;\n\t\tindex = this.getOffset(LineSubGeometry.START_POSITION_DATA);\n\t\tstride = this.getStride(LineSubGeometry.START_POSITION_DATA);\n\t\tpositions = this._pVertices;\n\t\tindices = new Array();\n\n\t\twhile (i < startValues.length) {\n\t\t\tvalues = (index/stride & 1)? endValues : startValues;\n\t\t\tpositions[index] = values[i];\n\t\t\tpositions[index + 1] = values[i + 1];\n\t\t\tpositions[index + 2] = values[i + 2];\n\n\t\t\tvalues = (index/stride & 1)? startValues : endValues;\n\t\t\tpositions[index + 3] = values[i];\n\t\t\tpositions[index + 4] = values[i + 1];\n\t\t\tpositions[index + 5] = values[i + 2];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tvar o:number = index/stride - 3;\n\t\t\t\tindices.push(o, o + 1, o + 2, o + 3, o + 2, o + 1);\n\t\t\t\tj = 0;\n\t\t\t\ti += 3;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.updateIndices(indices);\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the thickness.\n\t */\n\tpublic updateThickness(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar thickness:Array;\n\n\t\tthis._thickness = values;\n\n\t\tif (values != null) {\n\t\t\ti = 0;\n\t\t\tj = 0;\n\t\t\toffset = this.getOffset(LineSubGeometry.THICKNESS_DATA);\n\t\t\tstride = this.getStride(LineSubGeometry.THICKNESS_DATA);\n\t\t\tthickness = this._pVertices;\n\n\t\t\tindex = offset\n\t\t\twhile (i < values.length) {\n\t\t\t\tthickness[index] = (Math.floor(0.5*(index - offset)/stride + 0.5) & 1)? -values[i] : values[i];\n\n\t\t\t\tif (++j == 4) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyThicknessUpdate();\n\n\t\tthis._thicknessDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateColors(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar colors:Array;\n\n\t\tthis._startColors = startValues;\n\n\t\tthis._endColors = endValues;\n\n\t\t//default to white\n\t\tif (this._startColors == null) {\n\t\t\tthis._startColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._startColors.length)\n\t\t\t\tthis._startColors[i++] = 1;\n\t\t}\n\n\t\tif (this._endColors == null) {\n\t\t\tthis._endColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._endColors.length)\n\t\t\t\tthis._endColors[i++] = 1;\n\t\t}\n\n\t\ti = 0;\n\t\tj = 0;\n\t\toffset = this.getOffset(LineSubGeometry.COLOR_DATA);\n\t\tstride = this.getStride(LineSubGeometry.COLOR_DATA);\n\t\tcolors = this._pVertices;\n\n\t\tindex = offset;\n\n\t\twhile (i < this._startColors.length) {\n\t\t\tvalues = ((index - offset)/stride & 1)? this._endColors : this._startColors;\n\t\t\tcolors[index] = values[i];\n\t\t\tcolors[index + 1] = values[i + 1];\n\t\t\tcolors[index + 2] = values[i + 2];\n\t\t\tcolors[index + 3] = values[i + 3];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tj = 0;\n\t\t\t\ti += 4;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyColorsUpdate();\n\n\t\tthis._colorsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._startPositions = null;\n\t\tthis._endPositions = null;\n\t\tthis._thickness = null;\n\t\tthis._startColors = null;\n\t\tthis._endColors = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():LineSubGeometry\n\t{\n\t\tvar clone:LineSubGeometry = new LineSubGeometry();\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\t\tclone.updateThickness(this._thickness.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyThicknessUpdate();\n\t\tthis.notifyColorsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyThicknessUpdate()\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\treturn;\n\n\t\tthis._thicknessDirty = true;\n\n\t\tif (!this._thicknessUpdated)\n\t\t\tthis._thicknessUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.THICKNESS_DATA);\n\n\t\tthis.dispatchEvent(this._thicknessUpdated);\n\t}\n\n\tprivate notifyColorsUpdate()\n\t{\n\t\tif (this._colorsDirty)\n\t\t\treturn;\n\n\t\tthis._colorsDirty = true;\n\n\t\tif (!this._colorUpdated)\n\t\t\tthis._colorUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.COLOR_DATA);\n\n\t\tthis.dispatchEvent(this._colorUpdated);\n\t}\n}\n\nexport = LineSubGeometry;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.LineSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.LineSubMesh\n */\nclass LineSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:LineSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SUB_MESH;\n\t}\n\n\t/**\n\t * The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t */\n\tpublic get subGeometry():LineSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new LineSubMesh object\n\t * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t * @param parentMesh The Mesh object to which this LineSubMesh belongs.\n\t * @param material An optional material used to render this LineSubMesh.\n\t */\n\tconstructor(subGeometry:LineSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyLineSubMesh(this);\n\t}\n}\n\nexport = LineSubMesh;","import EventDispatcher\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport ByteArray\t\t\t\t= require(\"awayjs-core/lib/utils/ByteArray\");\n\nimport Loader\t\t\t\t\t= require(\"awayjs-display/lib/containers/Loader\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The LoaderInfo class provides information about a loaded SWF file or a\n * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for\n * any display object. The information provided includes load progress, the\n * URLs of the loader and loaded content, the number of bytes total for the\n * media, and the nominal height and width of the media.\n *\n *

You can access LoaderInfo objects in two ways:

\n *\n *
    \n *
  • The contentLoaderInfo property of a flash.display.Loader\n * object - The contentLoaderInfo property is always available\n * for any Loader object. For a Loader object that has not called the\n * load() or loadBytes() method, or that has not\n * sufficiently loaded, attempting to access many of the properties of the\n * contentLoaderInfo property throws an error.
  • \n *
  • The loaderInfo property of a display object.
  • \n *
\n *\n *

The contentLoaderInfo property of a Loader object provides\n * information about the content that the Loader object is loading, whereas\n * the loaderInfo property of a DisplayObject provides\n * information about the root SWF file for that display object.

\n *\n *

When you use a Loader object to load a display object(such as a SWF\n * file or a bitmap), the loaderInfo property of the display\n * object is the same as the contentLoaderInfo property of the\n * Loader object(DisplayObject.loaderInfo =\n * Loader.contentLoaderInfo). Because the instance of the main class of\n * the SWF file has no Loader object, the loaderInfo property is\n * the only way to access the LoaderInfo for the instance of the main class of\n * the SWF file.

\n *\n *

The following diagram shows the different uses of the LoaderInfo\n * object - for the instance of the main class of the SWF file, for the\n * contentLoaderInfo property of a Loader object, and for the\n * loaderInfo property of a loaded object:

\n *\n *

When a loading operation is not complete, some properties of the\n * contentLoaderInfo property of a Loader object are not\n * available. You can obtain some properties, such as\n * bytesLoaded, bytesTotal, url,\n * loaderURL, and applicationDomain. When the\n * loaderInfo object dispatches the init event, you\n * can access all properties of the loaderInfo object and the\n * loaded image or SWF file.

\n *\n *

Note: All properties of LoaderInfo objects are read-only.

\n *\n *

The EventDispatcher.dispatchEvent() method is not\n * applicable to LoaderInfo objects. If you call dispatchEvent()\n * on a LoaderInfo object, an IllegalOperationError exception is thrown.

\n * \n * @event complete Dispatched when data has loaded successfully. In other\n * words, it is dispatched when all the content has been\n * downloaded and the loading has finished. The\n * complete event is always dispatched after\n * the init event. The init event\n * is dispatched when the object is ready to access, though\n * the content may still be downloading.\n * @event httpStatus Dispatched when a network request is made over HTTP and\n * an HTTP status code can be detected.\n * @event init Dispatched when the properties and methods of a loaded\n * SWF file are accessible and ready for use. The content,\n * however, can still be downloading. A LoaderInfo object\n * dispatches the init event when the following\n * conditions exist:\n *
    \n *
  • All properties and methods associated with the\n * loaded object and those associated with the LoaderInfo\n * object are accessible.
  • \n *
  • The constructors for all child objects have\n * completed.
  • \n *
  • All ActionScript code in the first frame of the\n * loaded SWF's main timeline has been executed.
  • \n *
\n *\n *

For example, an Event.INIT is dispatched\n * when the first frame of a movie or animation is loaded.\n * The movie is then accessible and can be added to the\n * display list. The complete movie, however, can take\n * longer to download. The Event.COMPLETE is\n * only dispatched once the full movie is loaded.

\n *\n *

The init event always precedes the\n * complete event.

\n * @event ioError Dispatched when an input or output error occurs that\n * causes a load operation to fail.\n * @event open Dispatched when a load operation starts.\n * @event progress Dispatched when data is received as the download\n * operation progresses.\n * @event unload Dispatched by a LoaderInfo object whenever a loaded\n * object is removed by using the unload()\n * method of the Loader object, or when a second load is\n * performed by the same Loader object and the original\n * content is removed prior to the load beginning.\n */\nclass LoaderInfo extends EventDispatcher\n{\n\tprivate _bytes:ByteArray;\n\tprivate _bytesLoaded:number;\n\tprivate _bytesTotal:number;\n\tprivate _content:DisplayObject;\n\tprivate _contentType:string;\n\tprivate _loader:Loader;\n\tprivate _url:string;\n\t/**\n\t * The bytes associated with a LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get bytes():ByteArray\n\t{\n\t\treturn this._bytes;\n\t}\n\n\t/**\n\t * The number of bytes that are loaded for the media. When this number equals\n\t * the value of bytesTotal, all of the bytes are loaded.\n\t */\n\tpublic get bytesLoaded():number /*int*/\n\t{\n\t\treturn this._bytesLoaded;\n\t}\n\n\t/**\n\t * The number of compressed bytes in the entire media file.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, bytesTotal\n\t * is 0. After the first progress event from the Loader object,\n\t * bytesTotal reflects the actual number of bytes to be\n\t * downloaded.

\n\t */\n\tpublic get bytesTotal():number /*int*/\n\t{\n\t\treturn this._bytesTotal;\n\t}\n\n\t/**\n\t * The loaded object associated with this LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * The MIME type of the loaded file. The value is null if not\n\t * enough of the file has loaded in order to determine the type. The\n\t * following list gives the possible values:\n\t *
    \n\t *
  • \"application/x-shockwave-flash\"
  • \n\t *
  • \"image/jpeg\"
  • \n\t *
  • \"image/gif\"
  • \n\t *
  • \"image/png\"
  • \n\t *
\n\t */\n\tpublic get contentType():string\n\t{\n\t\treturn this._contentType;\n\t}\n\n\t/**\n\t * The Loader object associated with this LoaderInfo object. If this\n\t * LoaderInfo object is the loaderInfo property of the instance\n\t * of the main class of the SWF file, no Loader object is associated.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the Loader object because of security\n\t * restrictions. This can occur, for instance, when a\n\t * loaded SWF file attempts to access its\n\t * loaderInfo.loader property and it is\n\t * not granted security permission to access the\n\t * loading SWF file.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get loader():Loader\n\t{\n\t\treturn this._loader;\n\t}\n\n\t/**\n\t * The URL of the media being loaded.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, the value of the\n\t * url property might reflect only the initial URL specified in\n\t * the call to the load() method of the Loader object. After the\n\t * first progress event, the url property reflects\n\t * the media's final URL, after any redirects and relative URLs are\n\t * resolved.

\n\t *\n\t *

In some cases, the value of the url property is truncated;\n\t * see the isURLInaccessible property for details.

\n\t */\n\tpublic get url():string\n\t{\n\t\treturn this._url;\n\t}\n}\n\nexport = LoaderInfo;","class OrientationMode\n{\n\t/**\n\t *\n\t */\n\tpublic static DEFAULT:string = \"default\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_PLANE:string = \"cameraPlane\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_POSITION:string = \"cameraPosition\";\n}\n\nexport = OrientationMode;","/**\n * The PixelSnapping class is an enumeration of constant values for setting\n * the pixel snapping options by using the pixelSnapping property\n * of a Bitmap object.\n */\nclass PixelSnapping\n{\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is always snapped to the\n\t * nearest pixel, independent of any transformation.\n\t */\n\tpublic static ALWAYS:string = \"always\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is snapped to the nearest\n\t * pixel if it is drawn with no rotation or skew and it is drawn at a scale\n\t * factor of 99.9% to 100.1%. If these conditions are satisfied, the image is\n\t * drawn at 100% scale, snapped to the nearest pixel. Internally, this\n\t * setting allows the image to be drawn as fast as possible by using the\n\t * vector renderer.\n\t */\n\tpublic static AUTO:string = \"auto\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that no pixel snapping occurs.\n\t */\n\tpublic static NEVER:string = \"never\";\n}\n\nexport = PixelSnapping;","/**\n * The SpreadMethod class provides values for the spreadMethod\n * parameter in the beginGradientFill() and\n * lineGradientStyle() methods of the Graphics class.\n *\n *

The following example shows the same gradient fill using various spread\n * methods:

\n */\nclass SpreadMethod\n{\n\t/**\n\t * Specifies that the gradient use the pad spread method.\n\t */\n\tpublic static PAD:string = \"pad\";\n\n\t/**\n\t * Specifies that the gradient use the reflect spread method.\n\t */\n\tpublic static REFLECT:string = \"reflect\";\n\n\t/**\n\t * Specifies that the gradient use the repeat spread method.\n\t */\n\tpublic static REPEAT:string = \"repeat\";\n}\n\nexport = SpreadMethod;","import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMeshClass\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass SubGeometryBase extends NamedAssetBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\n\tpublic _pStrideOffsetDirty:boolean = true;\n\n\tpublic _pIndices:Array /*uint*/;\n\tpublic _pVertices:Array;\n\n\tprivate _numIndices:number;\n\tprivate _numTriangles:number;\n\tpublic _pNumVertices:number;\n\n\tpublic _pConcatenateArrays:boolean = true;\n\n\tprivate _indicesUpdated:SubGeometryEvent;\n\n\tpublic _pStride:Object = new Object();\n\tpublic _pOffset:Object = new Object();\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _pSubMeshClass:ISubMeshClass;\n\n\tpublic get subMeshClass():ISubMeshClass\n\t{\n\t\treturn this._pSubMeshClass;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get concatenateArrays():boolean\n\t{\n\t\treturn this._pConcatenateArrays;\n\t}\n\n\tpublic set concatenateArrays(value:boolean)\n\t{\n\t\tif (this._pConcatenateArrays == value)\n\t\t\treturn;\n\n\t\tthis._pConcatenateArrays = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (value)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * The raw index data that define the faces.\n\t */\n\tpublic get indices():Array\n\t{\n\t\treturn this._pIndices;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tthis.updateVertices();\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t * The total amount of triangles in the TriangleSubGeometry.\n\t */\n\tpublic get numTriangles():number\n\t{\n\t\treturn this._numTriangles;\n\t}\n\n\tpublic get numVertices():number\n\t{\n\t\treturn this._pNumVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper();\n\n\t\tthis._pConcatenateArrays = concatenatedArrays;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getStride(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pStride[dataType];\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getOffset(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pOffset[dataType];\n\t}\n\n\tpublic updateVertices()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pIndices = null;\n\t\tthis._pVertices = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tthis._pIndices = indices;\n\t\tthis._numIndices = indices.length;\n\n\t\tthis._numTriangles = this._numIndices/3;\n\n\t\tthis.notifyIndicesUpdate();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():SubGeometryBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tprivate notifyIndicesUpdate()\n\t{\n\t\tif (!this._indicesUpdated)\n\t\t\tthis._indicesUpdated = new SubGeometryEvent(SubGeometryEvent.INDICES_UPDATED);\n\n\t\tthis.dispatchEvent(this._indicesUpdated);\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = SubGeometryBase;","import AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.SubMeshBase\n */\nclass SubMeshBase extends NamedAssetBase\n{\n\tpublic _pParentMesh:Mesh;\n\tpublic _uvTransform:UVTransform;\n\n\tpublic _iIndex:number = 0;\n\n\tpublic _material:MaterialBase;\n\tprivate _renderables:Array = new Array();\n\n\t//TODO test shader picking\n//\t\tpublic get shaderPickingDetails():boolean\n//\t\t{\n//\n//\t\t\treturn this.sourceEntity.shaderPickingDetails;\n//\t\t}\n\n\t/**\n\t * The animator object that provides the state for the TriangleSubMesh's animation.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._pParentMesh.animator;\n\t}\n\n\t/**\n\t * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material || this._pParentMesh.material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (this.material)\n\t\t\tthis.material.iRemoveOwner(this);\n\n\t\tthis._material = value;\n\n\t\tif (this.material)\n\t\t\tthis.material.iAddOwner(this);\n\t}\n\n\t/**\n\t * The scene transform object that transforms from model to world space.\n\t */\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\treturn this._pParentMesh.sceneTransform;\n\t}\n\n\t/**\n\t * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object).\n\t */\n\tpublic get parentMesh():Mesh\n\t{\n\t\treturn this._pParentMesh;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform || this._pParentMesh.uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Creates a new SubMeshBase object\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\t}\n\n\t/**\n\t *\n\t * @param camera\n\t * @returns {away.geom.Matrix3D}\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\treturn this._pParentMesh.getRenderSceneTransform(camera);\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\tpublic _iInvalidateRenderableGeometry()\n\t{\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].invalidateGeometry();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iGetExplicitMaterial():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n}\n\nexport = SubMeshBase;","import ColorTransform\t\t\t= require(\"awayjs-core/lib/geom/ColorTransform\");\nimport Matrix\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The Transform class provides access to color adjustment properties and two-\n * or three-dimensional transformation objects that can be applied to a\n * display object. During the transformation, the color or the orientation and\n * position of a display object is adjusted(offset) from the current values\n * or coordinates to new values or coordinates. The Transform class also\n * collects data about color and two-dimensional matrix transformations that\n * are applied to a display object and all of its parent objects. You can\n * access these combined transformations through the\n * concatenatedColorTransform and concatenatedMatrix\n * properties.\n *\n *

To apply color transformations: create a ColorTransform object, set the\n * color adjustments using the object's methods and properties, and then\n * assign the colorTransformation property of the\n * transform property of the display object to the new\n * ColorTransformation object.

\n *\n *

To apply two-dimensional transformations: create a Matrix object, set\n * the matrix's two-dimensional transformation, and then assign the\n * transform.matrix property of the display object to the new\n * Matrix object.

\n *\n *

To apply three-dimensional transformations: start with a\n * three-dimensional display object. A three-dimensional display object has a\n * z property value other than zero. You do not need to create\n * the Matrix3D object. For all three-dimensional objects, a Matrix3D object\n * is created automatically when you assign a z value to a\n * display object. You can access the display object's Matrix3D object through\n * the display object's transform property. Using the methods of\n * the Matrix3D class, you can add to or modify the existing transformation\n * settings. Also, you can create a custom Matrix3D object, set the custom\n * Matrix3D object's transformation elements, and then assign the new Matrix3D\n * object to the display object using the transform.matrix\n * property.

\n *\n *

To modify a perspective projection of the stage or root object: use the\n * transform.matrix property of the root display object to gain\n * access to the PerspectiveProjection object. Or, apply different perspective\n * projection properties to a display object by setting the perspective\n * projection properties of the display object's parent. The child display\n * object inherits the new properties. Specifically, create a\n * PerspectiveProjection object and set its properties, then assign the\n * PerspectiveProjection object to the perspectiveProjection\n * property of the parent display object's transform property.\n * The specified projection transformation then applies to all the display\n * object's three-dimensional children.

\n *\n *

Since both PerspectiveProjection and Matrix3D objects perform\n * perspective transformations, do not assign both to a display object at the\n * same time. Use the PerspectiveProjection object for focal length and\n * projection center changes. For more control over the perspective\n * transformation, create a perspective projection Matrix3D object.

\n */\nclass Transform\n{\n\tprivate _displayObject:DisplayObject;\n\tprivate _concatenatedColorTransform:ColorTransform;\n\tprivate _concatenatedMatrix:Matrix;\n\tprivate _pixelBounds:Rectangle;\n\tpublic _position:Vector3D = new Vector3D();\n\n\t/**\n\t *\n\t */\n\tpublic get backVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A ColorTransform object containing values that universally adjust the\n\t * colors in the display object.\n\t * \n\t * @throws TypeError The colorTransform is null when being set\n\t */\n\tpublic colorTransform:ColorTransform;\n\n\t/**\n\t * A ColorTransform object representing the combined color transformations\n\t * applied to the display object and all of its parent objects, back to the\n\t * root level. If different color transformations have been applied at\n\t * different levels, all of those transformations are concatenated into one\n\t * ColorTransform object for this property.\n\t */\n\tpublic get concatenatedColorTransform():ColorTransform\n\t{\n\t\treturn this._concatenatedColorTransform; //TODO\n\t}\n\n\t/**\n\t * A Matrix object representing the combined transformation matrixes of the\n\t * display object and all of its parent objects, back to the root level. If\n\t * different transformation matrixes have been applied at different levels,\n\t * all of those matrixes are concatenated into one matrix for this property.\n\t * Also, for resizeable SWF content running in the browser, this property\n\t * factors in the difference between stage coordinates and window coordinates\n\t * due to window resizing. Thus, the property converts local coordinates to\n\t * window coordinates, which may not be the same coordinate space as that of\n\t * the Stage.\n\t */\n\tpublic get concatenatedMatrix():Matrix\n\t{\n\t\treturn this._concatenatedMatrix; //TODO\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get downVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get forwardVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get leftVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A Matrix object containing values that alter the scaling, rotation, and\n\t * translation of the display object.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t * \n\t * @throws TypeError The matrix is null when being set\n\t */\n\tpublic matrix:Matrix;\n\n\t/**\n\t * Provides access to the Matrix3D object of a three-dimensional display\n\t * object. The Matrix3D object represents a transformation matrix that\n\t * determines the display object's position and orientation. A Matrix3D\n\t * object can also perform perspective projection.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t */\n\tpublic get matrix3D():Matrix3D\n\t{\n\t\treturn this._displayObject._iMatrix3D;\n\t}\n\n\tpublic set matrix3D(val:Matrix3D)\n\t{\n\t\tthis._displayObject._iMatrix3D = val;\n\t}\n\n\t/**\n\t * Provides access to the PerspectiveProjection object of a three-dimensional\n\t * display object. The PerspectiveProjection object can be used to modify the\n\t * perspective transformation of the stage or to assign a perspective\n\t * transformation to all the three-dimensional children of a display object.\n\t *\n\t *

Based on the field of view and aspect ratio(dimensions) of the stage,\n\t * a default PerspectiveProjection object is assigned to the root object.

\n\t */\n\tpublic perspectiveProjection:PerspectiveProjection;\n\n\t/**\n\t * A Rectangle object that defines the bounding rectangle of the display\n\t * object on the stage.\n\t */\n\tpublic get pixelBounds():Rectangle\n\t{\n\t\treturn this._pixelBounds;\n\t}\n\n\t/**\n\t * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get position():Vector3D\n\t{\n\t\treturn this._displayObject._iMatrix3D.position\n\t}\n\n\tpublic set position(value:Vector3D)\n\t{\n\t\tthis._displayObject.x = value.x;\n\t\tthis._displayObject.y = value.y;\n\t\tthis._displayObject.z = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get rightVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get rotation():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.rotationX, this._displayObject.rotationY, this._displayObject.rotationZ);\n\t}\n\n\tpublic set rotation(value:Vector3D)\n\t{\n\t\tthis._displayObject.rotationX = value.x;\n\t\tthis._displayObject.rotationY = value.y;\n\t\tthis._displayObject.rotationZ = value.z;\n\t}\n\n\t/**\n\t * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get scale():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.scaleX, this._displayObject.scaleY, this._displayObject.scaleZ);\n\t}\n\n\tpublic set scale(value:Vector3D)\n\t{\n\t\tthis._displayObject.scaleX = value.x;\n\t\tthis._displayObject.scaleY = value.y;\n\t\tthis._displayObject.scaleZ = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get upVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t}\n\n\tconstructor(displayObject:DisplayObject)\n\t{\n\t\tthis._displayObject = displayObject;\n\t}\n\n\t/**\n\t * Returns a Matrix3D object, which can transform the space of a specified\n\t * display object in relation to the current display object's space. You can\n\t * use the getRelativeMatrix3D() method to move one\n\t * three-dimensional display object relative to another three-dimensional\n\t * display object.\n\t * \n\t * @param relativeTo The display object relative to which the transformation\n\t * occurs. To get a Matrix3D object relative to the stage,\n\t * set the parameter to the root or\n\t * stage object. To get the world-relative\n\t * matrix of the display object, set the parameter to a\n\t * display object that has a perspective transformation\n\t * applied to it.\n\t * @return A Matrix3D object that can be used to transform the space from the\n\t * relativeTo display object to the current display\n\t * object space.\n\t */\n\tpublic getRelativeMatrix3D(relativeTo:DisplayObject):Matrix3D\n\t{\n\t\treturn new Matrix3D(); //TODO\n\t}\n\n\n\t/**\n\t * Moves the 3d object forwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveForward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveBackward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\n\tpublic moveLeft(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveRight(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveUp(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveDown(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, -distance);\n\t}\n}\n\nexport = Transform;\n","/**\n * Defines codes for culling algorithms that determine which triangles not to\n * render when drawing triangle paths.\n *\n *

The terms POSITIVE and NEGATIVE refer to the\n * sign of a triangle's normal along the z-axis. The normal is a 3D vector\n * that is perpendicular to the surface of the triangle.

\n *\n *

A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order\n * has a positive normal value. That is, its normal points in a positive\n * z-axis direction, away from the current view point. When the\n * TriangleCulling.POSITIVE algorithm is used, triangles with\n * positive normals are not rendered. Another term for this is backface\n * culling.

\n *\n *

A triangle whose vertices are arranged in a counter-clockwise order has\n * a negative normal value. That is, its normal points in a negative z-axis\n * direction, toward the current view point. When the\n * TriangleCulling.NEGATIVE algorithm is used, triangles with\n * negative normals will not be rendered.

\n */\nclass TriangleCulling\n{\n\t/**\n\t * Specifies culling of all triangles facing toward the current view point.\n\t */\n\tpublic static NEGATIVE:string = \"negative\";\n\n\t/**\n\t * Specifies no culling. All triangles in the path are rendered.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Specifies culling of all triangles facing away from the current view\n\t * point. This is also known as backface culling.\n\t */\n\tpublic static POSITIVE:string = \"positive\";\n}\n\nexport = TriangleCulling;","import Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubMesh\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass TriangleSubGeometry extends SubGeometryBase\n{\n\tpublic static POSITION_DATA:string = \"positions\";\n\tpublic static NORMAL_DATA:string = \"vertexNormals\";\n\tpublic static TANGENT_DATA:string = \"vertexTangents\";\n\tpublic static UV_DATA:string = \"uvs\";\n\tpublic static SECONDARY_UV_DATA:string = \"secondaryUVs\";\n\tpublic static JOINT_INDEX_DATA:string = \"jointIndices\";\n\tpublic static JOINT_WEIGHT_DATA:string = \"jointWeights\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static NORMAL_FORMAT:string = \"float3\";\n\tpublic static TANGENT_FORMAT:string = \"float3\";\n\tpublic static UV_FORMAT:string = \"float2\";\n\tpublic static SECONDARY_UV_FORMAT:string = \"float2\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _faceNormalsDirty:boolean = true;\n\tprivate _faceTangentsDirty:boolean = true;\n\tprivate _vertexNormalsDirty:boolean = true;\n\tprivate _vertexTangentsDirty:boolean = true;\n\tprivate _uvsDirty:boolean = true;\n\tprivate _secondaryUVsDirty:boolean = true;\n\tprivate _jointIndicesDirty:boolean = true;\n\tprivate _jointWeightsDirty:boolean = true;\n\n\tprivate _positions:Array;\n\tprivate _vertexNormals:Array;\n\tprivate _vertexTangents:Array;\n\tprivate _uvs:Array;\n\tprivate _secondaryUVs:Array;\n\tprivate _jointIndices:Array;\n\tprivate _jointWeights:Array;\n\n\tprivate _useCondensedIndices:boolean;\n\tprivate _condensedJointIndices:Array;\n\tprivate _condensedIndexLookUp:Array;\n\tprivate _numCondensedJoints:number;\n\n\tprivate _jointsPerVertex:number;\n\n\tprivate _concatenateArrays:boolean = true;\n\tprivate _autoDeriveNormals:boolean = true;\n\tprivate _autoDeriveTangents:boolean = true;\n\tprivate _autoDeriveUVs:boolean = false;\n\tprivate _useFaceWeights:boolean = false;\n\n\tprivate _faceNormals:Array;\n\tprivate _faceTangents:Array;\n\tprivate _faceWeights:Array;\n\n\tprivate _scaleU:number = 1;\n\tprivate _scaleV:number = 1;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _normalsUpdated:SubGeometryEvent;\n\tprivate _tangentsUpdated:SubGeometryEvent;\n\tprivate _uvsUpdated:SubGeometryEvent;\n\tprivate _secondaryUVsUpdated:SubGeometryEvent;\n\tprivate _jointIndicesUpdated:SubGeometryEvent;\n\tprivate _jointWeightsUpdated:SubGeometryEvent;\n\n\t/**\n\t *\n\t */\n\tpublic get scaleU():number\n\t{\n\t\treturn this._scaleU;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scaleV():number\n\t{\n\t\treturn this._scaleV;\n\t}\n\n\t/**\n\t * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints\n\t * by condensing the number of joint index values required per mesh. Only applicable to\n\t * skeleton animations that utilise more than one mesh object. Defaults to false.\n\t */\n\tpublic get useCondensedIndices():boolean\n\t{\n\t\treturn this._useCondensedIndices;\n\t}\n\n\tpublic set useCondensedIndices(value:boolean)\n\t{\n\t\tif (this._useCondensedIndices == value)\n\t\t\treturn;\n\n\t\tthis._useCondensedIndices = value;\n\n\t\tthis.notifyJointIndicesUpdate();\n\t}\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tif (this._concatenateArrays) {\n\t\t\tthis._pOffset[TriangleSubGeometry.VERTEX_DATA] = 0;\n\n\t\t\t//always have positions\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tvar stride:number = 3;\n\n\t\t\tif (this._vertexNormals != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._vertexTangents != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._uvs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._secondaryUVs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._jointIndices != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tif (this._jointWeights != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tthis._pStride[TriangleSubGeometry.VERTEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\n\t\t\tvar len:number = this._pNumVertices*stride;\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t} else {\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = 0;\n\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = this._jointsPerVertex;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = this._jointsPerVertex;\n\t\t}\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointsPerVertex():number\n\t{\n\t\treturn this._jointsPerVertex;\n\t}\n\n\tpublic set jointsPerVertex(value:number)\n\t{\n\t\tif (this._jointsPerVertex == value)\n\t\t\treturn;\n\n\t\tthis._jointsPerVertex = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (this._pConcatenateArrays)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * Defines whether a UV buffer should be automatically generated to contain dummy UV coordinates.\n\t * Set to true if a geometry lacks UV data but uses a material that requires it, or leave as false\n\t * in cases where UV data is explicitly defined or the material does not require UV data.\n\t */\n\tpublic get autoDeriveUVs():boolean\n\t{\n\t\treturn this._autoDeriveUVs;\n\t}\n\n\tpublic set autoDeriveUVs(value:boolean)\n\t{\n\t\tif (this._autoDeriveUVs == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveUVs = value;\n\n\t\tif (value)\n\t\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex normals should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveNormals():boolean\n\t{\n\t\treturn this._autoDeriveNormals;\n\t}\n\n\tpublic set autoDeriveNormals(value:boolean)\n\t{\n\t\tif (this._autoDeriveNormals == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveNormals = value;\n\n\t\tif (value)\n\t\t\tthis.notifyNormalsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex tangents should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveTangents():boolean\n\t{\n\t\treturn this._autoDeriveTangents;\n\t}\n\n\tpublic set autoDeriveTangents(value:boolean)\n\t{\n\t\tif (this._autoDeriveTangents == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveTangents = value;\n\n\t\tif (value)\n\t\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get positions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexNormals():Array\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\treturn this._vertexNormals;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexTangents():Array\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\treturn this._vertexTangents;\n\t}\n\n\t/**\n\t * The raw data of the face normals, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceNormals():Array\n\t{\n\t\tif (this._faceNormalsDirty)\n\t\t\tthis.updateFaceNormals();\n\n\t\treturn this._faceNormals;\n\t}\n\n\t/**\n\t * The raw data of the face tangets, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceTangents():Array\n\t{\n\t\tif (this._faceTangentsDirty)\n\t\t\tthis.updateFaceTangents();\n\n\t\treturn this._faceTangents;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvs():Array\n\t{\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\treturn this._uvs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get secondaryUVs():Array\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\treturn this._secondaryUVs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointIndices():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._useCondensedIndices)\n\t\t\treturn this._condensedJointIndices;\n\n\t\treturn this._jointIndices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointWeights():Array\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._jointWeights;\n\t}\n\n\t/**\n\t * Indicates whether or not to take the size of faces into account when auto-deriving vertex normals and tangents.\n\t */\n\tpublic get useFaceWeights():boolean\n\t{\n\t\treturn this._useFaceWeights;\n\t}\n\n\tpublic set useFaceWeights(value:boolean)\n\t{\n\t\tif (this._useFaceWeights == value)\n\t\t\treturn;\n\n\t\tthis._useFaceWeights = value;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._faceNormalsDirty = true;\n\t}\n\n\tpublic get numCondensedJoints():number\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._numCondensedJoints;\n\t}\n\n\tpublic get condensedIndexLookUp():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._condensedIndexLookUp;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper(concatenatedArrays);\n\n\t\tthis._pSubMeshClass = TriangleSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tthis._positions = values;\n\n\t\tif (this._positions == null)\n\t\t\tthis._positions = new Array();\n\n\t\tthis._pNumVertices = this._positions.length/3;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tvar len:number = this._pNumVertices*this.getStride(TriangleSubGeometry.VERTEX_DATA);\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t\ti = 0;\n\t\t\tindex = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\t\tpositions = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tpositions[index] = values[i++];\n\t\t\t\tpositions[index + 1] = values[i++];\n\t\t\t\tpositions[index + 2] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis.notifyUVsUpdate()\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex normals based on the geometry.\n\t */\n\tpublic updateVertexNormals(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar normals:Array;\n\n\t\tif (!this._autoDeriveNormals) {\n\t\t\tif ((this._vertexNormals == null || values == null) && (this._vertexNormals != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._vertexNormals = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tnormals = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tnormals[index] = values[i++];\n\t\t\t\t\tnormals[index + 1] = values[i++];\n\t\t\t\t\tnormals[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexNormals == null) {\n\t\t\t\tthis._vertexNormals = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceNormalsDirty)\n\t\t\t\tthis.updateFaceNormals();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\n\t\t\t//autoderived normals\n\t\t\tnormals = this._concatenateArrays? this._pVertices : this._vertexNormals;\n\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear normal values\n\t\t\tvar lenV:number = normals.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tnormals[index] = 0;\n\t\t\t\tnormals[index + 1] = 0;\n\t\t\t\tnormals[index + 2] = 0;\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\tvar weight:number;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face normals\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average normals collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = normals[index];\n\t\t\t\tvar vy:number = normals[index + 1];\n\t\t\t\tvar vz:number = normals[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index] = vx*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\tnormals[index] = vx*d;\n\t\t\t\t\tnormals[index + 1] = vy*d;\n\t\t\t\t\tnormals[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyNormalsUpdate();\n\n\t\tthis._vertexNormalsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex tangents based on the geometry.\n\t */\n\tpublic updateVertexTangents(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar tangents:Array;\n\n\t\tif (!this._autoDeriveTangents) {\n\t\t\tif ((this._vertexTangents == null || values == null) && (this._vertexTangents != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\n\t\t\tthis._vertexTangents = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\ttangents = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\ttangents[index] = values[i++];\n\t\t\t\t\ttangents[index + 1] = values[i++];\n\t\t\t\t\ttangents[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexTangents == null) {\n\t\t\t\tthis._vertexTangents = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceTangentsDirty)\n\t\t\t\tthis.updateFaceTangents();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\t\t//autoderived tangents\n\t\t\ttangents = this._concatenateArrays? this._pVertices : this._vertexTangents;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear tangent values\n\t\t\tvar lenV:number = tangents.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\ttangents[index] = 0;\n\t\t\t\ttangents[index + 1] = 0;\n\t\t\t\ttangents[index + 2] = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar weight:number;\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face tangents\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average tangents collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = tangents[index];\n\t\t\t\tvar vy:number = tangents[index + 1];\n\t\t\t\tvar vz:number = tangents[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index] = vx*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\ttangents[index] = vx*d;\n\t\t\t\t\ttangents[index + 1] = vy*d;\n\t\t\t\t\ttangents[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._vertexTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the uvs based on the geometry.\n\t */\n\tpublic updateUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (!this._autoDeriveUVs) {\n\t\t\tif ((this._uvs == null || values == null) && (this._uvs != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._uvs = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\t\t\t\tuvs = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tuvs[index] = values[i++];\n\t\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (this._uvs == null) {\n\t\t\t\tthis._uvs = new Array(this._positions.length*2/3);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\n\t\t\t//autoderived uvs\n\t\t\tuvs = this._concatenateArrays? this._pVertices : this._uvs;\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tvar uvIdx:number = 0;\n\n\t\t\t//clear uv values\n\t\t\tvar lenV:number = uvs.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._uvs[i++] = uvs[index] = uvIdx*.5;\n\t\t\t\t\tthis._uvs[i++] = uvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t} else {\n\t\t\t\t\tuvs[index] = uvIdx*.5;\n\t\t\t\t\tuvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t}\n\n\t\t\t\tif (++uvIdx == 3)\n\t\t\t\t\tuvIdx = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis.notifyUVsUpdate();\n\n\t\tthis._uvsDirty = false;\n\t}\n\n\t/**\n\t * Updates the secondary uvs based on the geometry.\n\t */\n\tpublic updateSecondaryUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (this._concatenateArrays && (this._secondaryUVs == null || values == null) && (this._secondaryUVs != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._secondaryUVs = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.SECONDARY_UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tuvs = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tuvs[index] = values[i++];\n\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifySecondaryUVsUpdate();\n\n\t\tthis._secondaryUVsDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint indices\n\t */\n\tpublic updateJointIndices(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointIndices:Array;\n\n\t\tif (this._concatenateArrays && (this._jointIndices == null || values == null) && (this._jointIndices != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointIndices = values;\n\n\t\tif (values != null) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tif (this._useCondensedIndices) {\n\t\t\t\ti = 0;\n\t\t\t\tj = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._concatenateArrays? this._pVertices : this._condensedJointIndices;\n\t\t\t\tvar oldIndex:number;\n\t\t\t\tvar newIndex:number = 0;\n\t\t\t\tvar dic:Object = new Object();\n\n\t\t\t\tif (!this._concatenateArrays)\n\t\t\t\t\tthis._condensedJointIndices = new Array(values.length);\n\n\t\t\t\tthis._condensedIndexLookUp = new Array();\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tfor (j = 0; j < this._jointsPerVertex; j++) {\n\t\t\t\t\t\toldIndex = values[i++];\n\n\t\t\t\t\t\t// if we encounter a new index, assign it a new condensed index\n\t\t\t\t\t\tif (dic[oldIndex] == undefined) {\n\t\t\t\t\t\t\tdic[oldIndex] = newIndex*3; //3 required for the three vectors that store the matrix\n\t\t\t\t\t\t\tthis._condensedIndexLookUp[newIndex++] = oldIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjointIndices[index + j] = dic[oldIndex];\n\t\t\t\t\t}\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t\tthis._numCondensedJoints = newIndex;\n\t\t\t} else if (this._concatenateArrays) {\n\n\t\t\t\ti = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\t\tjointIndices[index + j++] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointIndicesUpdate();\n\n\t\tthis._jointIndicesDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint weights.\n\t */\n\tpublic updateJointWeights(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointWeights:Array;\n\n\t\tif (this._concatenateArrays && (this._jointWeights == null || values == null) && (this._jointWeights != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointWeights = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tjointWeights = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tj = 0;\n\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\tjointWeights[index + j++] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointWeightsUpdate();\n\n\t\tthis._jointWeightsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._positions = null;\n\t\tthis._vertexNormals = null;\n\t\tthis._vertexTangents = null;\n\t\tthis._uvs = null;\n\t\tthis._secondaryUVs = null;\n\t\tthis._jointIndices = null;\n\t\tthis._jointWeights = null;\n\n\t\tthis._faceNormals = null;\n\t\tthis._faceWeights = null;\n\t\tthis._faceTangents = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tsuper.updateIndices(indices);\n\n\t\tthis._faceNormalsDirty = true;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis._uvsDirty = true;\n\t}\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():TriangleSubGeometry\n\t{\n\t\tvar clone:TriangleSubGeometry = new TriangleSubGeometry(this._concatenateArrays);\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._positions.concat());\n\n\t\tif (this._vertexNormals && !this._autoDeriveNormals)\n\t\t\tclone.updateVertexNormals(this._vertexNormals.concat());\n\t\telse\n\t\t\tclone.updateVertexNormals(null);\n\n\t\tif (this._uvs && !this._autoDeriveUVs)\n\t\t\tclone.updateUVs(this._uvs.concat());\n\t\telse\n\t\t\tclone.updateUVs(null);\n\n\t\tif (this._vertexTangents && !this._autoDeriveTangents)\n\t\t\tclone.updateVertexTangents(this._vertexTangents.concat());\n\t\telse\n\t\t\tclone.updateVertexTangents(null);\n\n\t\tif (this._secondaryUVs)\n\t\t\tclone.updateSecondaryUVs(this._secondaryUVs.concat());\n\n\t\tif (this._jointIndices) {\n\t\t\tclone.jointsPerVertex = this._jointsPerVertex;\n\t\t\tclone.updateJointIndices(this._jointIndices.concat());\n\t\t}\n\n\t\tif (this._jointWeights)\n\t\t\tclone.updateJointWeights(this._jointWeights.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tuvs = this._uvs;\n\n\t\tvar ratioU:number = scaleU/this._scaleU;\n\t\tvar ratioV:number = scaleV/this._scaleV;\n\n\t\tthis._scaleU = scaleU;\n\t\tthis._scaleV = scaleV;\n\n\t\tvar len:number = uvs.length;\n\n\t\toffset = 0;\n\t\tstride = 2;\n\n\t\tindex = offset;\n\n\t\twhile (index < len) {\n\t\t\tuvs[index] *= ratioU;\n\t\t\tuvs[index + 1] *= ratioV;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tpositions = this._positions;\n\n\t\tvar len:number = positions.length;\n\n\t\toffset = 0;\n\t\tstride = 3;\n\n\t\ti = 0;\n\t\tindex = offset;\n\t\twhile (i < len) {\n\t\t\tpositions[index] *= scale;\n\t\t\tpositions[index + 1] *= scale;\n\t\t\tpositions[index + 2] *= scale;\n\n\t\t\ti += 3;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tpositions = this._pVertices;\n\t\t\tnormals = this._pVertices;\n\t\t\ttangents = this._pVertices;\n\t\t} else {\n\t\t\tpositions = this._positions;\n\t\t\tnormals = this._vertexNormals;\n\t\t\ttangents = this._vertexTangents;\n\t\t}\n\n\t\tvar len:number = this._positions.length/3;\n\t\tvar i:number;\n\t\tvar i1:number;\n\t\tvar i2:number;\n\t\tvar vector:Vector3D = new Vector3D();\n\n\t\tvar bakeNormals:boolean = this._vertexNormals != null;\n\t\tvar bakeTangents:boolean = this._vertexTangents != null;\n\t\tvar invTranspose:Matrix3D;\n\n\t\tif (bakeNormals || bakeTangents) {\n\t\t\tinvTranspose = transform.clone();\n\t\t\tinvTranspose.invert();\n\t\t\tinvTranspose.transpose();\n\t\t}\n\n\t\tvar vi0:number = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\tvar ni0:number = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar ti0:number = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tvar vStride:number = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\tvar nStride:number = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar tStride:number = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\ti1 = vi0 + 1;\n\t\t\ti2 = vi0 + 2;\n\n\t\t\t// bake position\n\t\t\tvector.x = positions[vi0];\n\t\t\tvector.y = positions[i1];\n\t\t\tvector.z = positions[i2];\n\t\t\tvector = transform.transformVector(vector);\n\t\t\tpositions[vi0] = vector.x;\n\t\t\tpositions[i1] = vector.y;\n\t\t\tpositions[i2] = vector.z;\n\t\t\tvi0 += vStride;\n\n\t\t\t// bake normal\n\t\t\tif (bakeNormals) {\n\t\t\t\ti1 = ni0 + 1;\n\t\t\t\ti2 = ni0 + 2;\n\t\t\t\tvector.x = normals[ni0];\n\t\t\t\tvector.y = normals[i1];\n\t\t\t\tvector.z = normals[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\tnormals[ni0] = vector.x;\n\t\t\t\tnormals[i1] = vector.y;\n\t\t\t\tnormals[i2] = vector.z;\n\t\t\t\tni0 += nStride;\n\t\t\t}\n\n\t\t\t// bake tangent\n\t\t\tif (bakeTangents) {\n\t\t\t\ti1 = ti0 + 1;\n\t\t\t\ti2 = ti0 + 2;\n\t\t\t\tvector.x = tangents[ti0];\n\t\t\t\tvector.y = tangents[i1];\n\t\t\t\tvector.z = tangents[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\ttangents[ti0] = vector.x;\n\t\t\t\ttangents[i1] = vector.y;\n\t\t\t\ttangents[i2] = vector.z;\n\t\t\t\tti0 += tStride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t * Updates the tangents for each face.\n\t */\n\tprivate updateFaceTangents()\n\t{\n\t\tvar i:number = 0;\n\t\tvar index1:number;\n\t\tvar index2:number;\n\t\tvar index3:number;\n\t\tvar vi:number;\n\t\tvar v0:number;\n\t\tvar dv1:number;\n\t\tvar dv2:number;\n\t\tvar denom:number;\n\t\tvar x0:number, y0:number, z0:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\n\t\tvar positions:Array = this._positions\n\t\tvar uvs:Array = this._uvs;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceTangents == null)\n\t\t\tthis._faceTangents = new Array(len);\n\n\t\twhile (i < len) {\n\t\t\tindex1 = this._pIndices[i];\n\t\t\tindex2 = this._pIndices[i + 1];\n\t\t\tindex3 = this._pIndices[i + 2];\n\n\t\t\tv0 = uvs[index1*2 + 1];\n\t\t\tdv1 = uvs[index2*2 + 1] - v0;\n\t\t\tdv2 = uvs[index3*2 + 1] - v0;\n\n\t\t\tvi = index1*3;\n\t\t\tx0 = positions[vi];\n\t\t\ty0 = positions[vi + 1];\n\t\t\tz0 = positions[vi + 2];\n\t\t\tvi = index2*3;\n\t\t\tdx1 = positions[vi] - x0;\n\t\t\tdy1 = positions[vi + 1] - y0;\n\t\t\tdz1 = positions[vi + 2] - z0;\n\t\t\tvi = index3*3;\n\t\t\tdx2 = positions[vi] - x0;\n\t\t\tdy2 = positions[vi + 1] - y0;\n\t\t\tdz2 = positions[vi + 2] - z0;\n\n\t\t\tcx = dv2*dx1 - dv1*dx2;\n\t\t\tcy = dv2*dy1 - dv1*dy2;\n\t\t\tcz = dv2*dz1 - dv1*dz2;\n\t\t\tdenom = 1/Math.sqrt(cx*cx + cy*cy + cz*cz);\n\n\t\t\tthis._faceTangents[i++] = denom*cx;\n\t\t\tthis._faceTangents[i++] = denom*cy;\n\t\t\tthis._faceTangents[i++] = denom*cz;\n\t\t}\n\n\t\tthis._faceTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the normals for each face.\n\t */\n\tprivate updateFaceNormals()\n\t{\n\t\tvar i:number = 0;\n\t\tvar j:number = 0;\n\t\tvar k:number = 0;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\n\t\tvar x1:number, x2:number, x3:number;\n\t\tvar y1:number, y2:number, y3:number;\n\t\tvar z1:number, z2:number, z3:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\t\tvar d:number;\n\n\t\tvar positions:Array = this._positions;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceNormals == null)\n\t\t\tthis._faceNormals = new Array(len);\n\n\t\tif (this._useFaceWeights && this._faceWeights == null)\n\t\t\tthis._faceWeights = new Array(len/3);\n\n\t\twhile (i < len) {\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx1 = positions[index];\n\t\t\ty1 = positions[index + 1];\n\t\t\tz1 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx2 = positions[index];\n\t\t\ty2 = positions[index + 1];\n\t\t\tz2 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx3 = positions[index];\n\t\t\ty3 = positions[index + 1];\n\t\t\tz3 = positions[index + 2];\n\t\t\tdx1 = x3 - x1;\n\t\t\tdy1 = y3 - y1;\n\t\t\tdz1 = z3 - z1;\n\t\t\tdx2 = x2 - x1;\n\t\t\tdy2 = y2 - y1;\n\t\t\tdz2 = z2 - z1;\n\t\t\tcx = dz1*dy2 - dy1*dz2;\n\t\t\tcy = dx1*dz2 - dz1*dx2;\n\t\t\tcz = dy1*dx2 - dx1*dy2;\n\t\t\td = Math.sqrt(cx*cx + cy*cy + cz*cz);\n\t\t\t// length of cross product = 2*triangle area\n\n\t\t\tif (this._useFaceWeights) {\n\t\t\t\tvar w:number = d*10000;\n\n\t\t\t\tif (w < 1)\n\t\t\t\t\tw = 1;\n\n\t\t\t\tthis._faceWeights[k++] = w;\n\t\t\t}\n\n\t\t\td = 1/d;\n\n\t\t\tthis._faceNormals[j++] = cx*d;\n\t\t\tthis._faceNormals[j++] = cy*d;\n\t\t\tthis._faceNormals[j++] = cz*d;\n\t\t}\n\n\t\tthis._faceNormalsDirty = false;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t\tthis.notifyUVsUpdate();\n\t\tthis.notifySecondaryUVsUpdate();\n\t\tthis.notifyJointIndicesUpdate();\n\t\tthis.notifyJointWeightsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyNormalsUpdate()\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (!this._normalsUpdated)\n\t\t\tthis._normalsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.NORMAL_DATA);\n\n\t\tthis.dispatchEvent(this._normalsUpdated);\n\t}\n\n\tprivate notifyTangentsUpdate()\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (!this._tangentsUpdated)\n\t\t\tthis._tangentsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.TANGENT_DATA);\n\n\t\tthis.dispatchEvent(this._tangentsUpdated);\n\t}\n\n\tprivate notifyUVsUpdate()\n\t{\n\t\tif (this._uvsDirty)\n\t\t\treturn;\n\n\t\tthis._uvsDirty = true;\n\n\t\tif (!this._uvsUpdated)\n\t\t\tthis._uvsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.UV_DATA);\n\n\t\tthis.dispatchEvent(this._uvsUpdated);\n\t}\n\n\tprivate notifySecondaryUVsUpdate()\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\treturn;\n\n\t\tthis._secondaryUVsDirty = true;\n\n\t\tif (!this._secondaryUVsUpdated)\n\t\t\tthis._secondaryUVsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\tthis.dispatchEvent(this._secondaryUVsUpdated);\n\t}\n\n\tprivate notifyJointIndicesUpdate()\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\treturn;\n\n\t\tthis._jointIndicesDirty = true;\n\n\t\tif (!this._jointIndicesUpdated)\n\t\t\tthis._jointIndicesUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_INDEX_DATA);\n\n\t\tthis.dispatchEvent(this._jointIndicesUpdated);\n\t}\n\n\tprivate notifyJointWeightsUpdate()\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\treturn;\n\n\t\tthis._jointWeightsDirty = true;\n\n\t\tif (!this._jointWeightsUpdated)\n\t\t\tthis._jointWeightsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\tthis.dispatchEvent(this._jointWeightsUpdated);\n\t}\n}\n\nexport = TriangleSubGeometry;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\n\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * TriangleSubMesh wraps a TriangleSubGeometry as a scene graph instantiation. A TriangleSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.TriangleSubMesh\n */\nclass TriangleSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:TriangleSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.TRIANGLE_SUB_MESH;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t */\n\tpublic get subGeometry():TriangleSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new TriangleSubMesh object\n\t * @param subGeometry The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t * @param parentMesh The Mesh object to which this TriangleSubMesh belongs.\n\t * @param material An optional material used to render this TriangleSubMesh.\n\t */\n\tconstructor(subGeometry:TriangleSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyTriangleSubMesh(this);\n\t}\n}\n\nexport = TriangleSubMesh;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport ArgumentError\t\t\t\t= require(\"awayjs-core/lib/errors/ArgumentError\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\nimport RangeError\t\t\t\t\t= require(\"awayjs-core/lib/errors/RangeError\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\n\n/**\n * The DisplayObjectContainer class is the base class for all objects that can\n * serve as display object containers on the display list. The display list\n * manages all objects displayed in the Flash runtimes. Use the\n * DisplayObjectContainer class to arrange the display objects in the display\n * list. Each DisplayObjectContainer object has its own child list for\n * organizing the z-order of the objects. The z-order is the front-to-back\n * order that determines which object is drawn in front, which is behind, and\n * so on.\n *\n *

DisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject() throws an\n * ArgumentError exception.

\n * The DisplayObjectContainer class is an abstract base class for all objects\n * that can contain child objects. It cannot be instantiated directly; calling\n * the new DisplayObjectContainer() constructor throws an\n * ArgumentError exception.\n *\n *

For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.

\n */\nclass DisplayObjectContainer extends DisplayObject implements IAsset\n{\n\tprivate _mouseChildren:boolean = true;\n\tprivate _children:Array = new Array();\n\tpublic _iIsRoot:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CONTAINER;\n\t}\n\n\t/**\n\t * Determines whether or not the children of the object are mouse, or user\n\t * input device, enabled. If an object is enabled, a user can interact with\n\t * it by using a mouse or user input device. The default is\n\t * true.\n\t *\n\t *

This property is useful when you create a button with an instance of\n\t * the Sprite class(instead of using the SimpleButton class). When you use a\n\t * Sprite instance to create a button, you can choose to decorate the button\n\t * by using the addChild() method to add additional Sprite\n\t * instances. This process can cause unexpected behavior with mouse events\n\t * because the Sprite instances you add as children can become the target\n\t * object of a mouse event when you expect the parent instance to be the\n\t * target object. To ensure that the parent instance serves as the target\n\t * objects for mouse events, you can set the mouseChildren\n\t * property of the parent instance to false.

\n\t *\n\t *

No event is dispatched by setting this property. You must use the\n\t * addEventListener() method to create interactive\n\t * functionality.

\n\t */\n\tpublic get mouseChildren():boolean\n\t{\n\t\treturn this._mouseChildren;\n\t}\n\n\tpublic set mouseChildren(value:boolean)\n\t{\n\t\tif (this._mouseChildren == value)\n\t\t\treturn;\n\n\t\tthis._mouseChildren = value;\n\n\t\tthis._pUpdateImplicitMouseEnabled(this._pParent? this._pParent.mouseChildren : true);\n\t}\n\n\t/**\n\t * Returns the number of children of this object.\n\t */\n\tpublic get numChildren():number /*int*/\n\t{\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Determines whether the children of the object are tab enabled. Enables or\n\t * disables tabbing for the children of the object. The default is\n\t * true.\n\t *\n\t *

Note: Do not use the tabChildren property with\n\t * Flex. Instead, use the\n\t * mx.core.UIComponent.hasFocusableChildren property.

\n\t *\n\t * @throws IllegalOperationError Calling this property of the Stage object\n\t * throws an exception. The Stage object does\n\t * not implement this property.\n\t */\n\tpublic tabChildren:boolean;\n\n\t/**\n\t * Calling the new DisplayObjectContainer() constructor throws\n\t * an ArgumentError exception. You can, however, call\n\t * constructors for the following subclasses of DisplayObjectContainer:\n\t *
    \n\t *
  • new Loader()
  • \n\t *
  • new Sprite()
  • \n\t *
  • new MovieClip()
  • \n\t *
\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added to the front(top) of all other children in\n\t * this DisplayObjectContainer instance.(To add a child to a specific index\n\t * position, use the addChildAt() method.)\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t *

Note: The command stage.addChild() can cause\n\t * problems with a published SWF file, including security problems and\n\t * conflicts with other loaded SWF files. There is only one Stage within a\n\t * Flash runtime instance, no matter how many SWF files you load into the\n\t * runtime. So, generally, objects should not be added to the Stage,\n\t * directly, at all. The only object the Stage should contain is the root\n\t * object. Create a DisplayObjectContainer to contain all of the items on the\n\t * display list. Then, if necessary, add that DisplayObjectContainer instance\n\t * to the Stage.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null.\");\n\n\t\t//if child already has a parent, remove it.\n\t\tif (child._pParent)\n\t\t\tchild._pParent.removeChildInternal(child);\n\n\t\tchild.iSetParent(this);\n\n\t\tthis._children.push(child);\n\n\t\treturn child;\n\t}\n\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added at the index position specified. An index of\n\t * 0 represents the back(bottom) of the display list for this\n\t * DisplayObjectContainer object.\n\t *\n\t *

For example, the following example shows three display objects, labeled\n\t * a, b, and c, at index positions 0, 2, and 1, respectively:

\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @param index The index position to which the child is added. If you\n\t * specify a currently occupied index position, the child object\n\t * that exists at that position and all higher positions are\n\t * moved up one position in the child list.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @throws RangeError Throws if the index position does not exist in the\n\t * child list.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChildAt(child:DisplayObject, index:number /*int*/):DisplayObject\n\t{\n\t\treturn child;\n\t}\n\n\tpublic addChildren(...childarray:Array)\n\t{\n\t\tvar len:number = childarray.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis.addChild(childarray[i]);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:DisplayObjectContainer = new DisplayObjectContainer();\n\t\tclone.pivot = this.pivot;\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.partition = this.partition;\n\t\tclone.name = name;\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone.addChild(this._children[i].clone());\n\n\t\t// todo: implement for all subtypes\n\t\treturn clone;\n\t}\n\n\t/**\n\t * Determines whether the specified display object is a child of the\n\t * DisplayObjectContainer instance or the instance itself. The search\n\t * includes the entire display list including this DisplayObjectContainer\n\t * instance. Grandchildren, great-grandchildren, and so on each return\n\t * true.\n\t *\n\t * @param child The child object to test.\n\t * @return true if the child object is a child of\n\t * the DisplayObjectContainer or the container itself; otherwise\n\t * false.\n\t */\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._children.indexOf(child) >= 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic disposeWithChildren()\n\t{\n\t\tthis.dispose();\n\n\t\twhile (this.numChildren > 0)\n\t\t\tthis.getChildAt(0).dispose();\n\t}\n\n\t/**\n\t * Returns the child display object instance that exists at the specified\n\t * index.\n\t *\n\t * @param index The index position of the child object.\n\t * @return The child display object at the specified index position.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic getChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\tvar child:DisplayObject = this._children[index];\n\n\t\tif (child == null)\n\t\t\tthrow new RangeError(\"Index does not exist in the child list of the caller\");\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Returns the child display object that exists with the specified name. If\n\t * more that one child display object has the specified name, the method\n\t * returns the first object in the child list.\n\t *\n\t *

The getChildAt() method is faster than the\n\t * getChildByName() method. The getChildAt() method\n\t * accesses a child from a cached array, whereas the\n\t * getChildByName() method has to traverse a linked list to\n\t * access a child.

\n\t *\n\t * @param name The name of the child to return.\n\t * @return The child display object with the specified name.\n\t */\n\tpublic getChildByName(name:string):DisplayObject\n\t{\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tif (this._children[i].name == name)\n\t\t\t\treturn this._children[i];\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the index position of a child DisplayObject instance.\n\t *\n\t * @param child The DisplayObject instance to identify.\n\t * @return The index position of the child display object to identify.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic getChildIndex(child:DisplayObject):number /*int*/\n\t{\n\t\tvar childIndex:number = this._children.indexOf(child);\n\n\t\tif (childIndex == -1)\n\t\t\tthrow new ArgumentError(\"Child parameter is not a child of the caller\");\n\n\t\treturn childIndex;\n\t}\n\n\t/**\n\t * Returns an array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this DisplayObjectContainer\n\t * instance. Any child objects that are inaccessible for security reasons are\n\t * omitted from the returned array. To determine whether this security\n\t * restriction affects the returned array, call the\n\t * areInaccessibleObjectsUnderPoint() method.\n\t *\n\t *

The point parameter is in the coordinate space of the\n\t * Stage, which may differ from the coordinate space of the display object\n\t * container(unless the display object container is the Stage). You can use\n\t * the globalToLocal() and the localToGlobal()\n\t * methods to convert points between these coordinate spaces.

\n\t *\n\t * @param point The point under which to look.\n\t * @return An array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this\n\t * DisplayObjectContainer instance.\n\t */\n\tpublic getObjectsUnderPoint(point:Point):Array\n\t{\n\t\treturn new Array();\n\t}\n\n\t/**\n\t * Removes the specified child DisplayObject instance from the\n\t * child list of the DisplayObjectContainer instance. The parent\n\t * property of the removed child is set to null , and the object\n\t * is garbage collected if no other references to the child exist. The index\n\t * positions of any display objects above the child in the\n\t * DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param child The DisplayObject instance to remove.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic removeChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null\");\n\n\t\tthis.removeChildInternal(child);\n\n\t\tchild.iSetParent(null);\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Removes a child DisplayObject from the specified index\n\t * position in the child list of the DisplayObjectContainer. The\n\t * parent property of the removed child is set to\n\t * null, and the object is garbage collected if no other\n\t * references to the child exist. The index positions of any display objects\n\t * above the child in the DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param index The child index of the DisplayObject to remove.\n\t * @return The DisplayObject instance that was removed.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t * @throws SecurityError This child display object belongs to a sandbox to\n\t * which the calling object does not have access. You\n\t * can avoid this situation by having the child movie\n\t * call the Security.allowDomain() method.\n\t */\n\tpublic removeChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\treturn this.removeChild(this._children[index]);\n\t}\n\n\t/**\n\t * Removes all child DisplayObject instances from the child list\n\t * of the DisplayObjectContainer instance. The parent property\n\t * of the removed children is set to null, and the objects are\n\t * garbage collected if no other references to the children exist.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable or\n\t * object is no longer actively referenced or stored somewhere, the garbage\n\t * collector sweeps through and wipes out the memory space it used to occupy\n\t * if no other references to it exist.\n\t *\n\t * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.\n\t * @param endIndex The ending position. A value smaller than 0 throws a RangeError.\n\t * @throws RangeError Throws if the beginIndex or endIndex positions do\n\t * not exist in the child list.\n\t */\n\tpublic removeChildren(beginIndex:number /*int*/ = 0, endIndex:number /*int*/ = 2147483647)\n\t{\n\t\tif (beginIndex < 0)\n\t\t\tthrow new RangeError(\"beginIndex is out of range of the child list\");\n\n\t\tif (endIndex > this._children.length)\n\t\t\tthrow new RangeError(\"endIndex is out of range of the child list\");\n\n\t\tfor(var i:number /*uint*/ = beginIndex; i < endIndex; i++)\n\t\t\tthis.removeChild(this._children[i]);\n\t}\n\n\t/**\n\t * Changes the position of an existing child in the display object container.\n\t * This affects the layering of child objects. For example, the following\n\t * example shows three display objects, labeled a, b, and c, at index\n\t * positions 0, 1, and 2, respectively:\n\t *\n\t *

When you use the setChildIndex() method and specify an\n\t * index position that is already occupied, the only positions that change\n\t * are those in between the display object's former and new position. All\n\t * others will stay the same. If a child is moved to an index LOWER than its\n\t * current index, all children in between will INCREASE by 1 for their index\n\t * reference. If a child is moved to an index HIGHER than its current index,\n\t * all children in between will DECREASE by 1 for their index reference. For\n\t * example, if the display object container in the previous example is named\n\t * container, you can swap the position of the display objects\n\t * labeled a and b by calling the following code:

\n\t *\n\t *

This code results in the following arrangement of objects:

\n\t *\n\t * @param child The child DisplayObject instance for which you want to change\n\t * the index number.\n\t * @param index The resulting index number for the child display\n\t * object.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic setChildIndex(child:DisplayObject, index:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order (front-to-back order) of the two specified child\n\t * objects. All other child objects in the display object container remain in\n\t * the same index positions.\n\t *\n\t * @param child1 The first child object.\n\t * @param child2 The second child object.\n\t * @throws ArgumentError Throws if either child parameter is not a child of\n\t * this object.\n\t */\n\tpublic swapChildren(child1:DisplayObject, child2:DisplayObject)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order(front-to-back order) of the child objects at the two\n\t * specified index positions in the child list. All other child objects in\n\t * the display object container remain in the same index positions.\n\t *\n\t * @param index1 The index position of the first child object.\n\t * @param index2 The index position of the second child object.\n\t * @throws RangeError If either index does not exist in the child list.\n\t */\n\tpublic swapChildrenAt(index1:number /*int*/, index2:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i].pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tsuper._pUpdateScene(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateScene(value);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitMouseEnabled(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitMouseEnabled(this._mouseChildren);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitVisibility(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitVisibility(this._pImplicitVisibility);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\tsuper._pUpdateImplicitPartition(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitPartition(this._pImplicitPartition);\n\t}\n\n\t/**\n\t * @private\n\t *\n\t * @param child\n\t */\n\tprivate removeChildInternal(child:DisplayObject):DisplayObject\n\t{\n\t\tthis._children.splice(this.getChildIndex(child), 1);\n\n\t\treturn child;\n\t}\n}\n\nexport = DisplayObjectContainer;","import AssetLibraryBundle\t\t\t= require(\"awayjs-core/lib/library/AssetLibraryBundle\");\nimport AssetLoader\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoader\");\nimport AssetLoaderContext\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderContext\");\nimport AssetLoaderToken\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderToken\");\nimport URLRequest\t\t\t\t\t= require(\"awayjs-core/lib/net/URLRequest\");\nimport AssetEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/AssetEvent\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IOErrorEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/IOErrorEvent\");\nimport LoaderEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/LoaderEvent\");\nimport ParserEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/ParserEvent\");\nimport ParserBase\t\t\t\t\t= require(\"awayjs-core/lib/parsers/ParserBase\");\n\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LoaderInfo\t\t\t\t\t= require(\"awayjs-display/lib/base/LoaderInfo\");\n\n/**\n * The Loader class is used to load SWF files or image(JPG, PNG, or GIF)\n * files. Use the load() method to initiate loading. The loaded\n * display object is added as a child of the Loader object.\n *\n *

Use the URLLoader class to load text or binary data.

\n *\n *

The Loader class overrides the following methods that it inherits,\n * because a Loader object can only have one child display object - the\n * display object that it loads. Calling the following methods throws an\n * exception: addChild(), addChildAt(),\n * removeChild(), removeChildAt(), and\n * setChildIndex(). To remove a loaded display object, you must\n * remove the Loader object from its parent DisplayObjectContainer\n * child array.

\n *\n *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes\n * are not used in ActionScript 3.0. The Loader and URLLoader classes replace\n * them.

\n *\n *

When you use the Loader class, consider the Flash Player and Adobe AIR\n * security model:

\n *\n *
    \n *
  • You can load content from any accessible source.
  • \n *
  • Loading is not allowed if the calling SWF file is in a network\n * sandbox and the file to be loaded is local.
  • \n *
  • If the loaded content is a SWF file written with ActionScript 3.0, it\n * cannot be cross-scripted by a SWF file in another security sandbox unless\n * that cross-scripting arrangement was approved through a call to the\n * System.allowDomain() or the\n * System.allowInsecureDomain() method in the loaded content\n * file.
  • \n *
  • If the loaded content is an AVM1 SWF file(written using ActionScript\n * 1.0 or 2.0), it cannot be cross-scripted by an AVM2 SWF file(written using\n * ActionScript 3.0). However, you can communicate between the two SWF files\n * by using the LocalConnection class.
  • \n *
  • If the loaded content is an image, its data cannot be accessed by a\n * SWF file outside of the security sandbox, unless the domain of that SWF\n * file was included in a URL policy file at the origin domain of the\n * image.
  • \n *
  • Movie clips in the local-with-file-system sandbox cannot script movie\n * clips in the local-with-networking sandbox, and the reverse is also\n * prevented.
  • \n *
  • You cannot connect to commonly reserved ports. For a complete list of\n * blocked ports, see \"Restricting Networking APIs\" in the ActionScript 3.0\n * Developer's Guide.
  • \n *
\n *\n *

However, in AIR, content in the application security\n * sandbox(content installed with the AIR application) are not restricted by\n * these security limitations.

\n *\n *

For more information related to security, see the Flash Player Developer\n * Center Topic: Security.

\n *\n *

When loading a SWF file from an untrusted source(such as a domain other\n * than that of the Loader object's root SWF file), you may want to define a\n * mask for the Loader object, to prevent the loaded content(which is a child\n * of the Loader object) from drawing to portions of the Stage outside of that\n * mask, as shown in the following code:

\n */\nclass Loader extends DisplayObjectContainer\n{\n\t/**\n\t * Dispatched when any asset finishes parsing. Also see specific events for each\n\t * individual asset type (meshes, materials et c.)\n\t *\n\t * @eventType AssetEvent\n\t */\n\t//[Event(name=\"assetComplete\", type=\"AssetEvent\")]\n\n\n\t/**\n\t * Dispatched when a full resource (including dependencies) finishes loading.\n\t *\n\t * @eventType LoaderEvent\n\t */\n\t//[Event(name=\"resourceComplete\", type=\"LoaderEvent\")]\n\n\tprivate _loadingSessions:Array;\n\tprivate _useAssetLib:boolean;\n\tprivate _assetLibId:string;\n\tprivate _onResourceCompleteDelegate:Function;\n\tprivate _onAssetCompleteDelegate:Function;\n\n\tprivate _content:DisplayObject;\n\tprivate _contentLoaderInfo:LoaderInfo;\n\n\t/**\n\t * Contains the root display object of the SWF file or image(JPG, PNG, or\n\t * GIF) file that was loaded by using the load() or\n\t * loadBytes() methods.\n\t *\n\t * @throws SecurityError The loaded SWF file or image file belongs to a\n\t * security sandbox to which you do not have access.\n\t * For a loaded SWF file, you can avoid this situation\n\t * by having the file call the\n\t * Security.allowDomain() method or by\n\t * having the loading file specify a\n\t * loaderContext parameter with its\n\t * securityDomain property set to\n\t * SecurityDomain.currentDomain when you\n\t * call the load() or\n\t * loadBytes() method.\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * Returns a LoaderInfo object corresponding to the object being loaded.\n\t * LoaderInfo objects are shared between the Loader object and the loaded\n\t * content object. The LoaderInfo object supplies loading progress\n\t * information and statistics about the loaded file.\n\t *\n\t *

Events related to the load are dispatched by the LoaderInfo object\n\t * referenced by the contentLoaderInfo property of the Loader\n\t * object. The contentLoaderInfo property is set to a valid\n\t * LoaderInfo object, even before the content is loaded, so that you can add\n\t * event listeners to the object prior to the load.

\n\t *\n\t *

To detect uncaught errors that happen in a loaded SWF, use the\n\t * Loader.uncaughtErrorEvents property, not the\n\t * Loader.contentLoaderInfo.uncaughtErrorEvents property.

\n\t */\n\tpublic get contentLoaderInfo():LoaderInfo\n\t{\n\t\treturn this._contentLoaderInfo;\n\t}\n\n\t/**\n\t * Creates a Loader object that you can use to load files, such as SWF, JPEG,\n\t * GIF, or PNG files. Call the load() method to load the asset\n\t * as a child of the Loader instance. You can then add the Loader object to\n\t * the display list(for instance, by using the addChild()\n\t * method of a DisplayObjectContainer instance). The asset appears on the\n\t * Stage as it loads.\n\t *\n\t *

You can also use a Loader instance \"offlist,\" that is without adding it\n\t * to a display object container on the display list. In this mode, the\n\t * Loader instance might be used to load a SWF file that contains additional\n\t * modules of an application.

\n\t *\n\t *

To detect when the SWF file is finished loading, you can use the events\n\t * of the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object. At that\n\t * point, the code in the module SWF file can be executed to initialize and\n\t * start the module. In the offlist mode, a Loader instance might also be\n\t * used to load a SWF file that contains components or media assets. Again,\n\t * you can use the LoaderInfo object event notifications to detect when the\n\t * components are finished loading. At that point, the application can start\n\t * using the components and media assets in the library of the SWF file by\n\t * instantiating the ActionScript 3.0 classes that represent those components\n\t * and assets.

\n\t *\n\t *

To determine the status of a Loader object, monitor the following\n\t * events that the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object:

\n\t *\n\t *
    \n\t *
  • The open event is dispatched when loading begins.
  • \n\t *
  • The ioError or securityError event is\n\t * dispatched if the file cannot be loaded or if an error occured during the\n\t * load process.
  • \n\t *
  • The progress event fires continuously while the file is\n\t * being loaded.
  • \n\t *
  • The complete event is dispatched when a file completes\n\t * downloading, but before the loaded movie clip's methods and properties are\n\t * available.
  • \n\t *
  • The init event is dispatched after the properties and\n\t * methods of the loaded SWF file are accessible, so you can begin\n\t * manipulating the loaded SWF file. This event is dispatched before the\n\t * complete handler. In streaming SWF files, the\n\t * init event can occur significantly earlier than the\n\t * complete event. For most purposes, use the init\n\t * handler.
  • \n\t *
\n\t */\n\tconstructor(useAssetLibrary:boolean = true, assetLibraryId:string = null)\n\t{\n\t\tsuper();\n\n\t\tthis._loadingSessions = new Array();\n\t\tthis._useAssetLib = useAssetLibrary;\n\t\tthis._assetLibId = assetLibraryId;\n\n\t\tthis._onResourceCompleteDelegate = (event:LoaderEvent) => this.onResourceComplete(event);\n\t\tthis._onAssetCompleteDelegate = (event:AssetEvent) => this.onAssetComplete(event);\n\t}\n\n\t/**\n\t * Cancels a load() method operation that is currently in\n\t * progress for the Loader instance.\n\t *\n\t */\n\tpublic close()\n\t{\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\tlib.stopAllLoadingSessions();\n\t\t\tthis._loadingSessions = null;\n\t\t\treturn\n\t\t}\n\t\tvar i:number /*int*/;\n\t\tvar length:number /*int*/ = this._loadingSessions.length;\n\t\tfor (i = 0; i < length; i++) {\n\t\t\tthis.removeListeners(this._loadingSessions[i]);\n\t\t\tthis._loadingSessions[i].stop();\n\t\t\tthis._loadingSessions[i] = null;\n\t\t}\n\t\tthis._loadingSessions = null;\n\t}\n\n\t/**\n\t * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an\n\t * object that is a child of this Loader object. If you load an animated GIF\n\t * file, only the first frame is displayed. As the Loader object can contain\n\t * only a single child, issuing a subsequent load() request\n\t * terminates the previous request, if still pending, and commences a new\n\t * load.\n\t *\n\t *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a\n\t * loaded image is 8,191 pixels in width or height, and the total number of\n\t * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191\n\t * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and\n\t * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height\n\t * and 2,880 pixels in width.

\n\t *\n\t *

A SWF file or image loaded into a Loader object inherits the position,\n\t * rotation, and scale properties of the parent display objects of the Loader\n\t * object.

\n\t *\n\t *

Use the unload() method to remove movies or images loaded\n\t * with this method, or to cancel a load operation that is in progress.

\n\t *\n\t *

You can prevent a SWF file from using this method by setting the\n\t * allowNetworking parameter of the the object and\n\t * embed tags in the HTML page that contains the SWF\n\t * content.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t *

In Flash Player 10 and later, if you use a multipart Content-Type(for\n\t * example \"multipart/form-data\") that contains an upload(indicated by a\n\t * \"filename\" parameter in a \"content-disposition\" header within the POST\n\t * body), the POST operation is subject to the security rules applied to\n\t * uploads:

\n\t *\n\t *
    \n\t *
  • The POST operation must be performed in response to a user-initiated\n\t * action, such as a mouse click or key press.
  • \n\t *
  • If the POST operation is cross-domain(the POST target is not on the\n\t * same server as the SWF file that is sending the POST request), the target\n\t * server must provide a URL policy file that permits cross-domain\n\t * access.
  • \n\t *
\n\t *\n\t *

Also, for any multipart Content-Type, the syntax must be valid\n\t * (according to the RFC2046 standard). If the syntax appears to be invalid,\n\t * the POST operation is subject to the security rules applied to\n\t * uploads.

\n\t *\n\t *

For more information related to security, see the Flash Player\n\t * Developer Center Topic: Security.

\n\t *\n\t * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG\n\t * file to be loaded. A relative path must be relative to the\n\t * main SWF file. Absolute URLs must include the protocol\n\t * reference, such as http:// or file:///. Filenames cannot\n\t * include disk drive specifications.\n\t * @param context A LoaderContext object, which has properties that define\n\t * the following:\n\t *
    \n\t *
  • Whether or not to check for the existence of a policy\n\t * file upon loading the object
  • \n\t *
  • The ApplicationDomain for the loaded object
  • \n\t *
  • The SecurityDomain for the loaded object
  • \n\t *
  • The ImageDecodingPolicy for the loaded image\n\t * object
  • \n\t *
\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the loaded content remains in\n\t * its own security domain.

\n\t *\n\t *

For complete details, see the description of the\n\t * properties in the LoaderContext\n\t * class.

\n\t * @param ns An optional namespace string under which the file is to be\n\t * loaded, allowing the differentiation of two resources with\n\t * identical assets.\n\t * @param parser An optional parser object for translating the loaded data\n\t * into a usable resource. If not provided, AssetLoader will\n\t * attempt to auto-detect the file type.\n\t * @throws IOError The digest property of the\n\t * request object is not\n\t * null. You should only set the\n\t * digest property of a URLRequest\n\t * object when calling the\n\t * URLLoader.load() method when\n\t * loading a SWZ file(an Adobe platform\n\t * component).\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError The value of\n\t * LoaderContext.securityDomain\n\t * must be either null or\n\t * SecurityDomain.currentDomain.\n\t * This reflects the fact that you can only\n\t * place the loaded media in its natural\n\t * security sandbox or your own(the latter\n\t * requires a policy file).\n\t * @throws SecurityError Local SWF files may not set\n\t * LoaderContext.securityDomain to anything\n\t * other than null. It is not\n\t * permitted to import non-local media into a\n\t * local sandbox, or to place other local media\n\t * in anything other than its natural sandbox.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @throws SecurityError If the applicationDomain or\n\t * securityDomain properties of\n\t * the context parameter are from\n\t * a disallowed domain.\n\t * @throws SecurityError If a local SWF file is attempting to use the\n\t * securityDomain property of the\n\t * context parameter.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the file has completed loading. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event httpStatus Dispatched by the contentLoaderInfo\n\t * object when a network request is made over HTTP and\n\t * Flash Player can detect the HTTP status code.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * SWF file are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when an input or output error occurs that\n\t * causes a load operation to fail.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the loading operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is received while load operation\n\t * progresses.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if a SWF file in the local-with-filesystem\n\t * sandbox attempts to load content in the\n\t * local-with-networking sandbox, or vice versa.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic load(request:URLRequest, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.load(request, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.load(request, context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Loads from binary data stored in a ByteArray object.\n\t *\n\t *

The loadBytes() method is asynchronous. You must wait for\n\t * the \"init\" event before accessing the properties of a loaded object.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t * @param bytes A ByteArray object. The contents of the ByteArray can be\n\t * any of the file formats supported by the Loader class: SWF,\n\t * GIF, JPEG, or PNG.\n\t * @param context A LoaderContext object. Only the\n\t * applicationDomain property of the\n\t * LoaderContext object applies; the\n\t * checkPolicyFile and\n\t * securityDomain properties of the LoaderContext\n\t * object do not apply.\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the content is loaded into the\n\t * current security domain - a process referred to as \"import\n\t * loading\" in Flash Player security documentation.\n\t * Specifically, if the loading SWF file trusts the remote SWF\n\t * by incorporating the remote SWF into its code, then the\n\t * loading SWF can import it directly into its own security\n\t * domain.

\n\t *\n\t *

For more information related to security, see the Flash\n\t * Player Developer Center Topic: Security.

\n\t * @throws ArgumentError If the length property of the\n\t * ByteArray object is not greater than 0.\n\t * @throws IllegalOperationError If the checkPolicyFile or\n\t * securityDomain property of the\n\t * context parameter are non-null.\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError If the provided\n\t * applicationDomain property of\n\t * the context property is from a\n\t * disallowed domain.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the operation is complete. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * data are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when the runtime cannot parse the data in the\n\t * byte array.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is transfered in memory.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic loadData(data:any, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.loadData(data, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.loadData(data, '', context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Removes a child of this Loader object that was loaded by using the\n\t * load() method. The property of the associated\n\t * LoaderInfo object is reset to null. The child is not\n\t * necessarily destroyed because other objects might have references to it;\n\t * however, it is no longer a child of the Loader object.\n\t *\n\t *

As a best practice, before you unload a child SWF file, you should\n\t * explicitly close any streams in the child SWF file's objects, such as\n\t * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,\n\t * audio in the child SWF file might continue to play, even though the child\n\t * SWF file was unloaded. To close streams in the child SWF file, add an\n\t * event listener to the child that listens for the unload\n\t * event. When the parent calls Loader.unload(), the\n\t * unload event is dispatched to the child. The following code\n\t * shows how you might do this:

\n\t *
 public closeAllStreams(evt:Event) {\n\t * myNetStream.close(); mySound.close(); myNetConnection.close();\n\t * myLocalConnection.close(); }\n\t * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,\n\t * closeAllStreams);
\n\t *\n\t */\n\tpublic unload()\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Enables a specific parser.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClass The parser class to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParser(parserClass:Object)\n\t{\n\t\tAssetLoader.enableParser(parserClass);\n\t}\n\n\t/**\n\t * Enables a list of parsers.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClasses A Vector of parser classes to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParsers(parserClasses:Array)\n\t{\n\t\tAssetLoader.enableParsers(parserClasses);\n\t}\n\n\n\tprivate removeListeners(dispatcher:EventDispatcher)\n\t{\n\t\tdispatcher.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\tdispatcher.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\t}\n\n\tprivate onAssetComplete(event:AssetEvent)\n\t{\n\t\tthis.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Called when an error occurs during loading\n\t */\n\tprivate onLoadError(event:LoaderEvent):boolean\n\t{\n\t\tif (this.hasEventListener(IOErrorEvent.IO_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when a an error occurs during parsing\n\t */\n\tprivate onParseError(event:ParserEvent):boolean\n\t{\n\t\tif (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when the resource and all of its dependencies was retrieved.\n\t */\n\tprivate onResourceComplete(event:LoaderEvent)\n\t{\n\t\tthis._content = event.content;\n\n\t\tif (this._content)\n\t\t\tthis.addChild(this._content);\n\n\t\tthis.dispatchEvent(event);\n\t}\n}\n\nexport = Loader;","import EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport SceneEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\nclass Scene extends EventDispatcher\n{\n\tprivate _expandedPartitions:Array = new Array();\n\tprivate _partitions:Array = new Array();\n\n\tpublic _iSceneGraphRoot:DisplayObjectContainer;\n\tpublic _iCollectionMark = 0;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iSceneGraphRoot = new DisplayObjectContainer();\n\n\t\tthis._iSceneGraphRoot._iSetScene(this);\n\t\tthis._iSceneGraphRoot._iIsRoot = true;\n\t\tthis._iSceneGraphRoot.partition = new Partition(new NodeBase());\n\t}\n\n\tpublic traversePartitions(traverser:ICollector)\n\t{\n\t\tvar i:number = 0;\n\t\tvar len:number = this._partitions.length;\n\n\t\ttraverser.scene = this;\n\n\t\twhile (i < len) {\n\t\t\tthis._iCollectionMark++;\n\t\t\tthis._partitions[i++].traverse(traverser);\n\t\t}\n\t}\n\n\tpublic get partition():Partition\n\t{\n\t\treturn this._iSceneGraphRoot.partition;\n\t}\n\n\tpublic set partition(value:Partition)\n\t{\n\t\tthis._iSceneGraphRoot.partition = value;\n\n\t\tthis.dispatchEvent(new SceneEvent(SceneEvent.PARTITION_CHANGED, this._iSceneGraphRoot));\n\t}\n\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._iSceneGraphRoot.contains(child);\n\t}\n\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.addChild(child);\n\t}\n\n\tpublic removeChild(child:DisplayObject)\n\t{\n\t\tthis._iSceneGraphRoot.removeChild(child);\n\t}\n\n\tpublic removeChildAt(index:number)\n\t{\n\t\tthis._iSceneGraphRoot.removeChildAt(index);\n\t}\n\n\n\tpublic getChildAt(index:number):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.getChildAt(index);\n\t}\n\n\tpublic get numChildren():number\n\t{\n\t\treturn this._iSceneGraphRoot.numChildren;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iRegisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iMarkForUpdate(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.push(partition);\n\n\t\t//ensure duplicates are not found in partitions array\n\t\tif (this._partitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.push(partition);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iUnregisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iRemoveEntity(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.splice(this._expandedPartitions.indexOf(partition), 1);\n\n\t\t//if no more partition references found, remove from partitions array\n\t\tif (this._expandedPartitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.splice(this._partitions.indexOf(partition), 1);\n\t}\n}\n\nexport = Scene;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport getTimer\t\t\t\t\t\t= require(\"awayjs-core/lib/utils/getTimer\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IPicker\t\t\t\t\t\t= require(\"awayjs-display/lib/pick/IPicker\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport RaycastPicker\t\t\t\t= require(\"awayjs-display/lib/pick/RaycastPicker\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport CSSRendererBase\t\t\t\t= require(\"awayjs-display/lib/render/CSSRendererBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport CameraEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport SceneEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport RendererEvent\t\t\t\t= require(\"awayjs-display/lib/events/RendererEvent\");\nimport MouseManager\t\t\t\t\t= require(\"awayjs-display/lib/managers/MouseManager\");\n\nclass View\n{\n\n\t/*\n\t *************************************************************************************************************************\n\t * Development Notes\n\t *************************************************************************************************************************\n\t *\n\t * ShareContext - this is not being used at the moment integration with other frameworks is not yet implemented or tested\n\t * and ( _localPos / _globalPos ) position of viewport are the same for the moment\n\t *\n\t * Background\n\t * - this is currently not being included in our tests and is currently disabled\n\t *\n\t **************************************************************************************************************************\n\t */\n\n\t// Protected\n\tpublic _pScene:Scene;\n\tpublic _pCamera:Camera;\n\tpublic _pEntityCollector:ICollector;\n\tpublic _pRenderer:IRenderer;\n\n\t// Private\n\tprivate _aspectRatio:number;\n\tprivate _width:number = 0;\n\tprivate _height:number = 0;\n\n\tprivate _time:number = 0;\n\tprivate _deltaTime:number = 0;\n\tprivate _backgroundColor:number = 0x000000;\n\tprivate _backgroundAlpha:number = 1;\n\n\tprivate _viewportDirty:boolean = true;\n\tprivate _scissorDirty:boolean = true;\n\n\tprivate _onScenePartitionChangedDelegate:(event:SceneEvent) => void;\n\tprivate _onProjectionChangedDelegate:(event:CameraEvent) => void;\n\tprivate _onViewportUpdatedDelegate:(event:RendererEvent) => void;\n\tprivate _onScissorUpdatedDelegate:(event:RendererEvent) => void;\n\tprivate _mouseManager:MouseManager;\n\tprivate _mousePicker:IPicker = new RaycastPicker();\n\n\tprivate _htmlElement:HTMLDivElement;\n\tprivate _shareContext:boolean;\n\tpublic _pMouseX:number;\n\tpublic _pMouseY:number;\n\n\t/*\n\t ***********************************************************************\n\t * Disabled / Not yet implemented\n\t ***********************************************************************\n\t *\n\t * private _background:away.textures.Texture2DBase;\n\t *\n\t * public _pTouch3DManager:away.managers.Touch3DManager;\n\t *\n\t */\n\tconstructor(renderer:IRenderer, scene:Scene = null, camera:Camera = null)\n\t{\n\t\tthis._onScenePartitionChangedDelegate = (event:SceneEvent) => this.onScenePartitionChanged(event);\n\t\tthis._onProjectionChangedDelegate = (event:CameraEvent) => this.onProjectionChanged(event);\n\t\tthis._onViewportUpdatedDelegate = (event:RendererEvent) => this.onViewportUpdated(event);\n\t\tthis._onScissorUpdatedDelegate = (event:RendererEvent) => this.onScissorUpdated(event);\n\n\t\tthis.scene = scene || new Scene();\n\t\tthis.camera = camera || new Camera();\n\t\tthis.renderer = renderer;\n\n\t\t//make sure document border is zero\n\t\tdocument.body.style.margin = \"0px\";\n\n\t\tthis._htmlElement = document.createElement(\"div\");\n\t\tthis._htmlElement.style.position = \"absolute\";\n\n\t\tdocument.body.appendChild(this._htmlElement);\n\n\t\tthis._mouseManager = MouseManager.getInstance();\n\t\tthis._mouseManager.registerView(this);\n\n//\t\t\tif (this._shareContext)\n//\t\t\t\tthis._mouse3DManager.addViewLayer(this);\n\t}\n\n\t/**\n\t *\n\t * @param e\n\t */\n\tprivate onScenePartitionChanged(event:SceneEvent)\n\t{\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.partition = this.scene.partition;\n\t}\n\n\tpublic layeredView:boolean; //TODO: something to enable this correctly\n\n\tpublic get mouseX():number\n\t{\n\t\treturn this._pMouseX;\n\t}\n\n\tpublic get mouseY():number\n\t{\n\t\treturn this._pMouseY;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get htmlElement():HTMLDivElement\n\t{\n\t\treturn this._htmlElement;\n\t}\n\t/**\n\t *\n\t */\n\tpublic get renderer():IRenderer\n\t{\n\t\treturn this._pRenderer;\n\t}\n\n\tpublic set renderer(value:IRenderer)\n\t{\n\t\tif (this._pRenderer == value)\n\t\t\treturn;\n\n\t\tif (this._pRenderer) {\n\t\t\tthis._pRenderer.dispose();\n\t\t\tthis._pRenderer.removeEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\n\t\t\tthis._pRenderer.removeEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\n\t\t}\n\n\t\tthis._pRenderer = value;\n\n\t\tthis._pRenderer.addEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\n\t\tthis._pRenderer.addEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\n\n\t\t//reset entity collector\n\t\tthis._pEntityCollector = this._pRenderer._iCreateEntityCollector();\n\n\t\tif (this._pCamera)\n\t\t\tthis._pEntityCollector.camera = this._pCamera;\n\n\t\t//reset back buffer\n\t\tthis._pRenderer._iBackgroundR = ((this._backgroundColor >> 16) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundG = ((this._backgroundColor >> 8) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundB = (this._backgroundColor & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundAlpha = this._backgroundAlpha;\n\t\tthis._pRenderer.width = this._width;\n\t\tthis._pRenderer.height = this._height;\n\t\tthis._pRenderer.shareContext = this._shareContext;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get shareContext():boolean\n\t{\n\t\treturn this._shareContext;\n\t}\n\n\tpublic set shareContext(value:boolean)\n\t{\n\t\tif (this._shareContext == value)\n\t\t\treturn;\n\n\t\tthis._shareContext = value;\n\n\t\tif (this._pRenderer)\n\t\t\tthis._pRenderer.shareContext = this._shareContext;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get backgroundColor():number\n\t{\n\t\treturn this._backgroundColor;\n\t}\n\n\tpublic set backgroundColor(value:number)\n\t{\n\t\tif (this._backgroundColor == value)\n\t\t\treturn;\n\n\t\tthis._backgroundColor = value;\n\n\t\tthis._pRenderer._iBackgroundR = ((value >> 16) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundG = ((value >> 8) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundB = (value & 0xff)/0xff;\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get backgroundAlpha():number\n\t{\n\t\treturn this._backgroundAlpha;\n\t}\n\n\t/**\n\t *\n\t * @param value\n\t */\n\tpublic set backgroundAlpha(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1;\n\t\telse if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tif (this._backgroundAlpha == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer._iBackgroundAlpha = this._backgroundAlpha = value;\n\t}\n\n\t/**\n\t *\n\t * @returns {Camera3D}\n\t */\n\tpublic get camera():Camera\n\t{\n\t\treturn this._pCamera;\n\t}\n\n\t/**\n\t * Set camera that's used to render the scene for this viewport\n\t */\n\tpublic set camera(value:Camera)\n\t{\n\t\tif (this._pCamera == value)\n\t\t\treturn;\n\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.removeEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\n\n\t\tthis._pCamera = value;\n\n\t\tif (this._pEntityCollector)\n\t\t\tthis._pEntityCollector.camera = this._pCamera;\n\n\t\tif (this._pScene)\n\t\t\tthis._pCamera.partition = this._pScene.partition;\n\n\t\tthis._pCamera.addEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\n\t\tthis._scissorDirty = true;\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t * @returns {away.containers.Scene3D}\n\t */\n\tpublic get scene():Scene\n\t{\n\t\treturn this._pScene;\n\t}\n\n\t/**\n\t * Set the scene that's used to render for this viewport\n\t */\n\tpublic set scene(value:Scene)\n\t{\n\t\tif (this._pScene == value)\n\t\t\treturn;\n\n\t\tif (this._pScene)\n\t\t\tthis._pScene.removeEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate);\n\n\t\tthis._pScene = value;\n\n\t\tthis._pScene.addEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate);\n\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.partition = this._pScene.partition;\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get deltaTime():number\n\t{\n\t\treturn this._deltaTime;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tif (this._width == value)\n\t\t\treturn;\n\n\t\tthis._width = value;\n\t\tthis._aspectRatio = this._width/this._height;\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\t\tthis._pRenderer.width = value;\n\t\tthis._htmlElement.style.width = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tif (this._height == value)\n\t\t\treturn;\n\n\t\tthis._height = value;\n\t\tthis._aspectRatio = this._width/this._height;\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\t\tthis._pRenderer.height = value;\n\t\tthis._htmlElement.style.height = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get mousePicker():IPicker\n\t{\n\t\treturn this._mousePicker;\n\t}\n\n\tpublic set mousePicker(value:IPicker)\n\t{\n\t\tif (this._mousePicker == value)\n\t\t\treturn;\n\n\t\tif (value == null)\n\t\t\tthis._mousePicker = new RaycastPicker();\n\t\telse\n\t\t\tthis._mousePicker = value;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._pRenderer.x;\n\t}\n\n\tpublic set x(value:number)\n\t{\n\t\tif (this._pRenderer.x == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer.x == value;\n\t\tthis._htmlElement.style.left = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._pRenderer.y;\n\t}\n\n\tpublic set y(value:number)\n\t{\n\t\tif (this._pRenderer.y == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer.y == value;\n\t\tthis._htmlElement.style.top = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get visible():boolean\n\t{\n\t\treturn (this._htmlElement.style.visibility == \"visible\");\n\t}\n\n\tpublic set visible(value:boolean)\n\t{\n\t\tthis._htmlElement.style.visibility = value? \"visible\" : \"hidden\";\n\t\t//TODO transfer visible property to associated context (if one exists)\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get renderedFacesCount():number\n\t{\n\t\treturn 0; //TODO\n\t\t//return this._pEntityCollector._pNumTriangles;//numTriangles;\n\t}\n\n\t/**\n\t * Renders the view.\n\t */\n\tpublic render()\n\t{\n\t\tthis.pUpdateTime();\n\n\t\t//update view and size data\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\n\t\tif (this._scissorDirty) {\n\t\t\tthis._scissorDirty = false;\n\t\t\tthis._pCamera.projection._iUpdateScissorRect(this._pRenderer.scissorRect.x, this._pRenderer.scissorRect.y, this._pRenderer.scissorRect.width, this._pRenderer.scissorRect.height);\n\t\t}\n\n\t\tif (this._viewportDirty) {\n\t\t\tthis._viewportDirty = false;\n\t\t\tthis._pCamera.projection._iUpdateViewport(this._pRenderer.viewPort.x, this._pRenderer.viewPort.y, this._pRenderer.viewPort.width, this._pRenderer.viewPort.height);\n\t\t}\n\n\t\t// update picking\n\t\tif (!this._shareContext) {\n\t\t\tif (this.forceMouseMove && this._htmlElement == this._mouseManager._iActiveDiv && !this._mouseManager._iUpdateDirty)\n\t\t\t\tthis._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\n\t\t\tthis._mouseManager.fireMouseEvents(this.forceMouseMove);\n\t\t\t//_touch3DManager.fireTouchEvents();\n\t\t}\n\t\t//_touch3DManager.updateCollider();\n\n\t\t//clear entity collector ready for collection\n\t\tthis._pEntityCollector.clear();\n\n\t\t// collect stuff to render\n\t\tthis._pScene.traversePartitions(this._pEntityCollector);\n\n\t\t//render the contents of the entity collector\n\t\tthis._pRenderer.render(this._pEntityCollector);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateTime():void\n\t{\n\t\tvar time:number = getTimer();\n\n\t\tif (this._time == 0)\n\t\t\tthis._time = time;\n\n\t\tthis._deltaTime = time - this._time;\n\t\tthis._time = time;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pRenderer.dispose();\n\n\t\t// TODO: imeplement mouseManager / touch3DManager\n\t\tthis._mouseManager.unregisterView(this);\n\n\t\t//this._touch3DManager.disableTouchListeners(this);\n\t\t//this._touch3DManager.dispose();\n\n\t\tthis._mouseManager = null;\n\t\t//this._touch3DManager = null;\n\n\t\tthis._pRenderer = null;\n\t\tthis._pEntityCollector = null;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get iEntityCollector():ICollector\n\t{\n\t\treturn this._pEntityCollector;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onProjectionChanged(event:CameraEvent)\n\t{\n\t\tthis._scissorDirty = true;\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onViewportUpdated(event:RendererEvent)\n\t{\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onScissorUpdated(event:RendererEvent)\n\t{\n\t\tthis._scissorDirty = true;\n\t}\n\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\tvar v:Vector3D = this._pCamera.project(point3d);\n\t\tv.x = v.x*this._pRenderer.viewPort.width/2 + this._width*this._pCamera.projection.originX;\n\t\tv.y = v.y*this._pRenderer.viewPort.height/2 + this._height*this._pCamera.projection.originY;\n\n\t\treturn v;\n\t}\n\n\tpublic unproject(sX:number, sY:number, sZ:number):Vector3D\n\t{\n\t\treturn this._pCamera.unproject(2*(sX - this._width*this._pCamera.projection.originX)/this._pRenderer.viewPort.width, 2*(sY - this._height*this._pCamera.projection.originY)/this._pRenderer.viewPort.height, sZ);\n\n\t}\n\n\tpublic getRay(sX:number, sY:number, sZ:number):Vector3D\n\t{\n\t\treturn this._pCamera.getRay((sX*2 - this._width)/this._width, (sY*2 - this._height)/this._height, sZ);\n\t}\n\n\t/* TODO: implement Touch3DManager\n\t public get touchPicker():IPicker\n\t {\n\t return this._touch3DManager.touchPicker;\n\t }\n\t */\n\t/* TODO: implement Touch3DManager\n\t public set touchPicker( value:IPicker)\n\t {\n\t this._touch3DManager.touchPicker = value;\n\t }\n\t */\n\n\tpublic forceMouseMove:boolean;\n\n\t/*TODO: implement Background\n\t public get background():away.textures.Texture2DBase\n\t {\n\t return this._background;\n\t }\n\t */\n\t/*TODO: implement Background\n\t public set background( value:away.textures.Texture2DBase )\n\t {\n\t this._background = value;\n\t this._renderer.background = _background;\n\t }\n\t */\n\n\t// TODO: required dependency stageGL\n\tpublic updateCollider()\n\t{\n\t\tif (!this._shareContext) {\n\t\t\tif (this._htmlElement == this._mouseManager._iActiveDiv)\n\t\t\t\tthis._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\t\t} else {\n\t\t\tvar collidingObject:PickingCollisionVO = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\n\t\t\tif (this.layeredView || this._mouseManager._iCollidingObject == null || collidingObject.rayEntryDistance < this._mouseManager._iCollidingObject.rayEntryDistance)\n\t\t\t\tthis._mouseManager._iCollidingObject = collidingObject;\n\t\t}\n\t}\n}\n\nexport = View;","import AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass ControllerBase\n{\n\n\tpublic _pAutoUpdate:boolean = true;\n\tpublic _pTargetObject:DisplayObject;\n\n\tconstructor(targetObject:DisplayObject = null)\n\t{\n\t\tthis.targetObject = targetObject;\n\t}\n\n\tpublic pNotifyUpdate()\n\t{\n\t\tif (this._pTargetObject && this._pTargetObject._iAssignedPartition && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iAssignedPartition.iMarkForUpdate(this._pTargetObject);\n\t\t}\n\t}\n\n\tpublic get targetObject():DisplayObject\n\t{\n\t\treturn this._pTargetObject;\n\t}\n\n\tpublic set targetObject(val:DisplayObject)\n\t{\n\t\tif (this._pTargetObject == val) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._pTargetObject && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iController = null;\n\t\t}\n\t\tthis._pTargetObject = val;\n\n\t\tif (this._pTargetObject && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iController = this;\n\t\t}\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic get autoUpdate():boolean\n\t{\n\t\treturn this._pAutoUpdate;\n\t}\n\n\tpublic set autoUpdate(val:boolean)\n\t{\n\t\tif (this._pAutoUpdate == val) {\n\t\t\treturn;\n\t\t}\n\t\tthis._pAutoUpdate = val;\n\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pTargetObject) {\n\t\t\t\tthis._pTargetObject._iController = this;\n\t\t\t} else {\n\t\t\t\tthis._pTargetObject._iController = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = ControllerBase;","import MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\n\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * Extended camera used to hover round a specified target object.\n *\n * @see away3d.containers.View3D\n */\nclass FirstPersonController extends ControllerBase\n{\n\tpublic _iCurrentPanAngle:number = 0;\n\tpublic _iCurrentTiltAngle:number = 90;\n\n\tprivate _panAngle:number = 0;\n\tprivate _tiltAngle:number = 90;\n\tprivate _minTiltAngle:number = -90;\n\tprivate _maxTiltAngle:number = 90;\n\tprivate _steps:number = 8;\n\tprivate _walkIncrement:number = 0;\n\tprivate _strafeIncrement:number = 0;\n\tprivate _wrapPanAngle:boolean = false;\n\n\tpublic fly:boolean = false;\n\n\t/**\n\t * Fractional step taken each time the hover() method is called. Defaults to 8.\n\t *\n\t * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t */\n\tpublic get steps():number\n\t{\n\t\treturn this._steps;\n\t}\n\n\tpublic set steps(val:number)\n\t{\n\t\tval = (val < 1)? 1 : val;\n\n\t\tif (this._steps == val)\n\t\t\treturn;\n\n\t\tthis._steps = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Rotation of the camera in degrees around the y axis. Defaults to 0.\n\t */\n\tpublic get panAngle():number\n\t{\n\t\treturn this._panAngle;\n\t}\n\n\tpublic set panAngle(val:number)\n\t{\n\t\tif (this._panAngle == val)\n\t\t\treturn;\n\n\t\tthis._panAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Elevation angle of the camera in degrees. Defaults to 90.\n\t */\n\tpublic get tiltAngle():number\n\t{\n\t\treturn this._tiltAngle;\n\t}\n\n\tpublic set tiltAngle(val:number)\n\t{\n\t\tval = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\n\n\t\tif (this._tiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._tiltAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Minimum bounds for the tiltAngle. Defaults to -90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get minTiltAngle():number\n\t{\n\t\treturn this._minTiltAngle;\n\t}\n\n\tpublic set minTiltAngle(val:number)\n\t{\n\t\tif (this._minTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._minTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the tiltAngle. Defaults to 90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get maxTiltAngle():number\n\t{\n\t\treturn this._maxTiltAngle;\n\t}\n\n\tpublic set maxTiltAngle(val:number)\n\t{\n\t\tif (this._maxTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\n\t/**\n\t * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\n\t */\n\tpublic get wrapPanAngle():boolean\n\t{\n\t\treturn this._wrapPanAngle;\n\t}\n\n\tpublic set wrapPanAngle(val:boolean)\n\t{\n\t\tif (this._wrapPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._wrapPanAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Creates a new HoverController object.\n\t */\n\tconstructor(targetObject:DisplayObject = null, panAngle:number = 0, tiltAngle:number = 90, minTiltAngle:number = -90, maxTiltAngle:number = 90, steps:number = 8, wrapPanAngle:boolean = false)\n\t{\n\t\tsuper(targetObject);\n\n\t\tthis.panAngle = panAngle;\n\t\tthis.tiltAngle = tiltAngle;\n\t\tthis.minTiltAngle = minTiltAngle;\n\t\tthis.maxTiltAngle = maxTiltAngle;\n\t\tthis.steps = steps;\n\t\tthis.wrapPanAngle = wrapPanAngle;\n\n\t\t//values passed in contrustor are applied immediately\n\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t}\n\n\t/**\n\t * Updates the current tilt angle and pan angle values.\n\t *\n\t * Values are calculated using the defined tiltAngle, panAngle and steps variables.\n\t *\n\t * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t * @see #steps\n\t */\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\n\n\t\t\tthis.pNotifyUpdate();\n\n\t\t\tif (this._wrapPanAngle) {\n\t\t\t\tif (this._panAngle < 0) {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 + 360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360 + 360;\n\t\t\t\t} else {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360;\n\t\t\t\t}\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle < -180)\n\t\t\t\t\tthis._iCurrentPanAngle -= 360;\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle > 180)\n\t\t\t\t\tthis._iCurrentPanAngle += 360;\n\t\t\t}\n\n\t\t\tif (interpolate) {\n\t\t\t\tthis._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle)/(this.steps + 1);\n\t\t\t\tthis._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle)/(this.steps + 1);\n\t\t\t} else {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\n\t\t\t//snap coords if angle differences are close\n\t\t\tif ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\t\t}\n\n\t\tthis.targetObject.rotationX = this._iCurrentTiltAngle;\n\t\tthis.targetObject.rotationY = this._iCurrentPanAngle;\n\n\t\tif (this._walkIncrement) {\n\t\t\tif (this.fly) {\n\t\t\t\tthis.targetObject.transform.moveForward(this._walkIncrement);\n\t\t\t} else {\n\t\t\t\tthis.targetObject.x += this._walkIncrement*Math.sin(this._panAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\t\t\tthis.targetObject.z += this._walkIncrement*Math.cos(this._panAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\t\t}\n\t\t\tthis._walkIncrement = 0;\n\t\t}\n\n\t\tif (this._strafeIncrement) {\n\t\t\tthis.targetObject.transform.moveRight(this._strafeIncrement);\n\t\t\tthis._strafeIncrement = 0;\n\t\t}\n\n\t}\n\n\tpublic incrementWalk(val:number)\n\t{\n\t\tif (val == 0)\n\t\t\treturn;\n\n\t\tthis._walkIncrement += val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic incrementStrafe(val:number)\n\t{\n\t\tif (val == 0)\n\t\t\treturn;\n\n\t\tthis._strafeIncrement += val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n}\n\nexport = FirstPersonController;","import DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport HoverController\t\t\t= require(\"awayjs-display/lib/controllers/HoverController\");\n\n/**\n * Controller used to follow behind an object on the XZ plane, with an optional\n * elevation (tiltAngle).\n *\n * @see away3d.containers.View3D\n */\nclass FollowController extends HoverController\n{\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, tiltAngle:number = 45, distance:number = 700)\n\t{\n\t\tsuper(targetObject, lookAtObject, 0, tiltAngle, distance);\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tinterpolate = interpolate; // unused: prevents warning\n\n\t\tif (!this.lookAtObject)\n\t\t\treturn;\n\n\t\tthis.panAngle = this._pLookAtObject.rotationY - 180;\n\t\tsuper.update();\n\t}\n}\n\nexport = FollowController;","import MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LookAtController\t\t\t= require(\"awayjs-display/lib/controllers/LookAtController\");\n\n/**\n * Extended camera used to hover round a specified target object.\n *\n * @see away.containers.View\n */\nclass HoverController extends LookAtController\n{\n\tpublic _iCurrentPanAngle:number = 0;\n\tpublic _iCurrentTiltAngle:number = 90;\n\n\tprivate _panAngle:number = 0;\n\tprivate _tiltAngle:number = 90;\n\tprivate _distance:number = 1000;\n\tprivate _minPanAngle:number = -Infinity;\n\tprivate _maxPanAngle:number = Infinity;\n\tprivate _minTiltAngle:number = -90;\n\tprivate _maxTiltAngle:number = 90;\n\tprivate _steps:number = 8;\n\tprivate _yFactor:number = 2;\n\tprivate _wrapPanAngle:boolean = false;\n\tprivate _upAxis:Vector3D = new Vector3D();\n\n\t/**\n\t * Fractional step taken each time the hover() method is called. Defaults to 8.\n\t *\n\t * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t */\n\tpublic get steps():number\n\t{\n\t\treturn this._steps;\n\t}\n\n\tpublic set steps(val:number)\n\t{\n\t\tval = (val < 1)? 1 : val;\n\n\t\tif (this._steps == val)\n\t\t\treturn;\n\n\t\tthis._steps = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Rotation of the camera in degrees around the y axis. Defaults to 0.\n\t */\n\tpublic get panAngle():number\n\t{\n\t\treturn this._panAngle;\n\t}\n\n\tpublic set panAngle(val:number)\n\t{\n\t\tval = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, val));\n\n\t\tif (this._panAngle == val)\n\t\t\treturn;\n\n\t\tthis._panAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Elevation angle of the camera in degrees. Defaults to 90.\n\t */\n\tpublic get tiltAngle():number\n\t{\n\t\treturn this._tiltAngle;\n\t}\n\n\tpublic set tiltAngle(val:number)\n\t{\n\t\tval = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\n\n\t\tif (this._tiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._tiltAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Distance between the camera and the specified target. Defaults to 1000.\n\t */\n\tpublic get distance():number\n\t{\n\t\treturn this._distance;\n\t}\n\n\tpublic set distance(val:number)\n\t{\n\t\tif (this._distance == val)\n\t\t\treturn;\n\n\t\tthis._distance = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Minimum bounds for the panAngle. Defaults to -Infinity.\n\t *\n\t * @see #panAngle\n\t */\n\tpublic get minPanAngle():number\n\t{\n\t\treturn this._minPanAngle;\n\t}\n\n\tpublic set minPanAngle(val:number)\n\t{\n\t\tif (this._minPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._minPanAngle = val;\n\n\t\tthis.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the panAngle. Defaults to Infinity.\n\t *\n\t * @see #panAngle\n\t */\n\tpublic get maxPanAngle():number\n\t{\n\t\treturn this._maxPanAngle;\n\t}\n\n\tpublic set maxPanAngle(val:number)\n\t{\n\t\tif (this._maxPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxPanAngle = val;\n\n\t\tthis.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\n\t}\n\n\t/**\n\t * Minimum bounds for the tiltAngle. Defaults to -90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get minTiltAngle():number\n\t{\n\t\treturn this._minTiltAngle;\n\t}\n\n\tpublic set minTiltAngle(val:number)\n\t{\n\t\tif (this._minTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._minTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the tiltAngle. Defaults to 90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get maxTiltAngle():number\n\t{\n\t\treturn this._maxTiltAngle;\n\t}\n\n\tpublic set maxTiltAngle(val:number)\n\t{\n\t\tif (this._maxTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2.\n\t *\n\t * @see #distance\n\t */\n\tpublic get yFactor():number\n\t{\n\t\treturn this._yFactor;\n\t}\n\n\tpublic set yFactor(val:number)\n\t{\n\t\tif (this._yFactor == val)\n\t\t\treturn;\n\n\t\tthis._yFactor = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\n\t */\n\tpublic get wrapPanAngle():boolean\n\t{\n\t\treturn this._wrapPanAngle;\n\t}\n\n\tpublic set wrapPanAngle(val:boolean)\n\t{\n\t\tif (this._wrapPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._wrapPanAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Creates a new HoverController object.\n\t */\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, panAngle:number = 0, tiltAngle:number = 90, distance:number = 1000, minTiltAngle:number = -90, maxTiltAngle:number = 90, minPanAngle:number = null, maxPanAngle:number = null, steps:number = 8, yFactor:number = 2, wrapPanAngle:boolean = false)\n\t{\n\t\tsuper(targetObject, lookAtObject);\n\n\t\tthis.distance = distance;\n\t\tthis.panAngle = panAngle;\n\t\tthis.tiltAngle = tiltAngle;\n\t\tthis.minPanAngle = ( minPanAngle != null )? minPanAngle : -Infinity;\n\t\tthis.maxPanAngle = ( maxPanAngle != null )? maxPanAngle : Infinity;\n\t\tthis.minTiltAngle = minTiltAngle;\n\t\tthis.maxTiltAngle = maxTiltAngle;\n\t\tthis.steps = steps;\n\t\tthis.yFactor = yFactor;\n\t\tthis.wrapPanAngle = wrapPanAngle;\n\n\t\t//values passed in contrustor are applied immediately\n\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t}\n\n\t/**\n\t * Updates the current tilt angle and pan angle values.\n\t *\n\t * Values are calculated using the defined tiltAngle, panAngle and steps variables.\n\t *\n\t * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t * @see #steps\n\t */\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\n\n\t\t\tthis.pNotifyUpdate();\n\n\t\t\tif (this._wrapPanAngle) {\n\t\t\t\tif (this._panAngle < 0) {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 + 360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360 + 360;\n\t\t\t\t} else {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360;\n\t\t\t\t}\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle < -180)\n\t\t\t\t\tthis._iCurrentPanAngle -= 360;\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle > 180)\n\t\t\t\t\tthis._iCurrentPanAngle += 360;\n\t\t\t}\n\n\t\t\tif (interpolate) {\n\t\t\t\tthis._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle)/(this.steps + 1);\n\t\t\t\tthis._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle)/(this.steps + 1);\n\t\t\t} else {\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t}\n\n\t\t\t//snap coords if angle differences are close\n\t\t\tif ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\t\t}\n\n\t\tvar pos:Vector3D = (this.lookAtObject)? this.lookAtObject.transform.position : (this.lookAtPosition)? this.lookAtPosition : this._pOrigin;\n\t\tthis.targetObject.x = pos.x + this.distance*Math.sin(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis.targetObject.y = pos.y + this.distance*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS)*this.yFactor;\n\t\tthis.targetObject.z = pos.z + this.distance*Math.cos(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\n\t\tthis._upAxis.x = -Math.sin(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis._upAxis.y = Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis._upAxis.z = -Math.cos(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pLookAtPosition)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtPosition, this._upAxis);\n\t\t\telse if (this._pLookAtObject)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtObject.scene? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position, this._upAxis);\n\t\t}\n\t}\n}\n\nexport = HoverController;","import Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport DisplayObjectEvent\t\t= require(\"awayjs-display/lib/events/DisplayObjectEvent\");\n\nclass LookAtController extends ControllerBase\n{\n\tpublic _pLookAtPosition:Vector3D;\n\tpublic _pLookAtObject:DisplayObject;\n\tpublic _pOrigin:Vector3D = new Vector3D(0.0, 0.0, 0.0);\n\n\tprivate _onLookAtObjectChangedDelegate:(event:DisplayObjectEvent) => void;\n\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null)\n\t{\n\t\tsuper(targetObject);\n\n\t\tthis._onLookAtObjectChangedDelegate = (event:DisplayObjectEvent) => this.onLookAtObjectChanged(event);\n\n\t\tif (lookAtObject)\n\t\t\tthis.lookAtObject = lookAtObject;\n\t\telse\n\t\t\tthis.lookAtPosition = new Vector3D();\n\t}\n\n\tpublic get lookAtPosition():Vector3D\n\t{\n\t\treturn this._pLookAtPosition;\n\t}\n\n\tpublic set lookAtPosition(val:Vector3D)\n\t{\n\t\tif (this._pLookAtObject) {\n\t\t\tthis._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\t\t\tthis._pLookAtObject = null;\n\t\t}\n\n\t\tthis._pLookAtPosition = val;\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic get lookAtObject():DisplayObject\n\t{\n\t\treturn this._pLookAtObject;\n\t}\n\n\tpublic set lookAtObject(val:DisplayObject)\n\t{\n\t\tif (this._pLookAtPosition)\n\t\t\tthis._pLookAtPosition = null;\n\n\t\tif (this._pLookAtObject == val)\n\t\t\treturn;\n\n\t\tif (this._pLookAtObject)\n\t\t\tthis._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\n\t\tthis._pLookAtObject = val;\n\n\t\tif (this._pLookAtObject)\n\t\t\tthis._pLookAtObject.addEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t//@override\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pLookAtPosition)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtPosition);\n\t\t\telse if (this._pLookAtObject)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtObject.scene? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position);\n\t\t}\n\t}\n\n\tprivate onLookAtObjectChanged(event:DisplayObjectEvent)\n\t{\n\t\tthis.pNotifyUpdate();\n\t}\n}\n\nexport = LookAtController;","import Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LookAtController\t\t\t= require(\"awayjs-display/lib/controllers/LookAtController\");\n\n/**\n * Uses spring physics to animate the target object towards a position that is\n * defined as the lookAtTarget object's position plus the vector defined by the\n * positionOffset property.\n */\nclass SpringController extends LookAtController\n{\n\tprivate _velocity:Vector3D;\n\tprivate _dv:Vector3D;\n\tprivate _stretch:Vector3D;\n\tprivate _force:Vector3D;\n\tprivate _acceleration:Vector3D;\n\tprivate _desiredPosition:Vector3D;\n\n\t/**\n\t * Stiffness of the spring, how hard is it to extend. The higher it is, the more \"fixed\" the cam will be.\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic stiffness:number;\n\n\t/**\n\t * Damping is the spring internal friction, or how much it resists the \"boinggggg\" effect. Too high and you'll lose it!\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic damping:number;\n\n\t/**\n\t * Mass of the camera, if over 120 and it'll be very heavy to move.\n\t */\n\tpublic mass:number;\n\n\t/**\n\t * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.\n\t */\n\tpublic positionOffset:Vector3D = new Vector3D(0, 500, -1000);\n\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, stiffness:number = 1, mass:number = 40, damping:number = 4)\n\t{\n\t\tsuper(targetObject, lookAtObject);\n\n\t\tthis.stiffness = stiffness;\n\t\tthis.damping = damping;\n\t\tthis.mass = mass;\n\n\t\tthis._velocity = new Vector3D();\n\t\tthis._dv = new Vector3D();\n\t\tthis._stretch = new Vector3D();\n\t\tthis._force = new Vector3D();\n\t\tthis._acceleration = new Vector3D();\n\t\tthis._desiredPosition = new Vector3D();\n\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tvar offs:Vector3D;\n\n\t\tif (!this._pLookAtObject || !this._pTargetObject)\n\t\t\treturn;\n\n\t\toffs = this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);\n\t\tthis._desiredPosition.x = this._pLookAtObject.x + offs.x;\n\t\tthis._desiredPosition.y = this._pLookAtObject.y + offs.y;\n\t\tthis._desiredPosition.z = this._pLookAtObject.z + offs.z;\n\n\t\tthis._stretch = this._pTargetObject.transform.position.add(this._desiredPosition);\n\t\tthis._stretch.scaleBy(-this.stiffness);\n\n\t\tthis._dv.copyFrom(this._velocity);\n\t\tthis._dv.scaleBy(this.damping);\n\n\t\tthis._force.x = this._stretch.x - this._dv.x;\n\t\tthis._force.y = this._stretch.y - this._dv.y;\n\t\tthis._force.z = this._stretch.z - this._dv.z;\n\n\t\tthis._acceleration.copyFrom(this._force);\n\t\tthis._acceleration.scaleBy(1/this.mass);\n\n\t\tthis._velocity.incrementBy(this._acceleration);\n\n\t\tthis._pTargetObject.transform.position = this._pTargetObject.transform.position.add(this._velocity);\n\n\t\tsuper.update();\n\t}\n}\n\nexport = SpringController;","class ContextMode\n{\n\tstatic AUTO:string = \"auto\";\n\tstatic WEBGL:string = \"webgl\";\n\tstatic FLASH:string = \"flash\";\n\tstatic NATIVE:string = \"native\";\n}\n\nexport = ContextMode;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IMaterialOwner\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialEvent\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * The Billboard class represents display objects that represent bitmap images.\n * These can be images that you load with the flash.Assets or\n * flash.display.Loader classes, or they can be images that you\n * create with the Billboard() constructor.\n *\n *

The Billboard() constructor allows you to create a Billboard\n * object that contains a reference to a BitmapData object. After you create a\n * Billboard object, use the addChild() or addChildAt()\n * method of the parent DisplayObjectContainer instance to place the bitmap on\n * the display list.

\n *\n *

A Billboard object can share its BitmapData reference among several Billboard\n * objects, independent of translation or rotation properties. Because you can\n * create multiple Billboard objects that reference the same BitmapData object,\n * multiple display objects can use the same complex BitmapData object without\n * incurring the memory overhead of a BitmapData object for each display\n * object instance.

\n *\n *

A BitmapData object can be drawn to the screen by a Billboard object in one\n * of two ways: by using the default hardware renderer with a single hardware surface,\n * or by using the slower software renderer when 3D acceleration is not available.

\n *\n *

If you would prefer to perform a batch rendering command, rather than using a\n * single surface for each Billboard object, you can also draw to the screen using the\n * drawTiles() or drawTriangles() methods which are\n * available to flash.display.Tilesheet and flash.display.Graphics\n * objects.

\n *\n *

Note: The Billboard class is not a subclass of the InteractiveObject\n * class, so it cannot dispatch mouse events. However, you can use the\n * addEventListener() method of the display object container that\n * contains the Billboard object.

\n */\n\nclass Billboard extends DisplayObject implements IEntity, IMaterialOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _billboardWidth:number;\n\tprivate _billboardHeight:number;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.BILLBOARD;\n\t}\n\n\t/**\n\t * The BitmapData object being referenced.\n\t */\n\tpublic bitmapData:BitmapData; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get billboardHeight():number\n\t{\n\t\treturn this._billboardHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get billboardWidth():number\n\t{\n\t\treturn this._billboardWidth;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t * Controls whether or not the Billboard object is snapped to the nearest pixel.\n\t * This value is ignored in the native and HTML5 targets.\n\t * The PixelSnapping class includes possible values:\n\t *
    \n\t *
  • PixelSnapping.NEVER - No pixel snapping occurs.
  • \n\t *
  • PixelSnapping.ALWAYS - The image is always snapped to\n\t * the nearest pixel, independent of transformation.
  • \n\t *
  • PixelSnapping.AUTO - The image is snapped to the\n\t * nearest pixel if it is drawn with no rotation or skew and it is drawn at a\n\t * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the\n\t * bitmap image is drawn at 100% scale, snapped to the nearest pixel.\n\t * When targeting Flash Player, this value allows the image to be drawn as fast\n\t * as possible using the internal vector renderer.
  • \n\t *
\n\t */\n\tpublic pixelSnapping:string; //TODO\n\n\t/**\n\t * Controls whether or not the bitmap is smoothed when scaled. If\n\t * true, the bitmap is smoothed when scaled. If\n\t * false, the bitmap is not smoothed when scaled.\n\t */\n\tpublic smoothing:boolean; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\tconstructor(material:MaterialBase, pixelSnapping:string = \"auto\", smoothing:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._billboardWidth = material.width;\n\t\tthis._billboardHeight = material.height;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(0, 0, 0, this._billboardWidth, this._billboardHeight, 0);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testBillboardCollision(this, this._pPickingCollisionVO, shortestCollisionDistance);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis._billboardWidth = this._material.width;\n\t\tthis._billboardHeight = this._material.height;\n\n\t\tthis._pBoundsInvalid = true;\n\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\trenderer.applyBillboard(this);\n\t}\n}\n\nexport = Billboard;","import BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ProjectionEvent\t\t\t= require(\"awayjs-core/lib/events/ProjectionEvent\");\nimport IProjection\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CameraEvent\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport CameraNode\t\t\t\t= require(\"awayjs-display/lib/partition/CameraNode\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\nclass Camera extends DisplayObjectContainer implements IEntity\n{\n\tprivate _viewProjection:Matrix3D = new Matrix3D();\n\tprivate _viewProjectionDirty:Boolean = true;\n\tprivate _projection:IProjection;\n\tprivate _frustumPlanes:Array;\n\tprivate _frustumPlanesDirty:Boolean = true;\n\tprivate _onProjectionMatrixChangedDelegate:(event:ProjectionEvent) => void;\n\n\tconstructor(projection:IProjection = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._onProjectionMatrixChangedDelegate = (event:ProjectionEvent) => this.onProjectionMatrixChanged(event);\n\n\t\tthis._projection = projection || new PerspectiveProjection();\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\n\t\tthis._frustumPlanes = [];\n\n\t\tfor (var i:number = 0; i < 6; ++i)\n\t\t\tthis._frustumPlanes[i] = new Plane3D();\n\n\t\tthis.z = -1000;\n\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new CameraNode(this);\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CAMERA;\n\t}\n\n\tprivate onProjectionMatrixChanged(event:ProjectionEvent)\n\t{\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t\tthis.dispatchEvent(event);\n\t}\n\n\tpublic get frustumPlanes():Array\n\t{\n\t\tif (this._frustumPlanesDirty)\n\t\t\tthis.updateFrustum();\n\n\t\treturn this._frustumPlanes;\n\t}\n\n\tprivate updateFrustum()\n\t{\n\t\tvar a:number, b:number, c:number;\n\t\t//var d : Number;\n\t\tvar c11:number, c12:number, c13:number, c14:number;\n\t\tvar c21:number, c22:number, c23:number, c24:number;\n\t\tvar c31:number, c32:number, c33:number, c34:number;\n\t\tvar c41:number, c42:number, c43:number, c44:number;\n\t\tvar p:Plane3D;\n\t\tvar raw:number[] = new Array(16);\n\t\t;//new Array(16 );away.utils.Matrix3DUtils.RAW_DATA_CONTAINER;//[];\n\t\tvar invLen:number;\n\t\tthis.viewProjection.copyRawDataTo(raw);\n\n\t\tc11 = raw[0];\n\t\tc12 = raw[4];\n\t\tc13 = raw[8];\n\t\tc14 = raw[12];\n\t\tc21 = raw[1];\n\t\tc22 = raw[5];\n\t\tc23 = raw[9];\n\t\tc24 = raw[13];\n\t\tc31 = raw[2];\n\t\tc32 = raw[6];\n\t\tc33 = raw[10];\n\t\tc34 = raw[14];\n\t\tc41 = raw[3];\n\t\tc42 = raw[7];\n\t\tc43 = raw[11];\n\t\tc44 = raw[15];\n\n\t\t// left plane\n\t\tp = this._frustumPlanes[0];\n\t\ta = c41 + c11;\n\t\tb = c42 + c12;\n\t\tc = c43 + c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c14)*invLen;\n\n\t\t// right plane\n\t\tp = this._frustumPlanes[1];\n\t\ta = c41 - c11;\n\t\tb = c42 - c12;\n\t\tc = c43 - c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c14 - c44)*invLen;\n\n\t\t// bottom\n\t\tp = this._frustumPlanes[2];\n\t\ta = c41 + c21;\n\t\tb = c42 + c22;\n\t\tc = c43 + c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c24)*invLen;\n\n\t\t// top\n\t\tp = this._frustumPlanes[3];\n\t\ta = c41 - c21;\n\t\tb = c42 - c22;\n\t\tc = c43 - c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c24 - c44)*invLen;\n\n\t\t// near\n\t\tp = this._frustumPlanes[4];\n\t\ta = c31;\n\t\tb = c32;\n\t\tc = c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -c34*invLen;\n\n\t\t// far\n\t\tp = this._frustumPlanes[5];\n\t\ta = c41 - c31;\n\t\tb = c42 - c32;\n\t\tc = c43 - c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c34 - c44)*invLen;\n\n\t\tthis._frustumPlanesDirty = false;\n\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t\tthis._pBounds.nullify();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get projection():IProjection\n\t{\n\t\treturn this._projection;\n\t}\n\n\tpublic set projection(value:IProjection)\n\t{\n\t\tif (this._projection == value)\n\t\t\treturn;\n\n\t\tif (!value)\n\t\t\tthrow new Error(\"Projection cannot be null!\");\n\n\t\tthis._projection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis._projection = value;\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis.dispatchEvent(new CameraEvent(CameraEvent.PROJECTION_CHANGED, this));\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get viewProjection():Matrix3D\n\t{\n\t\tif (this._viewProjectionDirty) {\n\t\t\tthis._viewProjection.copyFrom(this.inverseSceneTransform);\n\t\t\tthis._viewProjection.append(this._projection.matrix);\n\t\t\tthis._viewProjectionDirty = false;\n\t\t}\n\n\t\treturn this._viewProjection;\n\t}\n\n\t/**\n\t * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right.\n\t * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The ray from the camera to the scene space position of the given screen coordinates.\n\t */\n\tpublic getRay(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.deltaTransformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\t/**\n\t * Calculates the normalised position in screen space of the given scene position.\n\t *\n\t * @param point3d the position vector of the scene coordinates to be projected.\n\t * @return The normalised screen position of the given scene coordinates.\n\t */\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\treturn this._projection.project(this.inverseSceneTransform.transformVector(point3d));\n\t}\n\n\t/**\n\t * Calculates the scene position of the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.\n\t * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The scene position of the given screen coordinates.\n\t */\n\tpublic unproject(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.transformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = Camera;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLightNode\t\t\t= require(\"awayjs-display/lib/partition/DirectionalLightNode\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass DirectionalLight extends LightBase implements IEntity\n{\n\tprivate _direction:Vector3D;\n\tprivate _tmpLookAt:Vector3D;\n\tprivate _sceneDirection:Vector3D;\n\tprivate _projAABBPoints:Array;\n\n\tconstructor(xDir:number = 0, yDir:number = -1, zDir:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.direction = new Vector3D(xDir, yDir, zDir);\n\n\t\tthis._sceneDirection = new Vector3D();\n\t}\n\n\tpublic get sceneDirection():Vector3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._sceneDirection;\n\t}\n\n\tpublic get direction():Vector3D\n\t{\n\t\treturn this._direction;\n\t}\n\n\tpublic set direction(value:Vector3D)\n\t{\n\t\tthis._direction = value;\n\n\t\tif (!this._tmpLookAt)\n\t\t\tthis._tmpLookAt = new Vector3D();\n\n\t\tthis._tmpLookAt.x = this.x + this._direction.x;\n\t\tthis._tmpLookAt.y = this.y + this._direction.y;\n\t\tthis._tmpLookAt.z = this.z + this._direction.z;\n\n\t\tthis.lookAt(this._tmpLookAt);\n\t}\n\n\t/**\n\t *\n\t * @returns {away.bounds.NullBounds}\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//directional lights are to be considered global, hence always in view\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t}\n\n\t//@override\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tsuper.pUpdateSceneTransform();\n\t\tthis.sceneTransform.copyColumnTo(2, this._sceneDirection);\n\t\tthis._sceneDirection.normalize();\n\t}\n\n\t//@override\n\tpublic pCreateShadowMapper():DirectionalShadowMapper\n\t{\n\t\treturn new DirectionalShadowMapper();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new DirectionalLightNode(this);\n\t}\n\n\t//override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tif (!this._projAABBPoints)\n\t\t\tthis._projAABBPoints = [];\n\n\t\tm.transformVectors(bounds.aabbPoints, this._projAABBPoints);\n\n\t\tvar xMin:number = Infinity, xMax:number = -Infinity;\n\t\tvar yMin:number = Infinity, yMax:number = -Infinity;\n\t\tvar zMin:number = Infinity, zMax:number = -Infinity;\n\t\tvar d:number;\n\t\tfor (var i:number = 0; i < 24;) {\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < xMin)\n\t\t\t\txMin = d;\n\n\t\t\tif (d > xMax)\n\t\t\t\txMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < yMin)\n\t\t\t\tyMin = d;\n\n\t\t\tif (d > yMax)\n\t\t\t\tyMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < zMin)\n\t\t\t\tzMin = d;\n\n\t\t\tif (d > zMax)\n\t\t\t\tzMax = d;\n\t\t}\n\n\t\tvar invXRange:number = 1/(xMax - xMin);\n\t\tvar invYRange:number = 1/(yMax - yMin);\n\t\tvar invZRange:number = 1/(zMax - zMin);\n\t\traw[0] = 2*invXRange;\n\t\traw[5] = 2*invYRange;\n\t\traw[10] = invZRange;\n\t\traw[12] = -(xMax + xMin)*invXRange;\n\t\traw[13] = -(yMax + yMin)*invYRange;\n\t\traw[14] = -zMin*invZRange;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\t\traw[15] = 1;\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = DirectionalLight;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport LightProbeNode\t\t\t\t= require(\"awayjs-display/lib/partition/LightProbeNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nclass LightProbe extends LightBase implements IEntity\n{\n\tprivate _diffuseMap:CubeTextureBase;\n\tprivate _specularMap:CubeTextureBase;\n\n\tconstructor(diffuseMap:CubeTextureBase, specularMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._diffuseMap = diffuseMap;\n\t\tthis._specularMap = specularMap;\n\t}\n\n\tpublic get diffuseMap():CubeTextureBase\n\t{\n\t\treturn this._diffuseMap;\n\t}\n\n\tpublic set diffuseMap(value:CubeTextureBase)\n\t{\n\t\tthis._diffuseMap = value;\n\t}\n\n\tpublic get specularMap():CubeTextureBase\n\t{\n\t\treturn this._specularMap;\n\t}\n\n\tpublic set specularMap(value:CubeTextureBase)\n\t{\n\t\tthis._specularMap = value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new LightProbeNode(this);\n\t}\n\n\t//@override\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t//@override\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t//@override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new Error(\"Object projection matrices are not supported for LightProbe objects!\");\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = LightProbe;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Line Segment primitive.\n */\nclass LineSegment extends DisplayObject implements IEntity, IMaterialOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\tpublic _startPosition:Vector3D;\n\tpublic _endPosition:Vector3D;\n\tpublic _halfThickness:number;\n\n\n\t/**\n\t * Defines the animator of the line segment. Act on the line segment's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SEGMENT;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPostion():Vector3D\n\t{\n\t\treturn this._startPosition;\n\t}\n\n\tpublic set startPosition(value:Vector3D)\n\t{\n\t\tif (this._startPosition == value)\n\t\t\treturn;\n\n\t\tthis._startPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPosition():Vector3D\n\t{\n\t\treturn this._endPosition;\n\t}\n\n\tpublic set endPosition(value:Vector3D)\n\t{\n\t\tif (this._endPosition == value)\n\t\t\treturn;\n\n\t\tthis._endPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():number\n\t{\n\t\treturn this._halfThickness*2;\n\t}\n\n\tpublic set thickness(value:number)\n\t{\n\t\tif (this._halfThickness == value)\n\t\t\treturn;\n\n\t\tthis._halfThickness = value*0.5;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a line segment\n\t *\n\t * @param startPosition Start position of the line segment\n\t * @param endPosition Ending position of the line segment\n\t * @param thickness Thickness of the line\n\t */\n\tconstructor(material:MaterialBase, startPosition:Vector3D, endPosition:Vector3D, thickness:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._startPosition = startPosition;\n\t\tthis._endPosition = endPosition;\n\t\tthis._halfThickness = thickness*0.5;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._startPosition = null;\n\t\tthis._endPosition = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(this._startPosition.x, this._startPosition.y, this._startPosition.z, this._endPosition.x, this._endPosition.y, this._endPosition.z);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRenderableUpdate()\n\t{\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = LineSegment;","import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport TriangleSubGeometry\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation\n * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts\n * of the geometry to be assigned different materials.\n */\nclass Mesh extends DisplayObjectContainer implements IEntity\n{\n\tprivate _uvTransform:UVTransform;\n\n\tprivate _subMeshes:Array;\n\tprivate _geometry:Geometry;\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\tprivate _castsShadows:boolean = true;\n\tprivate _shareAnimationGeometry:boolean = true;\n\n\tprivate _onGeometryBoundsInvalidDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryAddedDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryRemovedDelegate:(event:GeometryEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Default value is null.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\tpublic set animator(value:IAnimator)\n\t{\n\t\tif (this._animator)\n\t\t\tthis._animator.removeOwner(this);\n\n\t\tthis._animator = value;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\t// cause material to be unregistered and registered again to work with the new animation type (if possible)\n\t\t\tif (subMesh.material) {\n\t\t\t\tsubMesh.material.iRemoveOwner(subMesh);\n\t\t\t\tsubMesh.material.iAddOwner(subMesh);\n\t\t\t}\n\n\t\t\t//invalidate any existing renderables in case they need to pull new geometry\n\t\t\tsubMesh._iInvalidateRenderableGeometry();\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tthis._animator.addOwner(this);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MESH;\n\t}\n\n\t/**\n\t * Indicates whether or not the Mesh can cast shadows. Default value is true.\n\t */\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tthis._castsShadows = value;\n\t}\n\n\t/**\n\t * The geometry used by the mesh that provides it with its shape.\n\t */\n\tpublic get geometry():Geometry\n\t{\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\tpublic set geometry(value:Geometry)\n\t{\n\t\tvar i:number;\n\n\t\tif (this._geometry) {\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tfor (i = 0; i < this._subMeshes.length; ++i)\n\t\t\t\tthis._subMeshes[i].dispose();\n\n\t\t\tthis._subMeshes.length = 0;\n\t\t}\n\n\t\tthis._geometry = value;\n\n\t\tif (this._geometry) {\n\n\t\t\tthis._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\n\t\t\tfor (i = 0; i < subGeoms.length; ++i)\n\t\t\t\tthis.addSubMesh(subGeoms[i]);\n\t\t}\n\t}\n\n\t/**\n\t * The material with which to render the Mesh.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tvar i:number;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iRemoveOwner(subMesh);\n\n\t\tthis._material = value;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iAddOwner(subMesh);\n\t}\n\n\t/**\n\t * Indicates whether or not the mesh share the same animation geometry.\n\t */\n\tpublic get shareAnimationGeometry():boolean\n\t{\n\t\treturn this._shareAnimationGeometry;\n\t}\n\n\tpublic set shareAnimationGeometry(value:boolean)\n\t{\n\t\tthis._shareAnimationGeometry = value;\n\t}\n\n\t/**\n\t * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's\n\t * material.\n\t */\n\tpublic get subMeshes():Array\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._subMeshes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a new Mesh object.\n\t *\n\t * @param geometry The geometry used by the mesh that provides it with its shape.\n\t * @param material [optional] The material with which to render the Mesh.\n\t */\n\tconstructor(geometry:Geometry, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._subMeshes = new Array();\n\n\t\tthis._onGeometryBoundsInvalidDelegate = (event:GeometryEvent) => this.onGeometryBoundsInvalid(event);\n\t\tthis._onSubGeometryAddedDelegate = (event:GeometryEvent) => this.onSubGeometryAdded(event);\n\t\tthis._onSubGeometryRemovedDelegate = (event:GeometryEvent) => this.onSubGeometryRemoved(event);\n\n\t\t//this should never happen, but if people insist on trying to create their meshes before they have geometry to fill it, it becomes necessary\n\t\tthis.geometry = geometry || new Geometry();\n\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic bakeTransformations()\n\t{\n\t\tthis.geometry.applyTransformation(this._iMatrix3D);\n\t\tthis._iMatrix3D.identity();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis.material = null;\n\t\tthis.geometry = null;\n\t}\n\n\t/**\n\t * Disposes mesh including the animator and children. This is a merely a convenience method.\n\t * @return\n\t */\n\tpublic disposeWithAnimatorAndChildren()\n\t{\n\t\tthis.disposeWithChildren();\n\n\t\t if (this._animator)\n\t\t\tthis._animator.dispose();\n\t}\n\n\t/**\n\t * Clones this Mesh instance along with all it's children, while re-using the same\n\t * material, geometry and animation set. The returned result will be a copy of this mesh,\n\t * containing copies of all of it's children.\n\t *\n\t * Properties that are re-used (i.e. not cloned) by the new copy include name,\n\t * geometry, and material. Properties that are cloned or created anew for the copy\n\t * include subMeshes, children of the mesh, and the animator.\n\t *\n\t * If you want to copy just the mesh, reusing it's geometry and material while not\n\t * cloning it's children, the simplest way is to create a new mesh manually:\n\t *\n\t * \n\t * var clone : Mesh = new Mesh(original.geometry, original.material);\n\t * \n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:Mesh = new Mesh(this._geometry, this._material);\n\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.pivot = this.pivot;\n\t\tclone.partition = this.partition;\n\t\tclone.bounds = this.bounds.clone();\n\n\n\t\tclone.name = this.name;\n\t\tclone.castsShadows = this.castsShadows;\n\t\tclone.shareAnimationGeometry = this.shareAnimationGeometry;\n\t\tclone.mouseEnabled = this.mouseEnabled;\n\t\tclone.mouseChildren = this.mouseChildren;\n\t\t//this is of course no proper cloning\n\t\t//maybe use this instead?: http://blog.another-d-mention.ro/programming/how-to-clone-duplicate-an-object-in-actionscript-3/\n\t\tclone.extra = this.extra;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone._subMeshes[i].material = this._subMeshes[i]._iGetExplicitMaterial();\n\n\n\t\tlen = this.numChildren;\n\t\tvar obj:any;\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\tobj = this.getChildAt(i).clone();\n\t\t\tclone.addChild( obj);\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tclone.animator = this._animator.clone();\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param subGeometry\n\t * @returns {SubMeshBase}\n\t */\n\tpublic getSubMeshFromSubGeometry(subGeometry:SubGeometryBase):ISubMesh\n\t{\n\t\treturn this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)];\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tvar i:number, j:number, p:number;\n\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\t\tvar subGeom:SubGeometryBase;\n\t\tvar boundingPositions:Array;\n\t\tvar numSubGeoms:number = subGeoms.length;\n\t\tvar minX:number, minY:number, minZ:number;\n\t\tvar maxX:number, maxY:number, maxZ:number;\n\n\t\tif (numSubGeoms > 0) {\n\t\t\ti = 0;\n\t\t\tsubGeom = subGeoms[0];\n\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\tminX = maxX = boundingPositions[i];\n\t\t\tminY = maxY = boundingPositions[i + 1];\n\t\t\tminZ = maxZ = boundingPositions[i + 2];\n\n\t\t\tj = numSubGeoms;\n\t\t\twhile (j--) {\n\t\t\t\tsubGeom = subGeoms[j];\n\t\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\t\ti = boundingPositions.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tp = boundingPositions[i];\n\t\t\t\t\tif (p < minX)\n\t\t\t\t\t\tminX = p;\n\t\t\t\t\telse if (p > maxX)\n\t\t\t\t\t\tmaxX = p;\n\n\t\t\t\t\tp = boundingPositions[i + 1];\n\n\t\t\t\t\tif (p < minY)\n\t\t\t\t\t\tminY = p;\n\t\t\t\t\telse if (p > maxY)\n\t\t\t\t\t\tmaxY = p;\n\n\t\t\t\t\tp = boundingPositions[i + 2];\n\n\t\t\t\t\tif (p < minZ)\n\t\t\t\t\t\tminZ = p;\n\t\t\t\t\telse if (p > maxZ)\n\t\t\t\t\t\tmaxZ = p;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._pBounds.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);\n\t\t} else {\n\t\t\tthis._pBounds.fromExtremes(0, 0, 0, 0, 0, 0);\n\t\t}\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @private\n\t */\n\tprivate onGeometryBoundsInvalid(event:GeometryEvent)\n\t{\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * Called when a SubGeometry was added to the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryAdded(event:GeometryEvent)\n\t{\n\t\tthis.addSubMesh(event.subGeometry);\n\t}\n\n\t/**\n\t * Called when a SubGeometry was removed from the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryRemoved(event:GeometryEvent)\n\t{\n\t\tvar subMesh:ISubMesh;\n\t\tvar subGeom:SubGeometryBase = event.subGeometry;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar i:number;\n\n\t\t// Important! This has to be done here, and not delayed until the\n\t\t// next render loop, since this may be caused by the geometry being\n\t\t// rebuilt IN THE RENDER LOOP. Invalidating and waiting will delay\n\t\t// it until the NEXT RENDER FRAME which is probably not desirable.\n\t\tfor (i = 0; i < len; ++i) {\n\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\tif (subMesh.subGeometry == subGeom) {\n\t\t\t\tsubMesh.dispose();\n\n\t\t\t\tthis._subMeshes.splice(i, 1);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t--len;\n\t\tfor (; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iIndex = i;\n\t}\n\n\t/**\n\t * Adds a SubMeshBase wrapping a SubGeometry.\n\t *\n\t * @param subGeometry\n\t */\n\tprivate addSubMesh(subGeometry:SubGeometryBase)\n\t{\n\t\tvar SubMeshClass:ISubMeshClass = subGeometry.subMeshClass;\n\n\t\tvar subMesh:ISubMesh = new SubMeshClass(subGeometry, this, null);\n\t\tvar len:number = this._subMeshes.length;\n\n\t\tsubMesh._iIndex = len;\n\n\t\tthis._subMeshes[len] = subMesh;\n\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testMeshCollision(this, this._pPickingCollisionVO, shortestCollisionDistance, findClosest);\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tvar len:number /*uint*/ = this._subMeshes.length;\n\t\tfor (var i:number /*uint*/ = 0; i < len; i++)\n\t\t\tthis._subMeshes[i]._iCollectRenderable(renderer);\n\t}\n\n\tpublic _iInvalidateRenderableGeometries()\n\t{\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iInvalidateRenderableGeometry();\n\t}\n}\n\nexport = Mesh;","import BoundingSphere\t\t\t\t= require(\"awayjs-core/lib/bounds/BoundingSphere\");\nimport BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Box\t\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Box\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport PointLightNode\t\t\t\t= require(\"awayjs-display/lib/partition/PointLightNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeMapShadowMapper\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper\");\n\nclass PointLight extends LightBase implements IEntity\n{\n\tpublic _pRadius:number = 90000;\n\tpublic _pFallOff:number = 100000;\n\tpublic _pFallOffFactor:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._pFallOffFactor = 1/(this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t}\n\n\tpublic pCreateShadowMapper():CubeMapShadowMapper\n\t{\n\t\treturn new CubeMapShadowMapper();\n\t}\n\n\tpublic get radius():number\n\t{\n\t\treturn this._pRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pRadius = value;\n\n\t\tif (this._pRadius < 0) {\n\t\t\tthis._pRadius = 0;\n\t\t} else if (this._pRadius > this._pFallOff) {\n\t\t\tthis._pFallOff = this._pRadius;\n\t\t\tthis.pInvalidateBounds();\n\t\t}\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius );\n\t}\n\n\tpublic iFallOffFactor():number\n\t{\n\t\treturn this._pFallOffFactor;\n\t}\n\n\tpublic get fallOff():number\n\t{\n\t\treturn this._pFallOff;\n\t}\n\n\tpublic set fallOff(value:number)\n\t{\n\t\tthis._pFallOff = value;\n\n\t\tif (this._pFallOff < 0)\n\t\t\tthis._pFallOff = 0;\n\n\t\tif (this._pFallOff < this._pRadius)\n\t\t\tthis._pRadius = this._pFallOff;\n\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new PointLightNode(this);\n\t}\n\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromSphere(new Vector3D(), this._pFallOff);\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//point lights are culled based on their falloff radius\n\t\treturn new BoundingSphere();\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:number[] = new Array(16);\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\t// todo: do not use lookAt on Light\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this._pParent.inverseSceneTransform);\n\t\tthis.lookAt(m.position);\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tvar box:Box = bounds.aabb;\n\t\tvar v1:Vector3D = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));\n\t\tvar v2:Vector3D = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));\n\t\tvar d1:number = v1.x*v1.x + v1.y*v1.y + v1.z*v1.z;\n\t\tvar d2:number = v2.x*v2.x + v2.y*v2.y + v2.z*v2.z;\n\t\tvar d:number = Math.sqrt(d1 > d2? d1 : d2);\n\t\tvar zMin:number;\n\t\tvar zMax:number;\n\n\t\tvar z:number = m.rawData[14];\n\t\tzMin = z - d;\n\t\tzMax = z + d;\n\n\t\traw[5] = raw[0] = zMin/d;\n\t\traw[10] = zMax/(zMax - zMin);\n\t\traw[11] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[12] = raw[13] = raw[15] = 0;\n\t\traw[14] = -zMin*raw[10];\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = PointLight;","import DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Graphics\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Graphics\");\n\n/**\n * This class is used to create lightweight shapes using the ActionScript\n * drawing application program interface(API). The Shape class includes a\n * graphics property, which lets you access methods from the\n * Graphics class.\n *\n *

The Sprite class also includes a graphicsproperty, and it\n * includes other features not available to the Shape class. For example, a\n * Sprite object is a display object container, whereas a Shape object is not\n * (and cannot contain child display objects). For this reason, Shape objects\n * consume less memory than Sprite objects that contain the same graphics.\n * However, a Sprite object supports user input events, while a Shape object\n * does not.

\n */\nclass Shape extends DisplayObject\n{\n\tprivate _graphics:Graphics;\n\n\t/**\n\t * Specifies the Graphics object belonging to this Shape object, where vector\n\t * drawing commands can occur.\n\t */\n\tget graphics():Graphics\n\t{\n\t\treturn this._graphics;\n\t}\n\n\t/**\n\t * Creates a new Shape object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n}\n\nexport = Shape;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport SkyboxNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/SkyboxNode\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as\n * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring\n * the sky box is always as large as possible without being clipped.\n */\nclass Skybox extends DisplayObject implements IEntity, IMaterialOwner\n{\n\tprivate _uvTransform:UVTransform;\n\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a new Skybox object.\n\t *\n\t * @param material\tThe material with which to render the Skybox.\n\t */\n\tconstructor(material:MaterialBase)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.material = material;\n\t}\n\n/**\n * The material with which to render the Skybox.\n */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material)\n\t\t\tthis._material.iRemoveOwner( this);\n\n\t\tthis._material = value;\n\n\t\tif (this._material)\n\t\t\tthis._material.iAddOwner( this);\n\t}\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.SKYBOX;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\t// dead end\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():SkyboxNode\n\t{\n\t\treturn new SkyboxNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\tpublic _iCollectRenderables(renderer:IRenderer)\n\t{\n\t\t//skybox do not get collected in the standard entity list\n\t}\n\n\tpublic _iCollectRenderable(renderer:IRenderer)\n\t{\n\n\t}\n}\n\nexport = Skybox;","import Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport AntiAliasType\t\t\t\t= require(\"awayjs-display/lib/text/AntiAliasType\");\nimport GridFitType\t\t\t\t\t= require(\"awayjs-display/lib/text/GridFitType\");\nimport TextFieldAutoSize\t\t\t= require(\"awayjs-display/lib/text/TextFieldAutoSize\");\nimport TextFieldType\t\t\t\t= require(\"awayjs-display/lib/text/TextFieldType\");\nimport TextFormat\t\t\t\t\t= require(\"awayjs-display/lib/text/TextFormat\");\nimport TextInteractionMode\t\t\t= require(\"awayjs-display/lib/text/TextInteractionMode\");\nimport TextLineMetrics\t\t\t\t= require(\"awayjs-display/lib/text/TextLineMetrics\");\n\n/**\n * The TextField class is used to create display objects for text display and\n * input. You can use the TextField class to\n * perform low-level text rendering. However, in Flex, you typically use the\n * Label, Text, TextArea, and TextInput controls to process text. You can give a text field an instance name in the\n * Property inspector and use the methods and properties of the TextField\n * class to manipulate it with ActionScript. TextField instance names are\n * displayed in the Movie Explorer and in the Insert Target Path dialog box in\n * the Actions panel.\n *\n *

To create a text field dynamically, use the TextField()\n * constructor.

\n *\n *

The methods of the TextField class let you set, select, and manipulate\n * text in a dynamic or input text field that you create during authoring or\n * at runtime.

\n *\n *

ActionScript provides several ways to format your text at runtime. The\n * TextFormat class lets you set character and paragraph formatting for\n * TextField objects. You can apply Cascading Style Sheets(CSS) styles to\n * text fields by using the TextField.styleSheet property and the\n * StyleSheet class. You can use CSS to style built-in HTML tags, define new\n * formatting tags, or apply styles. You can assign HTML formatted text, which\n * optionally uses CSS styles, directly to a text field. HTML text that you\n * assign to a text field can contain embedded media(movie clips, SWF files,\n * GIF files, PNG files, and JPEG files). The text wraps around the embedded\n * media in the same way that a web browser wraps text around media embedded\n * in an HTML document.

\n *\n *

Flash Player supports a subset of HTML tags that you can use to format\n * text. See the list of supported HTML tags in the description of the\n * htmlText property.

\n * \n * @event change Dispatched after a control value is\n * modified, unlike the\n * textInput event, which is\n * dispatched before the value is modified.\n * Unlike the W3C DOM Event Model version of\n * the change event, which\n * dispatches the event only after the\n * control loses focus, the ActionScript 3.0\n * version of the change event\n * is dispatched any time the control\n * changes. For example, if a user types text\n * into a text field, a change\n * event is dispatched after every keystroke.\n * @event link Dispatched when a user clicks a hyperlink\n * in an HTML-enabled text field, where the\n * URL begins with \"event:\". The remainder of\n * the URL after \"event:\" is placed in the\n * text property of the LINK event.\n *\n *

Note: The default behavior,\n * adding the text to the text field, occurs\n * only when Flash Player generates the\n * event, which in this case happens when a\n * user attempts to input text. You cannot\n * put text into a text field by sending it\n * textInput events.

\n * @event scroll Dispatched by a TextField object\n * after the user scrolls.\n * @event textInput Flash Player dispatches the\n * textInput event when a user\n * enters one or more characters of text.\n * Various text input methods can generate\n * this event, including standard keyboards,\n * input method editors(IMEs), voice or\n * speech recognition systems, and even the\n * act of pasting plain text with no\n * formatting or style information.\n * @event textInteractionModeChange Flash Player dispatches the\n * textInteractionModeChange\n * event when a user changes the interaction\n * mode of a text field. for example on\n * Android, one can toggle from NORMAL mode\n * to SELECTION mode using context menu\n * options\n */\nclass TextField extends DisplayObject\n{\n\tprivate _bottomScrollV:number;\n\tprivate _caretIndex:number;\n\tprivate _length:number;\n\tprivate _maxScrollH:number;\n\tprivate _maxScrollV:number;\n\tprivate _numLines:number;\n\tprivate _selectionBeginIndex:number;\n\tprivate _selectionEndIndex:number;\n\tprivate _text:string = \"\";\n\tprivate _textHeight:number;\n\tprivate _textInteractionMode:TextInteractionMode;\n\tprivate _textWidth:number;\n\n\tprivate _charBoundaries:Rectangle;\n\tprivate _charIndexAtPoint:number;\n\tprivate _firstCharInParagraph:number;\n\tprivate _imageReference:DisplayObject\n\tprivate _lineIndexAtPoint:number;\n\tprivate _lineIndexOfChar:number;\n\tprivate _lineLength:number;\n\tprivate _lineMetrics:TextLineMetrics;\n\tprivate _lineOffset:number;\n\tprivate _lineText:string;\n\tprivate _paragraphLength:number;\n\tprivate _textFormat:TextFormat;\n\n\t/**\n\t * When set to true and the text field is not in focus, Flash\n\t * Player highlights the selection in the text field in gray. When set to\n\t * false and the text field is not in focus, Flash Player does\n\t * not highlight the selection in the text field.\n\t * \n\t * @default false\n\t */\n\tpublic alwaysShowSelection:boolean\n\n\t/**\n\t * The type of anti-aliasing used for this text field. Use\n\t * flash.text.AntiAliasType constants for this property. You can\n\t * control this setting only if the font is embedded(with the\n\t * embedFonts property set to true). The default\n\t * setting is flash.text.AntiAliasType.NORMAL.\n\t *\n\t *

To set values for this property, use the following string values:

\n\t */\n\tpublic antiAliasType:AntiAliasType;\n\n\t/**\n\t * Controls automatic sizing and alignment of text fields. Acceptable values\n\t * for the TextFieldAutoSize constants:\n\t * TextFieldAutoSize.NONE(the default),\n\t * TextFieldAutoSize.LEFT, TextFieldAutoSize.RIGHT,\n\t * and TextFieldAutoSize.CENTER.\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.NONE\n\t * (the default) no resizing occurs.

\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.LEFT,\n\t * the text is treated as left-justified text, meaning that the left margin\n\t * of the text field remains fixed and any resizing of a single line of the\n\t * text field is on the right margin. If the text includes a line break(for\n\t * example, \"\\n\" or \"\\r\"), the bottom is also\n\t * resized to fit the next line of text. If wordWrap is also set\n\t * to true, only the bottom of the text field is resized and the\n\t * right side remains fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.RIGHT, the text is treated as\n\t * right-justified text, meaning that the right margin of the text field\n\t * remains fixed and any resizing of a single line of the text field is on\n\t * the left margin. If the text includes a line break(for example,\n\t * \"\\n\" or \"\\r\"), the bottom is also resized to fit the next\n\t * line of text. If wordWrap is also set to true,\n\t * only the bottom of the text field is resized and the left side remains\n\t * fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.CENTER, the text is treated as\n\t * center-justified text, meaning that any resizing of a single line of the\n\t * text field is equally distributed to both the right and left margins. If\n\t * the text includes a line break(for example, \"\\n\" or\n\t * \"\\r\"), the bottom is also resized to fit the next line of\n\t * text. If wordWrap is also set to true, only the\n\t * bottom of the text field is resized and the left and right sides remain\n\t * fixed.

\n\t * \n\t * @throws ArgumentError The autoSize specified is not a member\n\t * of flash.text.TextFieldAutoSize.\n\t */\n\tpublic autoSize:TextFieldAutoSize;\n\n\t/**\n\t * Specifies whether the text field has a background fill. If\n\t * true, the text field has a background fill. If\n\t * false, the text field has no background fill. Use the\n\t * backgroundColor property to set the background color of a\n\t * text field.\n\t * \n\t * @default false\n\t */\n\tpublic background:boolean;\n\n\t/**\n\t * The color of the text field background. The default value is\n\t * 0xFFFFFF(white). This property can be retrieved or set, even\n\t * if there currently is no background, but the color is visible only if the\n\t * text field has the background property set to\n\t * true.\n\t */\n\tpublic backgroundColor:number /*int*/;\n\n\t/**\n\t * Specifies whether the text field has a border. If true, the\n\t * text field has a border. If false, the text field has no\n\t * border. Use the borderColor property to set the border color.\n\t * \n\t * @default false\n\t */\n\tpublic border:boolean;\n\n\t/**\n\t * The color of the text field border. The default value is\n\t * 0x000000(black). This property can be retrieved or set, even\n\t * if there currently is no border, but the color is visible only if the text\n\t * field has the border property set to true.\n\t */\n\tpublic borderColor:number /*int*/;\n\n\t/**\n\t * An integer(1-based index) that indicates the bottommost line that is\n\t * currently visible in the specified text field. Think of the text field as\n\t * a window onto a block of text. The scrollV property is the\n\t * 1-based index of the topmost visible line in the window.\n\t *\n\t *

All the text between the lines indicated by scrollV and\n\t * bottomScrollV is currently visible in the text field.

\n\t */\n\tpublic get bottomScrollV():number /*int*/\n\t{\n\t\treturn this._bottomScrollV;\n\t}\n\n\t/**\n\t * The index of the insertion point(caret) position. If no insertion point\n\t * is displayed, the value is the position the insertion point would be if\n\t * you restored focus to the field(typically where the insertion point last\n\t * was, or 0 if the field has not had focus).\n\t *\n\t *

Selection span indexes are zero-based(for example, the first position\n\t * is 0, the second position is 1, and so on).

\n\t */\n\tpublic get caretIndex():number /*int*/\n\t{\n\t\treturn this._caretIndex;\n\t}\n\n\t/**\n\t * A Boolean value that specifies whether extra white space(spaces, line\n\t * breaks, and so on) in a text field with HTML text is removed. The default\n\t * value is false. The condenseWhite property only\n\t * affects text set with the htmlText property, not the\n\t * text property. If you set text with the text\n\t * property, condenseWhite is ignored.\n\t *\n\t *

If condenseWhite is set to true, use standard\n\t * HTML commands such as
and

to place line\n\t * breaks in the text field.

\n\t *\n\t *

Set the condenseWhite property before setting the\n\t * htmlText property.

\n\t */\n\tpublic condenseWhite:boolean;\n\n\t/**\n\t * Specifies the format applied to newly inserted text, such as text entered\n\t * by a user or text inserted with the replaceSelectedText()\n\t * method.\n\t *\n\t *

Note: When selecting characters to be replaced with\n\t * setSelection() and replaceSelectedText(), the\n\t * defaultTextFormat will be applied only if the text has been\n\t * selected up to and including the last character. Here is an example:

\n\t *
 public my_txt:TextField new TextField();\n\t * my_txt.text = \"Flash Macintosh version\"; public my_fmt:TextFormat = new\n\t * TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt;\n\t * my_txt.setSelection(6,15); // partial text selected - defaultTextFormat\n\t * not applied my_txt.setSelection(6,23); // text selected to end -\n\t * defaultTextFormat applied my_txt.replaceSelectedText(\"Windows version\");\n\t * 
\n\t *\n\t *

When you access the defaultTextFormat property, the\n\t * returned TextFormat object has all of its properties defined. No property\n\t * is null.

\n\t *\n\t *

Note: You can't set this property if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic defaultTextFormat:TextFormat;\n\n\t/**\n\t * Specifies whether the text field is a password text field. If the value of\n\t * this property is true, the text field is treated as a\n\t * password text field and hides the input characters using asterisks instead\n\t * of the actual characters. If false, the text field is not\n\t * treated as a password text field. When password mode is enabled, the Cut\n\t * and Copy commands and their corresponding keyboard shortcuts will not\n\t * function. This security mechanism prevents an unscrupulous user from using\n\t * the shortcuts to discover a password on an unattended computer.\n\t * \n\t * @default false\n\t */\n\tpublic displayAsPassword:boolean;\n\n\t/**\n\t * Specifies whether to render by using embedded font outlines. If\n\t * false, Flash Player renders the text field by using device\n\t * fonts.\n\t *\n\t *

If you set the embedFonts property to true\n\t * for a text field, you must specify a font for that text by using the\n\t * font property of a TextFormat object applied to the text\n\t * field. If the specified font is not embedded in the SWF file, the text is\n\t * not displayed.

\n\t * \n\t * @default false\n\t */\n\tpublic embedFonts:boolean;\n\n\t/**\n\t * The type of grid fitting used for this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED.\n\t *\n\t *

The type of grid fitting used determines whether Flash Player forces\n\t * strong horizontal and vertical lines to fit to a pixel or subpixel grid,\n\t * or not at all.

\n\t *\n\t *

For the flash.text.GridFitType property, you can use the\n\t * following string values:

\n\t * \n\t * @default pixel\n\t */\n\tpublic gridFitType:GridFitType;\n\n\t/**\n\t * Contains the HTML representation of the text field contents.\n\t *\n\t *

Flash Player supports the following HTML tags:

\n\t *\n\t *

Flash Player and AIR also support explicit character codes, such as\n\t * &(ASCII ampersand) and €(Unicode € symbol).

\n\t */\n\tpublic htmlText:string;\n\n\t/**\n\t * The number of characters in a text field. A character such as tab\n\t * (\\t) counts as one character.\n\t */\n\tpublic get length():number /*int*/\n\t{\n\t\treturn this._length;\n\t}\n\n\t/**\n\t * The maximum number of characters that the text field can contain, as\n\t * entered by a user. A script can insert more text than\n\t * maxChars allows; the maxChars property indicates\n\t * only how much text a user can enter. If the value of this property is\n\t * 0, a user can enter an unlimited amount of text.\n\t * \n\t * @default 0\n\t */\n\tpublic maxChars:number /*int*/;\n\n\t/**\n\t * The maximum value of scrollH.\n\t */\n\tpublic maxScrollH():number /*int*/\n\t{\n\t\treturn this._maxScrollH;\n\t}\n\n\t/**\n\t * The maximum value of scrollV.\n\t */\n\tpublic maxScrollV():number /*int*/\n\t{\n\t\treturn this._maxScrollV;\n\t}\n\n\t/**\n\t * A Boolean value that indicates whether Flash Player automatically scrolls\n\t * multiline text fields when the user clicks a text field and rolls the\n\t * mouse wheel. By default, this value is true. This property is\n\t * useful if you want to prevent mouse wheel scrolling of text fields, or\n\t * implement your own text field scrolling.\n\t */\n\tpublic mouseWheelEnabled:boolean;\n\n\t/**\n\t * Indicates whether field is a multiline text field. If the value is\n\t * true, the text field is multiline; if the value is\n\t * false, the text field is a single-line text field. In a field\n\t * of type TextFieldType.INPUT, the multiline value\n\t * determines whether the Enter key creates a new line(a value\n\t * of false, and the Enter key is ignored). If you\n\t * paste text into a TextField with a multiline\n\t * value of false, newlines are stripped out of the text.\n\t * \n\t * @default false\n\t */\n\tpublic multiline:boolean;\n\n\t/**\n\t * Defines the number of text lines in a multiline text field. If\n\t * wordWrap property is set to true, the number of\n\t * lines increases when text wraps.\n\t */\n\tpublic get numLines():number /*int*/\n\t{\n\t\treturn this._numLines;\n\t}\n\n\t/**\n\t * Indicates the set of characters that a user can enter into the text field.\n\t * If the value of the restrict property is null,\n\t * you can enter any character. If the value of the restrict\n\t * property is an empty string, you cannot enter any character. If the value\n\t * of the restrict property is a string of characters, you can\n\t * enter only characters in the string into the text field. The string is\n\t * scanned from left to right. You can specify a range by using the hyphen\n\t * (-) character. Only user interaction is restricted; a script can put any\n\t * text into the text field. This property does\n\t * not synchronize with the Embed font options in the Property inspector.\n\t *\n\t *

If the string begins with a caret(^) character, all characters are\n\t * initially accepted and succeeding characters in the string are excluded\n\t * from the set of accepted characters. If the string does not begin with a\n\t * caret(^) character, no characters are initially accepted and succeeding\n\t * characters in the string are included in the set of accepted\n\t * characters.

\n\t *\n\t *

The following example allows only uppercase characters, spaces, and\n\t * numbers to be entered into a text field:

\n\t *
 my_txt.restrict = \"A-Z 0-9\"; 
\n\t *\n\t *

The following example includes all characters, but excludes lowercase\n\t * letters:

\n\t *
 my_txt.restrict = \"^a-z\"; 
\n\t *\n\t *

You can use a backslash to enter a ^ or - verbatim. The accepted\n\t * backslash sequences are \\-, \\^ or \\\\. The backslash must be an actual\n\t * character in the string, so when specified in ActionScript, a double\n\t * backslash must be used. For example, the following code includes only the\n\t * dash(-) and caret(^):

\n\t *
 my_txt.restrict = \"\\\\-\\\\^\"; 
\n\t *\n\t *

The ^ can be used anywhere in the string to toggle between including\n\t * characters and excluding characters. The following code includes only\n\t * uppercase letters, but excludes the uppercase letter Q:

\n\t *
 my_txt.restrict = \"A-Z^Q\"; 
\n\t *\n\t *

You can use the \\u escape sequence to construct\n\t * restrict strings. The following code includes only the\n\t * characters from ASCII 32(space) to ASCII 126(tilde).

\n\t *
 my_txt.restrict = \"\\u0020-\\u007E\"; 
\n\t * \n\t * @default null\n\t */\n\tpublic restrict:string;\n\n\t/**\n\t * The current horizontal scrolling position. If the scrollH\n\t * property is 0, the text is not horizontally scrolled. This property value\n\t * is an integer that represents the horizontal position in pixels.\n\t *\n\t *

The units of horizontal scrolling are pixels, whereas the units of\n\t * vertical scrolling are lines. Horizontal scrolling is measured in pixels\n\t * because most fonts you typically use are proportionally spaced; that is,\n\t * the characters can have different widths. Flash Player performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if a line uses multiple fonts, the\n\t * height of the line adjusts to fit the largest font in use.

\n\t *\n\t *

Note: The scrollH property is zero-based, not\n\t * 1-based like the scrollV vertical scrolling property.

\n\t */\n\tpublic scrollH:number;\n\n\t/**\n\t * The vertical position of text in a text field. The scrollV\n\t * property is useful for directing users to a specific paragraph in a long\n\t * passage, or creating scrolling text fields.\n\t *\n\t *

The units of vertical scrolling are lines, whereas the units of\n\t * horizontal scrolling are pixels. If the first line displayed is the first\n\t * line in the text field, scrollV is set to 1(not 0). Horizontal scrolling\n\t * is measured in pixels because most fonts are proportionally spaced; that\n\t * is, the characters can have different widths. Flash performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if there are multiple fonts on a\n\t * line, the height of the line adjusts to fit the largest font in use.

\n\t */\n\tpublic scrollV:number;\n\n\t/**\n\t * A Boolean value that indicates whether the text field is selectable. The\n\t * value true indicates that the text is selectable. The\n\t * selectable property controls whether a text field is\n\t * selectable, not whether a text field is editable. A dynamic text field can\n\t * be selectable even if it is not editable. If a dynamic text field is not\n\t * selectable, the user cannot select its text.\n\t *\n\t *

If selectable is set to false, the text in\n\t * the text field does not respond to selection commands from the mouse or\n\t * keyboard, and the text cannot be copied with the Copy command. If\n\t * selectable is set to true, the text in the text\n\t * field can be selected with the mouse or keyboard, and the text can be\n\t * copied with the Copy command. You can select text this way even if the\n\t * text field is a dynamic text field instead of an input text field.

\n\t * \n\t * @default true\n\t */\n\tpublic selectable:boolean;\n\n\t/**\n\t * The zero-based character index value of the first character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionBeginIndex():number /*int*/\n\t{\n\t\treturn this._selectionBeginIndex;\n\t}\n\n\t/**\n\t * The zero-based character index value of the last character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionEndIndex():number /*int*/\n\t{\n\t\treturn this._selectionEndIndex;\n\t}\n\n\t/**\n\t * The sharpness of the glyph edges in this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED. The range\n\t * for sharpness is a number from -400 to 400. If you attempt to\n\t * set sharpness to a value outside that range, Flash sets the\n\t * property to the nearest value in the range(either -400 or 400).\n\t * \n\t * @default 0\n\t */\n\tpublic sharpness:number;\n\n\t/**\n\t * Attaches a style sheet to the text field. For information on creating\n\t * style sheets, see the StyleSheet class and the ActionScript 3.0\n\t * Developer's Guide.\n\t *\n\t *

You can change the style sheet associated with a text field at any\n\t * time. If you change the style sheet in use, the text field is redrawn with\n\t * the new style sheet. You can set the style sheet to null or\n\t * undefined to remove the style sheet. If the style sheet in\n\t * use is removed, the text field is redrawn without a style sheet.

\n\t *\n\t *

Note: If the style sheet is removed, the contents of both\n\t * TextField.text and TextField.htmlText change to\n\t * incorporate the formatting previously applied by the style sheet. To\n\t * preserve the original TextField.htmlText contents without the\n\t * formatting, save the value in a variable before removing the style\n\t * sheet.

\n\t */\n\tpublic styleSheet:StyleSheet;\n\n\t/**\n\t * A string that is the current text in the text field. Lines are separated\n\t * by the carriage return character('\\r', ASCII 13). This\n\t * property contains unformatted text in the text field, without HTML tags.\n\t *\n\t *

To get the text in HTML form, use the htmlText\n\t * property.

\n\t */\n\tpublic get text():string\n\t{\n\t\treturn this._text;\n\t}\n\n\tpublic set text(value:string)\n\t{\n\t\tif (this._text == value)\n\t\t\treturn;\n\n\t\tthis._text = value;\n\t}\n\n\t/**\n\t * The color of the text in a text field, in hexadecimal format. The\n\t * hexadecimal color system uses six digits to represent color values. Each\n\t * digit has 16 possible values or characters. The characters range from 0-9\n\t * and then A-F. For example, black is 0x000000; white is\n\t * 0xFFFFFF.\n\t * \n\t * @default 0(0x000000)\n\t */\n\tpublic textColor:number /*int*/;\n\n\t/**\n\t * The height of the text in pixels.\n\t */\n\tpublic get textHeight():number\n\t{\n\t\treturn this._textHeight;\n\t}\n\n\t/**\n\t * The interaction mode property, Default value is\n\t * TextInteractionMode.NORMAL. On mobile platforms, the normal mode implies\n\t * that the text can be scrolled but not selected. One can switch to the\n\t * selectable mode through the in-built context menu on the text field. On\n\t * Desktop, the normal mode implies that the text is in scrollable as well as\n\t * selection mode.\n\t */\n\tpublic get textInteractionMode():TextInteractionMode\n\t{\n\t\treturn this._textInteractionMode;\n\t}\n\n\t/**\n\t * The width of the text in pixels.\n\t */\n\tpublic get textWidth():number\n\t{\n\t\treturn this._textWidth;\n\t}\n\n\t/**\n\t * The thickness of the glyph edges in this text field. This property applies\n\t * only when AntiAliasType is set to\n\t * AntiAliasType.ADVANCED.\n\t *\n\t *

The range for thickness is a number from -200 to 200. If\n\t * you attempt to set thickness to a value outside that range,\n\t * the property is set to the nearest value in the range(either -200 or\n\t * 200).

\n\t * \n\t * @default 0\n\t */\n\tpublic thickness:number;\n\n\t/**\n\t * The type of the text field. Either one of the following TextFieldType\n\t * constants: TextFieldType.DYNAMIC, which specifies a dynamic\n\t * text field, which a user cannot edit, or TextFieldType.INPUT,\n\t * which specifies an input text field, which a user can edit.\n\t * \n\t * @default dynamic\n\t * @throws ArgumentError The type specified is not a member of\n\t * flash.text.TextFieldType.\n\t */\n\tpublic type:TextFieldType;\n\n\t/**\n\t * Specifies whether to copy and paste the text formatting along with the\n\t * text. When set to true, Flash Player copies and pastes\n\t * formatting(such as alignment, bold, and italics) when you copy and paste\n\t * between text fields. Both the origin and destination text fields for the\n\t * copy and paste procedure must have useRichTextClipboard set\n\t * to true. The default value is false.\n\t */\n\tpublic useRichTextClipboard:boolean;\n\n\t/**\n\t * A Boolean value that indicates whether the text field has word wrap. If\n\t * the value of wordWrap is true, the text field\n\t * has word wrap; if the value is false, the text field does not\n\t * have word wrap. The default value is false.\n\t */\n\tpublic wordWrap:boolean;\n\n\t/**\n\t * Creates a new TextField instance. After you create the TextField instance,\n\t * call the addChild() or addChildAt() method of\n\t * the parent DisplayObjectContainer object to add the TextField instance to\n\t * the display list.\n\t *\n\t *

The default size for a text field is 100 x 100 pixels.

\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Appends the string specified by the newText parameter to the\n\t * end of the text of the text field. This method is more efficient than an\n\t * addition assignment(+=) on a text property\n\t * (such as someTextField.text += moreText), particularly for a\n\t * text field that contains a significant amount of content.\n\t * \n\t * @param newText The string to append to the existing text.\n\t */\n\tpublic appendText(newText:string)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Returns a rectangle that is the bounding box of the character.\n\t * \n\t * @param charIndex The zero-based index value for the character(for\n\t * example, the first position is 0, the second position is\n\t * 1, and so on).\n\t * @return A rectangle with x and y minimum and\n\t * maximum values defining the bounding box of the character.\n\t */\n\tpublic getCharBoundaries(charIndex:number):Rectangle\n\t{\n\t\treturn this._charBoundaries;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the character at the point specified\n\t * by the x and y parameters.\n\t * \n\t * @param x The x coordinate of the character.\n\t * @param y The y coordinate of the character.\n\t * @return The zero-based index value of the character(for example, the\n\t * first position is 0, the second position is 1, and so on). Returns\n\t * -1 if the point is not over any character.\n\t */\n\tpublic getCharIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._charIndexAtPoint;\n\t}\n\n\t/**\n\t * Given a character index, returns the index of the first character in the\n\t * same paragraph.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the first character in the same\n\t * paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getFirstCharInParagraph(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._firstCharInParagraph;\n\t}\n\n\t/**\n\t * Returns a DisplayObject reference for the given id, for an\n\t * image or SWF file that has been added to an HTML-formatted text field by\n\t * using an tag. The tag is in the\n\t * following format:\n\t *\n\t *

 

\n\t * \n\t * @param id The id to match(in the id attribute\n\t * of the tag).\n\t * @return The display object corresponding to the image or SWF file with the\n\t * matching id attribute in the tag\n\t * of the text field. For media loaded from an external source, this\n\t * object is a Loader object, and, once loaded, the media object is a\n\t * child of that Loader object. For media embedded in the SWF file,\n\t * it is the loaded object. If no tag with the\n\t * matching id exists, the method returns\n\t * null.\n\t */\n\tpublic getImageReference(id:string):DisplayObject\n\t{\n\t\treturn this._imageReference;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line at the point specified by\n\t * the x and y parameters.\n\t * \n\t * @param x The x coordinate of the line.\n\t * @param y The y coordinate of the line.\n\t * @return The zero-based index value of the line(for example, the first\n\t * line is 0, the second line is 1, and so on). Returns -1 if the\n\t * point is not over any line.\n\t */\n\tpublic getLineIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._lineIndexAtPoint;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line containing the character\n\t * specified by the charIndex parameter.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the line.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getLineIndexOfChar(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineIndexOfChar;\n\t}\n\n\t/**\n\t * Returns the number of characters in a specific text line.\n\t * \n\t * @param lineIndex The line number for which you want the length.\n\t * @return The number of characters in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineLength(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineLength;\n\t}\n\n\t/**\n\t * Returns metrics information about a given text line.\n\t * \n\t * @param lineIndex The line number for which you want metrics information.\n\t * @return A TextLineMetrics object.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineMetrics(lineIndex:number /*int*/):TextLineMetrics\n\t{\n\t\treturn this._lineMetrics;\n\t}\n\n\t/**\n\t * Returns the character index of the first character in the line that the\n\t * lineIndex parameter specifies.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The zero-based index value of the first character in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineOffset(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineOffset;\n\t}\n\n\t/**\n\t * Returns the text of the line specified by the lineIndex\n\t * parameter.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The text string contained in the specified line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineText(lineIndex:number /*int*/):string\n\t{\n\t\treturn this._lineText;\n\t}\n\n\t/**\n\t * Given a character index, returns the length of the paragraph containing\n\t * the given character. The length is relative to the first character in the\n\t * paragraph(as returned by getFirstCharInParagraph()), not to\n\t * the character index passed in.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return Returns the number of characters in the paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getParagraphLength(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._paragraphLength;\n\t}\n\n\t/**\n\t * Returns a TextFormat object that contains formatting information for the\n\t * range of text that the beginIndex and endIndex\n\t * parameters specify. Only properties that are common to the entire text\n\t * specified are set in the resulting TextFormat object. Any property that is\n\t * mixed, meaning that it has different values at different points in\n\t * the text, has a value of null.\n\t *\n\t *

If you do not specify values for these parameters, this method is\n\t * applied to all the text in the text field.

\n\t *\n\t *

The following table describes three possible usages:

\n\t * \n\t * @return The TextFormat object that represents the formatting properties\n\t * for the specified text.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic getTextFormat(beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1):TextFormat\n\t{\n\t\treturn this._textFormat;\n\t}\n\n\t/**\n\t * Replaces the current selection with the contents of the value\n\t * parameter. The text is inserted at the position of the current selection,\n\t * using the current default character format and default paragraph format.\n\t * The text is not treated as HTML.\n\t *\n\t *

You can use the replaceSelectedText() method to insert and\n\t * delete text without disrupting the character and paragraph formatting of\n\t * the rest of the text.

\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param value The string to replace the currently selected text.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceSelectedText(value:string)\n\t{\n\n\t}\n\n\t/**\n\t * Replaces the range of characters that the beginIndex and\n\t * endIndex parameters specify with the contents of the\n\t * newText parameter. As designed, the text from\n\t * beginIndex to endIndex-1 is replaced.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param beginIndex The zero-based index value for the start position of the\n\t * replacement range.\n\t * @param endIndex The zero-based index position of the first character\n\t * after the desired text span.\n\t * @param newText The text to use to replace the specified range of\n\t * characters.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceText(beginIndex:number /*int*/, endIndex:number /*int*/, newText:string)\n\t{\n\n\t}\n\n\t/**\n\t * Sets as selected the text designated by the index values of the first and\n\t * last characters, which are specified with the beginIndex and\n\t * endIndex parameters. If the two parameter values are the\n\t * same, this method sets the insertion point, as if you set the\n\t * caretIndex property.\n\t * \n\t * @param beginIndex The zero-based index value of the first character in the\n\t * selection(for example, the first character is 0, the\n\t * second character is 1, and so on).\n\t * @param endIndex The zero-based index value of the last character in the\n\t * selection.\n\t */\n\tpublic setSelection(beginIndex:number /*int*/, endIndex:number /*int*/)\n\t{\n\n\t}\n\n\t/**\n\t * Applies the text formatting that the format parameter\n\t * specifies to the specified text in a text field. The value of\n\t * format must be a TextFormat object that specifies the desired\n\t * text formatting changes. Only the non-null properties of\n\t * format are applied to the text field. Any property of\n\t * format that is set to null is not applied. By\n\t * default, all of the properties of a newly created TextFormat object are\n\t * set to null.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t *\n\t *

The setTextFormat() method changes the text formatting\n\t * applied to a range of characters or to the entire body of text in a text\n\t * field. To apply the properties of format to all text in the text field, do\n\t * not specify values for beginIndex and endIndex.\n\t * To apply the properties of the format to a range of text, specify values\n\t * for the beginIndex and the endIndex parameters.\n\t * You can use the length property to determine the index\n\t * values.

\n\t *\n\t *

The two types of formatting information in a TextFormat object are\n\t * character level formatting and paragraph level formatting. Each character\n\t * in a text field can have its own character formatting settings, such as\n\t * font name, font size, bold, and italic.

\n\t *\n\t *

For paragraphs, the first character of the paragraph is examined for\n\t * the paragraph formatting settings for the entire paragraph. Examples of\n\t * paragraph formatting settings are left margin, right margin, and\n\t * indentation.

\n\t *\n\t *

Any text inserted manually by the user, or replaced by the\n\t * replaceSelectedText() method, receives the default text field\n\t * formatting for new text, and not the formatting specified for the text\n\t * insertion point. To set the default formatting for new text, use\n\t * defaultTextFormat.

\n\t * \n\t * @param format A TextFormat object that contains character and paragraph\n\t * formatting information.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic setTextFormat(format:TextFormat, beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1)\n\t{\n\n\t}\n\n\t/**\n\t * Returns true if an embedded font is available with the specified\n\t * fontName and fontStyle where\n\t * Font.fontType is flash.text.FontType.EMBEDDED.\n\t * Starting with Flash Player 10, two kinds of embedded fonts can appear in a\n\t * SWF file. Normal embedded fonts are only used with TextField objects. CFF\n\t * embedded fonts are only used with the flash.text.engine classes. The two\n\t * types are distinguished by the fontType property of the\n\t * Font class, as returned by the enumerateFonts()\n\t * function.\n\t *\n\t *

TextField cannot use a font of type EMBEDDED_CFF. If\n\t * embedFonts is set to true and the only font\n\t * available at run time with the specified name and style is of type\n\t * EMBEDDED_CFF, Flash Player fails to render the text, as if no\n\t * embedded font were available with the specified name and style.

\n\t *\n\t *

If both EMBEDDED and EMBEDDED_CFF fonts are\n\t * available with the same name and style, the EMBEDDED font is\n\t * selected and text renders with the EMBEDDED font.

\n\t * \n\t * @param fontName The name of the embedded font to check.\n\t * @param fontStyle Specifies the font style to check. Use\n\t * flash.text.FontStyle\n\t * @return true if a compatible embedded font is available,\n\t * otherwise false.\n\t * @throws ArgumentError The fontStyle specified is not a member\n\t * of flash.text.FontStyle.\n\t */\n\tpublic static isFontCompatible(fontName:string, fontStyle:string):boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = TextField;","import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\r\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\r\nimport IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\n//import Transform\t\t\t\t = require(\"awayjs-core/lib/geom/Transform\");\r\nimport Matrix3D\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix3D\");\r\nimport Matrix\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix\");\r\n\r\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\r\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\r\nimport SubGeometry\t\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\r\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\r\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\r\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\r\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\r\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\r\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\r\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\r\nimport DisplayObjectContainer\t\t = require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\r\nimport TimeLineFrame\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineFrame\");\r\nimport TimeLineObject\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineObject\");\r\n\r\n/**\r\n * Timeline is a DisplayObjectContainer, that can control the animation of a list of TimeLineObjects.\r\n * For now, the focus of Development is on animating the new type of 2D-Geometry exported from FlashPro,\r\n * but there is no reason that this cannot be used to animate any type of object, that implements IAsset.\r\n**/\r\nclass TimeLine extends DisplayObjectContainer\r\n{\r\n // pool of available TimeLineObject-objects for this timeline.\r\n // Each TImeLineObject hold reference to a pre-instanced (cloned) IAsset,\r\n // so we do not have to do any cloning while playing.\r\n // If a IAsset is of a type that extends DisplayObject, it gets added as Child, with .visible=false\r\n // we need this list, and can not use the children-list directly,\r\n // because TimeLine needs to be able to control IAsset that to not extend DisplayObject.\r\n private _timeLineObjs:Array;\r\n\r\n private _frames:Array;\r\n private _time:number;// the current time inside the animation\r\n private _currentFrame:number;// the current frame\r\n private _speed:number;// the speed of animation. for now keep it positive, as reverse playing will need changes to the commands\r\n private _fps:number;// we use ms internally, but have fps, so user can set time by frame\r\n private _isplaying:boolean;// false if paused or stopped\r\n private _isInit:boolean;// false if paused or stopped\r\n private _playMode:number;// 0: normal, 1: loop, 2: pingpong\r\n private _duration:number=0;\r\n\r\n constructor()\r\n {\r\n super();\r\n this._timeLineObjs=new Array();\r\n this._frames=new Array();\r\n this._currentFrame=0;\r\n this._speed=1.0;\r\n this._isplaying=false;\r\n this._fps=25;\r\n this._time=0;\r\n this._duration=0;\r\n this._playMode=1;\r\n }\r\n\r\n public get speed():number\r\n {\r\n return this._speed;\r\n }\r\n public set speed(newSpeed:number)\r\n {\r\n this._speed=newSpeed;\r\n }\r\n public get fps():number\r\n {\r\n return this._fps;\r\n }\r\n public set fps(newFps:number)\r\n {\r\n this._fps=newFps;\r\n }\r\n public get assetType():string\r\n {\r\n return AssetType.TIMELINE;\r\n }\r\n\r\n /**\r\n * should be called right before the call to away3d-render.\r\n */\r\n public update(timeDelta:number, jumpingToFrame:boolean=false)\r\n {\r\n var tlo:number;\r\n // only update if playing, or if not init before, or if jumping to frame\r\n if((this._isplaying)||(!this._isInit)||(jumpingToFrame)) {\r\n\r\n // multiply the timeDelta with the speed (can be negative)\r\n // update the this._time accordingly\r\n var timeDelta:number = timeDelta * this._speed;\r\n this._time += timeDelta;\r\n // take care that the _time is within bounds\r\n while(this._time>this._duration){\r\n if(this._playMode==0){\r\n this._time=this._duration;\r\n this.stop();\r\n }\r\n else if(this._playMode==1){\r\n this._time-=this._duration;\r\n }\r\n }\r\n while(this._time<0){\r\n if(this._playMode==0){\r\n this._time=0;\r\n this.stop();\r\n }\r\n else if(this._playMode==1) {\r\n this._time += this._duration;\r\n }\r\n }\r\n\r\n\r\n // now we know the exact time of the animation that we want to display.\r\n // next we need to decide which Frame needs to be displayed. (index in Array)\r\n // this should always be currentFrame, or currentFrame++\r\n // each frame has startTime and EndTime, so we can easily decide\r\n var frameCnt:number = 0;\r\n var curFrame:TimeLineFrame;\r\n var foundFrame:Boolean = false;\r\n // this while loop should only be executed 1-2 times\r\n while (frameCnt < this._frames.length) {\r\n curFrame = this._frames[this._currentFrame];\r\n //console.log(\"searchForFrame==\"+this._time+\" startTime= \"+curFrame.startTime+\" endTime = \"+curFrame.endTime);\r\n\r\n if ((this._time >= curFrame.startTime) && (this._time <= curFrame.endTime)) {\r\n foundFrame = true;\r\n frameCnt = this._frames.length;\r\n }\r\n else {\r\n curFrame.makeDirty();// make sure the frame gets executed next time it should show\r\n if (this._speed < 0) {\r\n this._currentFrame--;\r\n if (this._currentFrame < 0) {\r\n this._currentFrame = this._frames.length - 1;\r\n }\r\n }\r\n else {\r\n this._currentFrame++;\r\n if (this._currentFrame >= this._frames.length) {\r\n this._currentFrame = 0;\r\n }\r\n }\r\n }\r\n frameCnt++;\r\n }\r\n //console.log(\"foundframe=\"+foundFrame+\" thistime= \"+this._time+\" frameIDX = \"+this._currentFrame);\r\n\r\n // if foundFrame is true, curFrame is the frame to display.\r\n if (foundFrame) {\r\n //console.log(\"Frame dirty=\"+curFrame.isDirty);\r\n if(curFrame.isDirty) {\r\n //console.log(\"Reset isOnStage value\");\r\n // reset the \"isOnStage\" state for all the objects\r\n\r\n var commandSet:number=1;// 1 = execute normal playback commands\r\n if(this._speed<0){\r\n commandSet=2;//2 = execute reversed playback commands\r\n }\r\n // if we are jumping Frames, we need to hide all objects and fully init\r\n //if(jumpingToFrame) {\r\n commandSet = 0;//0 = execute full init frame commands\r\n for (tlo = 0; tlo < this._timeLineObjs.length; tlo++) {\r\n if (this._timeLineObjs[tlo].isActive) {\r\n this._timeLineObjs[tlo].deactivate();\r\n }\r\n }\r\n // }\r\n //todo: use the correct set of commands (for now we always use set 1)\r\n curFrame.executeCommands(1, this._time, this._speed);\r\n\r\n // now we have all objects on stage, we can execute the frame script for this frame\r\n this.executeFrameScript(curFrame.script);\r\n\r\n }\r\n else{\r\n // the frame has already been initiated.\r\n // for now we do nothing\r\n // later we might want to implement interpolation here\r\n }\r\n }\r\n this._isInit=true;\r\n }\r\n // update all the visible TimeLineObjects that are of type timeline\r\n for (tlo=0; tlothis._timeLineObjs[tlo].asset).update(timeDelta);\r\n }\r\n }\r\n }\r\n\r\n }\r\n /**\r\n * Add a new TimeLineFrame.\r\n */\r\n public addFrame(newFrame:TimeLineFrame)\r\n {\r\n this._duration+=newFrame.duration;\r\n this._frames.push(newFrame);\r\n }\r\n public get duration():number\r\n {\r\n return this._duration;\r\n }\r\n public set duration(newDuration:number)\r\n {\r\n this._duration=newDuration;\r\n }\r\n /**\r\n * This is called inside the TimeLineFrame.execute() function.\r\n */\r\n public executeFrameScript(frameScript:string)\r\n {\r\n\r\n // this function should interpret the framescript.\r\n // the timeline object offer functions getObjectByInstanceName(instanceName:string)\r\n // a nested movieClip like \"mainWindow.clip1\" could be accessed like this:\r\n // getObjectByInstanceName(\"mainWindow\").getObjectByInstanceName(\"clip1\")\r\n\r\n // the AssetLibrary can be used as equivalent for the flash-library.\r\n // it already has options to access library-assets by name, so i think we can work with that.\r\n\r\n }\r\n /**\r\n * Starts playback of animation from current position\r\n */\r\n public start() {\r\n this._isplaying=true;\r\n this.update(0);\r\n }\r\n /**\r\n * Stop playback of animation and hold current position\r\n */\r\n public stop() {\r\n this._isplaying=false;// no need to call any other stuff\r\n }\r\n\r\n /**\r\n * Classic gotoAndPlay like as3 api - set frame by frame-number.\r\n */\r\n public gotoAndPlay(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * Classic gotoAndStop as3 api - set frame by frame-number.\r\n */\r\n public gotoAndStop(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n /**\r\n * gotoAndPlay - set frame by frame-label.\r\n */\r\n public gotoAndPlayLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this._isplaying = true;\r\n this.update(0, true);\r\n }\r\n }\r\n /**\r\n * gotoAndStop - set frame by frame-label.\r\n */\r\n public gotoAndStopLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this.update(0, true);\r\n this._isplaying = false;\r\n }\r\n }\r\n /**\r\n * gotoAndPlay - set time in ms.\r\n */\r\n public gotoAndPlayTime(time:number){\r\n this._time=time;\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * gotoAndStop - set time in ms.\r\n */\r\n public gotoAndStopTime(time:number){\r\n this._time=time;\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n\r\n public addTimeLineObject(newTlObj:TimeLineObject, isDisplayObj:boolean=true) {\r\n if (isDisplayObj) {\r\n this.addChild(newTlObj.asset);\r\n }\r\n newTlObj.deactivate();\r\n this._timeLineObjs.push(newTlObj);\r\n }\r\n public getTimeLineObjectByID(objID:number):TimeLineObject\r\n {\r\n for (var tlo:number=0; tlo this._endTime * speed) {\r\n return;\r\n }\r\n if (this._type == 0) {\r\n //interpolate number\r\n return (this._startValue + (((time - this._startTime) * (this._duration * speed)) * (this._endValue - this._startValue)));\r\n }\r\n if (this._type == 1){\r\n //todo: interpolate matrix3D\r\n }\r\n if (this._type == 2) {\r\n //todo: interpolate Matrix3D, but handle it as 2D object (do not touch z.position)\r\n }\r\n if (this._type == 3) {\r\n //todo: interpolate ColorTransform\r\n }\r\n return;\r\n }\r\n}\r\n\r\nexport = InterpolationObject;\r\n","import AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\r\nimport IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\nimport Matrix3D\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix3D\");\r\nimport Matrix\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix\");\r\n\r\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\r\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\r\nimport SubGeometry\t\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\r\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\r\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\r\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\r\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\r\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\r\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\r\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\r\nimport DisplayObjectContainer\t\t = require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\r\nimport Mesh\t\t = require(\"awayjs-display/lib/entities/Mesh\");\r\nimport TimeLine = require(\"awayjs-display/lib/entities/TimeLine\");\r\nimport FrameCommand = require(\"awayjs-display/lib/entities/timelinedata/FrameCommand\");\r\n\r\n\r\n/**\r\n * TimelineFrame holds 3 list of FrameCommands\r\n * - list1 _frameCommands should be executed when playing the timeline (previous Frame was played)\r\n * - list2 _frameCommandsReverse should be executed when playing the timeline reversed (previous Frame was played)\r\n * - list3 _frameCommandsInit should be executed when jumping to a frame, so we need to fully init the frame\r\n *\r\n * Addionial TimelineFrame properties are:\r\n * - script - can be executed, after the frameCommands have been executed\r\n * - list of FrameLabels, and list of corresponding labelTypes\r\n * - duration-value (1 frame is not necessary 1 frame long)\r\n * - startTime and endTime are needed internally when deciding what frame to display\r\n */\r\nclass TimeLineFrame\r\n{\r\n private _script:string;\r\n private _startTime:number;\r\n private _endTime:number;\r\n private _duration:number;\r\n private _timeline:TimeLine;\r\n private _frameCommands:Array;\r\n private _frameCommandsReverse:Array;\r\n private _frameCommandsInit:Array;\r\n private _framelabels:Array;\r\n private _labelTypes:Array;\r\n private _isDirty:boolean;\r\n\r\n constructor()\r\n {\r\n this._isDirty=true;\r\n this._script=\"\";\r\n this._duration=1;//use millisecs for duration ? or frames ?\r\n this._frameCommands=new Array();\r\n this._frameCommandsReverse=new Array();\r\n this._frameCommandsInit=new Array();\r\n this._framelabels=new Array();\r\n this._labelTypes=new Array();\r\n }\r\n public addCommand(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommands.push(newCommand);\r\n }\r\n public addCommandReverse(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommandsReverse.push(newCommand);\r\n }\r\n public addCommandInit(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommandsInit.push(newCommand);\r\n }\r\n public addLabel(label:string, type:number)\r\n {\r\n this._framelabels.push(label);\r\n this._labelTypes.push(type);\r\n }\r\n public get framelabels():Array\r\n {\r\n return this._framelabels;\r\n }\r\n public get labelTypes():Array\r\n {\r\n return this._labelTypes;\r\n }\r\n public get script():string\r\n {\r\n return this._script;\r\n }\r\n public addToScript(newscript:string)\r\n {\r\n this._script+=newscript;\r\n }\r\n\r\n public get isDirty():boolean\r\n {\r\n return this._isDirty;\r\n }\r\n public makeDirty():void\r\n {\r\n this._isDirty=true;\r\n }\r\n public get startTime():number\r\n {\r\n return this._startTime;\r\n }\r\n public get duration():number\r\n {\r\n return this._duration;\r\n }\r\n public get endTime():number\r\n {\r\n return this._endTime;\r\n }\r\n public setFrameTime(startTime:number, duration:number)\r\n {\r\n this._startTime=startTime;\r\n this._duration=duration;\r\n this._endTime=startTime+duration;\r\n }\r\n /**\r\n * executes the set of Commands for this Frame.\r\n * Each Frame has 3 sets of commands:\r\n * 0 = init frame commands = the frame must be init as if previous frame was not played\r\n * 1 = play frame commands = the previous frame was played\r\n * 2 = playReverse Commands = the next frame was played\r\n */\r\n public executeCommands(commandSet:number, time:number, speed:number){\r\n // execute all the frame commands for this frame\r\n if(commandSet==0){\r\n //todo: create the frameCommands for init in the parser\r\n for (var i = 0; i < this._frameCommandsInit.length; i++) {\r\n this._frameCommandsInit[i].execute(time, speed);\r\n }\r\n }\r\n else if (commandSet==1) {\r\n for (var i = 0; i < this._frameCommands.length; i++) {\r\n this._frameCommands[i].execute(time, speed);\r\n }\r\n }\r\n else if (commandSet==2) {\r\n //todo: create the frameCommands for reverse playback in the parser\r\n for (var i = 0; i < this._frameCommandsReverse.length; i++) {\r\n this._frameCommandsReverse[i].execute(time, speed);\r\n }\r\n }\r\n // mark this frame as not dirty, so it will not get executed again, unless TimeLine makes it dirty again.\r\n // whenever a Frame is entered, the Timeline should mark the previous frame as dirty.\r\n this._isDirty=false;\r\n }\r\n\r\n}\r\n\r\nexport = TimeLineFrame;\r\n","import IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\n\r\nimport CommandPropsBase = require(\"awayjs-display/lib/entities/timelinedata/CommandPropsBase\");\r\n\r\n/**\r\n * TimeLineObject represents a unique object that is (or will be) used by a TimeLine.\r\n * A TimeLineObject basically consists of an objID, and an IAsset.\r\n * The FrameCommands hold references to these TimeLineObjects, so they can access and modify the IAssets\r\n\r\n */\r\nclass TimeLineObject\r\n{\r\n // the IAsset of this TimeLineObject. This should already be a unique Object-Instance.\r\n private _asset:IAsset;\r\n\r\n // the object-id of this TimeLineObject/IAsset. This is not really used anymore (?).\r\n private _objID:number;\r\n\r\n // This timeLineProps offers function to deActivate the current TimeLineObject.\r\n // what happens in the deactivate function is up to the CommandProps (which can be of different type)\r\n private _deactivateCommandProps:CommandPropsBase;\r\n\r\n // keep track if this TimeLineObject is currently active or not.\r\n // for IAsset that extends DisplayObject, active means they are visible.\r\n // for other IAssets it can have different meaning (sound playing...)\r\n private _isActive:boolean;\r\n\r\n // if the object is a DisplayObject that should be considered a 2D object,\r\n // we will update the z-position to represent object-depth todo\r\n private _is2D:boolean;\r\n\r\n constructor(asset:IAsset, objID:number, deactiveCommandProps:CommandPropsBase)\r\n {\r\n this._asset=asset;\r\n this._objID=objID;\r\n this._is2D=true;\r\n this._isActive=false;\r\n this._deactivateCommandProps=deactiveCommandProps;\r\n this._deactivateCommandProps.deactivate(this._asset);\r\n }\r\n public set deactivateCommandProps(newCommandprops:CommandPropsBase)\r\n {\r\n this._deactivateCommandProps=newCommandprops;\r\n }\r\n public deactivate()\r\n {\r\n //if(this._deactivateCommandProps==undefined)\r\n // return;\r\n this._deactivateCommandProps.deactivate(this._asset);\r\n this._isActive=false;\r\n }\r\n\r\n public get asset():IAsset\r\n {\r\n return this._asset;\r\n }\r\n public set asset(newAsset:IAsset)\r\n {\r\n this._asset=newAsset;\r\n }\r\n public get objID():number\r\n {\r\n return this._objID;\r\n }\r\n public set objID(newobjID:number)\r\n {\r\n this._objID=newobjID;\r\n }\r\n public get is2D():boolean\r\n {\r\n return this._is2D;\r\n }\r\n public set is2D(newis2D:boolean)\r\n {\r\n this._is2D=newis2D;\r\n }\r\n public get isActive():boolean\r\n {\r\n return this._isActive;\r\n }\r\n public set isActive(newisActive:boolean)\r\n {\r\n this._isActive=newisActive;\r\n }\r\n}\r\n\r\nexport = TimeLineObject;\r\n","import Error\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nclass CastError extends Error\n{\n\tconstructor(message:string)\n\t{\n\t\tsuper(message);\n\t}\n}\n\nexport = CastError;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\n\n/**\n * @class away.events.CameraEvent\n */\nclass CameraEvent extends Event\n{\n\tpublic static PROJECTION_CHANGED:string = \"projectionChanged\";\n\n\tprivate _camera:Camera;\n\n\tconstructor(type:string, camera:Camera)\n\t{\n\t\tsuper(type);\n\n\t\tthis._camera = camera;\n\t}\n\n\tpublic get camera():Camera\n\t{\n\t\treturn this._camera;\n\t}\n}\n\nexport = CameraEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass DisplayObjectEvent extends Event\n{\n\tpublic static VISIBLITY_UPDATED:string = \"visiblityUpdated\";\n\tpublic static SCENETRANSFORM_CHANGED:string = \"scenetransformChanged\";\n\tpublic static SCENE_CHANGED:string = \"sceneChanged\";\n\tpublic static POSITION_CHANGED:string = \"positionChanged\";\n\tpublic static ROTATION_CHANGED:string = \"rotationChanged\";\n\tpublic static SCALE_CHANGED:string = \"scaleChanged\";\n\n\tpublic object:DisplayObject;\n\n\tconstructor(type:string, object:DisplayObject)\n\t{\n\t\tsuper(type);\n\t\tthis.object = object;\n\t}\n}\n\nexport = DisplayObjectEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\n\n/**\n* Dispatched to notify changes in a geometry object's state.\n*\n* @class away.events.GeometryEvent\n* @see away3d.core.base.Geometry\n*/\nclass GeometryEvent extends Event\n{\n\t/**\n\t * Dispatched when a TriangleSubGeometry was added to the dispatching Geometry.\n\t */\n\tpublic static SUB_GEOMETRY_ADDED:string = \"SubGeometryAdded\";\n\n\t/**\n\t * Dispatched when a TriangleSubGeometry was removed from the dispatching Geometry.\n\t */\n\tpublic static SUB_GEOMETRY_REMOVED:string = \"SubGeometryRemoved\";\n\n\tpublic static BOUNDS_INVALID:string = \"BoundsInvalid\";\n\n\tprivate _subGeometry:SubGeometryBase;\n\n\t/**\n\t * Create a new GeometryEvent\n\t * @param type The event type.\n\t * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event.\n\t */\n\tconstructor(type:string, subGeometry:SubGeometryBase = null)\n\t{\n\t\tsuper(type);\n\n\t\tthis._subGeometry = subGeometry;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object that is the subject of this event, if appropriate.\n\t */\n\tpublic get subGeometry():SubGeometryBase\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Clones the event.\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new GeometryEvent(this.type, this._subGeometry);\n\t}\n}\n\nexport = GeometryEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass LightEvent extends Event\n{\n\n\tpublic static CASTS_SHADOW_CHANGE:string = \"castsShadowChange\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n\n\t//@override\n\tpublic clone():Event\n\t{\n\t\treturn new LightEvent(this.type);\n\t}\n}\n\nexport = LightEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass MaterialEvent extends Event\n{\n\tpublic static SIZE_CHANGED:string = \"sizeChanged\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = MaterialEvent;","import Point\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IMaterialOwner\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport View\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A MouseEvent is dispatched when a mouse event occurs over a mouseEnabled object in View.\n * TODO: we don't have screenZ data, tho this should be easy to implement\n */\nclass MouseEvent extends Event\n{\n\t// Private.\n\tpublic _iAllowedToPropagate:boolean = true;\n\tpublic _iParentEvent:MouseEvent;\n\n\t/**\n\t * Defines the value of the type property of a mouseOver3d event object.\n\t */\n\tpublic static MOUSE_OVER:string = \"mouseOver3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseOut3d event object.\n\t */\n\tpublic static MOUSE_OUT:string = \"mouseOut3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseUp3d event object.\n\t */\n\tpublic static MOUSE_UP:string = \"mouseUp3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseDown3d event object.\n\t */\n\tpublic static MOUSE_DOWN:string = \"mouseDown3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseMove3d event object.\n\t */\n\tpublic static MOUSE_MOVE:string = \"mouseMove3d\";\n\n\t/**\n\t * Defines the value of the type property of a rollOver3d event object.\n\t */\n//\t\tpublic static ROLL_OVER : string = \"rollOver3d\";\n\n\t/**\n\t * Defines the value of the type property of a rollOut3d event object.\n\t */\n//\t\tpublic static ROLL_OUT : string = \"rollOut3d\";\n\n\t/**\n\t * Defines the value of the type property of a click3d event object.\n\t */\n\tpublic static CLICK:string = \"click3d\";\n\n\t/**\n\t * Defines the value of the type property of a doubleClick3d event object.\n\t */\n\tpublic static DOUBLE_CLICK:string = \"doubleClick3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseWheel3d event object.\n\t */\n\tpublic static MOUSE_WHEEL:string = \"mouseWheel3d\";\n\n\t/**\n\t * The horizontal coordinate at which the event occurred in view coordinates.\n\t */\n\tpublic screenX:number;\n\n\t/**\n\t * The vertical coordinate at which the event occurred in view coordinates.\n\t */\n\tpublic screenY:number;\n\n\t/**\n\t * The view object inside which the event took place.\n\t */\n\tpublic view:View;\n\n\t/**\n\t * The 3d object inside which the event took place.\n\t */\n\tpublic object:DisplayObject;\n\n\t/**\n\t * The material owner inside which the event took place.\n\t */\n\tpublic materialOwner:IMaterialOwner;\n\n\t/**\n\t * The material of the 3d element inside which the event took place.\n\t */\n\tpublic material:MaterialBase;\n\n\t/**\n\t * The uv coordinate inside the draw primitive where the event took place.\n\t */\n\tpublic uv:Point;\n\n\t/**\n\t * The index of the face where the event took place.\n\t */\n\tpublic index:number;\n\n\t/**\n\t * The index of the subGeometry where the event took place.\n\t */\n\tpublic subGeometryIndex:number;\n\n\t/**\n\t * The position in object space where the event took place\n\t */\n\tpublic localPosition:Vector3D;\n\n\t/**\n\t * The normal in object space where the event took place\n\t */\n\tpublic localNormal:Vector3D;\n\n\t/**\n\t * Indicates whether the Control key is active (true) or inactive (false).\n\t */\n\tpublic ctrlKey:boolean;\n\n\t/**\n\t * Indicates whether the Alt key is active (true) or inactive (false).\n\t */\n\tpublic altKey:boolean;\n\n\t/**\n\t * Indicates whether the Shift key is active (true) or inactive (false).\n\t */\n\tpublic shiftKey:boolean;\n\n\t/**\n\t * Indicates how many lines should be scrolled for each unit the user rotates the mouse wheel.\n\t */\n\tpublic delta:number;\n\n\t/**\n\t * Create a new MouseEvent object.\n\t * @param type The type of the MouseEvent.\n\t */\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get bubbles():boolean\n\t{\n\t\tvar doesBubble:boolean = this._iAllowedToPropagate;\n\t\tthis._iAllowedToPropagate = true;\n\n\t\t// Don't bubble if propagation has been stopped.\n\t\treturn doesBubble;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopPropagation()\n\t{\n\t\tthis._iAllowedToPropagate = false;\n\n\t\tif (this._iParentEvent)\n\t\t\tthis._iParentEvent.stopPropagation();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopImmediatePropagation()\n\t{\n\t\tthis._iAllowedToPropagate = false;\n\n\t\tif (this._iParentEvent)\n\t\t\tthis._iParentEvent.stopImmediatePropagation();\n\t}\n\n\t/**\n\t * Creates a copy of the MouseEvent object and sets the value of each property to match that of the original.\n\t */\n\tpublic clone():Event\n\t{\n\t\tvar result:MouseEvent = new MouseEvent(this.type);\n\n\t\t/* TODO: Debug / test - look into isDefaultPrevented\n\t\t if (isDefaultPrevented())\n\t\t result.preventDefault();\n\t\t */\n\n\t\tresult.screenX = this.screenX;\n\t\tresult.screenY = this.screenY;\n\n\t\tresult.view = this.view;\n\t\tresult.object = this.object;\n\t\tresult.materialOwner = this.materialOwner;\n\t\tresult.material = this.material;\n\t\tresult.uv = this.uv;\n\t\tresult.localPosition = this.localPosition;\n\t\tresult.localNormal = this.localNormal;\n\t\tresult.index = this.index;\n\t\tresult.subGeometryIndex = this.subGeometryIndex;\n\t\tresult.delta = this.delta;\n\n\t\tresult.ctrlKey = this.ctrlKey;\n\t\tresult.shiftKey = this.shiftKey;\n\n\t\tresult._iParentEvent = this;\n\t\tresult._iAllowedToPropagate = this._iAllowedToPropagate;\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * The position in scene space where the event took place\n\t */\n\tpublic get scenePosition():Vector3D\n\t{\n\t\treturn this.object.sceneTransform.transformVector(this.localPosition);\n\t}\n\n\t/**\n\t * The normal in scene space where the event took place\n\t */\n\tpublic get sceneNormal():Vector3D\n\t{\n\t\tvar sceneNormal:Vector3D = this.object.sceneTransform.deltaTransformVector(this.localNormal);\n\t\tsceneNormal.normalize();\n\n\t\treturn sceneNormal;\n\t}\n}\n\nexport = MouseEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass RendererEvent extends Event\n{\n\tpublic static VIEWPORT_UPDATED:string = \"viewportUpdated\";\n\tpublic static SCISSOR_UPDATED:string = \"scissorUpdated\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = RendererEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass ResizeEvent extends Event\n{\n\tpublic static RESIZE:string = \"resize\";\n\n\tprivate _oldHeight:number;\n\tprivate _oldWidth:number;\n\n\tconstructor(type:string, oldHeight:number = NaN, oldWidth:number = NaN)\n\t{\n\t\tsuper(type);\n\n\t\tthis._oldHeight = oldHeight;\n\t\tthis._oldWidth = oldWidth;\n\t}\n\n\tpublic get oldHeight():number\n\t{\n\t\treturn this._oldHeight;\n\t}\n\n\tpublic get oldWidth():number\n\t{\n\t\treturn this._oldWidth;\n\t}\n}\n\nexport = ResizeEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass SceneEvent extends Event\n{\n\t/**\n\t *\n\t */\n\tpublic static ADDED_TO_SCENE:string = \"addedToScene\";\n\n\t/**\n\t *\n\t */\n\tpublic static REMOVED_FROM_SCENE:string = \"removedFromScene\";\n\n\t/**\n\t *\n\t */\n\tpublic static PARTITION_CHANGED:string = \"partitionChanged\";\n\n\t/**\n\t *\n\t */\n\tpublic displayObject:DisplayObject;\n\n\tconstructor(type:string, displayObject:DisplayObject)\n\t{\n\t\tsuper(type);\n\n\t\tthis.displayObject = displayObject;\n\t}\n}\n\nexport = SceneEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass StageEvent extends Event\n{\n\tpublic static CONTEXT_CREATED:string = \"contextCreated\";\n\tpublic static CONTEXT_DISPOSED:string = \"contextDisposed\";\n\tpublic static CONTEXT_RECREATED:string = \"contextRecreated\";\n\tpublic static VIEWPORT_UPDATED:string = \"viewportUpdated\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = StageEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\n/**\n * Dispatched to notify changes in a sub geometry object's state.\n *\n * @class away.events.SubGeometryEvent\n * @see away.core.base.Geometry\n */\nclass SubGeometryEvent extends Event\n{\n\t/**\n\t * Dispatched when a TriangleSubGeometry's index data has been updated.\n\t */\n\tpublic static INDICES_UPDATED:string = \"indicesUpdated\";\n\n\t/**\n\t * Dispatched when a TriangleSubGeometry's vertex data has been updated.\n\t */\n\tpublic static VERTICES_UPDATED:string = \"verticesUpdated\";\n\n\tprivate _dataType:string;\n\n\t/**\n\t * Create a new GeometryEvent\n\t * @param type The event type.\n\t * @param dataType An optional data type of the vertex data being updated.\n\t */\n\tconstructor(type:string, dataType:string = \"\")\n\t{\n\t\tsuper(type);\n\n\t\tthis._dataType = dataType;\n\t}\n\n\t/**\n\t * The data type of the vertex data.\n\t */\n\tpublic get dataType():string\n\t{\n\t\treturn this._dataType;\n\t}\n\n\t/**\n\t * Clones the event.\n\t *\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new SubGeometryEvent(this.type, this._dataType);\n\t}\n}\n\nexport = SubGeometryEvent;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport View\t\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport AwayMouseEvent\t\t\t\t= require(\"awayjs-display/lib/events/MouseEvent\");\n\n/**\n * MouseManager enforces a singleton pattern and is not intended to be instanced.\n * it provides a manager class for detecting mouse hits on scene objects and sending out mouse events.\n */\nclass MouseManager\n{\n\tprivate static _instance:MouseManager;\n\n\tprivate _viewLookup:Array = new Array();\n\n\tpublic _iActiveDiv:HTMLDivElement;\n\tpublic _iUpdateDirty:boolean;\n\tpublic _iCollidingObject:PickingCollisionVO;\n\t\n\tprivate _nullVector:Vector3D = new Vector3D();\n\tprivate _previousCollidingObject:PickingCollisionVO;\n\tprivate _queuedEvents:Array = new Array();\n\n\tprivate _mouseMoveEvent:MouseEvent;\n\n\tprivate _mouseUp:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_UP);\n\tprivate _mouseClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.CLICK);\n\tprivate _mouseOut:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OUT);\n\tprivate _mouseDown:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_DOWN);\n\tprivate _mouseMove:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_MOVE);\n\tprivate _mouseOver:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OVER);\n\tprivate _mouseWheel:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_WHEEL);\n\tprivate _mouseDoubleClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.DOUBLE_CLICK);\n\n\tprivate onClickDelegate:(event:MouseEvent) => void;\n\tprivate onDoubleClickDelegate:(event:MouseEvent) => void;\n\tprivate onMouseDownDelegate:(event:MouseEvent) => void;\n\tprivate onMouseMoveDelegate:(event:MouseEvent) => void;\n\tprivate onMouseUpDelegate:(event:MouseEvent) => void;\n\tprivate onMouseWheelDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOverDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOutDelegate:(event:MouseEvent) => void;\n\n\t/**\n\t * Creates a new MouseManager object.\n\t */\n\tconstructor()\n\t{\n\t\tthis.onClickDelegate = (event:MouseEvent) => this.onClick(event);\n\t\tthis.onDoubleClickDelegate = (event:MouseEvent) => this.onDoubleClick(event);\n\t\tthis.onMouseDownDelegate = (event:MouseEvent) => this.onMouseDown(event);\n\t\tthis.onMouseMoveDelegate = (event:MouseEvent) => this.onMouseMove(event);\n\t\tthis.onMouseUpDelegate = (event:MouseEvent) => this.onMouseUp(event);\n\t\tthis.onMouseWheelDelegate = (event:MouseEvent) => this.onMouseWheel(event);\n\t\tthis.onMouseOverDelegate = (event:MouseEvent) => this.onMouseOver(event);\n\t\tthis.onMouseOutDelegate = (event:MouseEvent) => this.onMouseOut(event);\n\t}\n\n\tpublic static getInstance():MouseManager\n\t{\n\t\tif (this._instance)\n\t\t\treturn this._instance;\n\n\t\treturn (this._instance = new MouseManager());\n\t}\n\n\tpublic fireMouseEvents(forceMouseMove:boolean)\n\t{\n\t\t // If colliding object has changed, queue over/out events.\n\t\tif (this._iCollidingObject != this._previousCollidingObject) {\n\t\t\tif (this._previousCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOut, this._mouseMoveEvent, this._previousCollidingObject);\n\n\t\t\tif (this._iCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOver, this._mouseMoveEvent);\n\t\t}\n\n\t\t // Fire mouse move events here if forceMouseMove is on.\n\t\tif (forceMouseMove && this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseMove, this._mouseMoveEvent);\n\n\t\tvar event:AwayMouseEvent;\n\t\tvar dispatcher:DisplayObject;\n\n\t\t // Dispatch all queued events.\n\t\tvar len:number = this._queuedEvents.length;\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\t// Only dispatch from first implicitly enabled object ( one that is not a child of a mouseChildren = false hierarchy ).\n\t\t\tevent = this._queuedEvents[i];\n\t\t\tdispatcher = event.object;\n\n\t\t\twhile (dispatcher && !dispatcher._iIsMouseEnabled())\n\t\t\t\tdispatcher = dispatcher.parent;\n\n\t\t\tif (dispatcher)\n\t\t\t\tdispatcher.dispatchEvent(event);\n\t\t}\n\n\t\tthis._queuedEvents.length = 0;\n\n\t\tthis._previousCollidingObject = this._iCollidingObject;\n\n\t\tthis._iUpdateDirty = false;\n\t}\n\n//\t\tpublic addViewLayer(view:View)\n//\t\t{\n//\t\t\tvar stg:Stage = view.stage;\n//\n//\t\t\t// Add instance to mouse3dmanager to fire mouse events for multiple views\n//\t\t\tif (!view.stageGL.mouse3DManager)\n//\t\t\t\tview.stageGL.mouse3DManager = this;\n//\n//\t\t\tif (!hasKey(view))\n//\t\t\t\t_view3Ds[view] = 0;\n//\n//\t\t\t_childDepth = 0;\n//\t\t\ttraverseDisplayObjects(stg);\n//\t\t\t_viewCount = _childDepth;\n//\t\t}\n\n\tpublic registerView(view:View)\n\t{\n\t\tview.htmlElement.addEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.addEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.addEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.addEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.addEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.push(view);\n\t}\n\n\tpublic unregisterView(view:View)\n\t{\n\t\tview.htmlElement.removeEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.slice(this._viewLookup.indexOf(view), 1);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Private.\n\t// ---------------------------------------------------------------------\n\n\tprivate queueDispatch(event:AwayMouseEvent, sourceEvent:MouseEvent, collider:PickingCollisionVO = null)\n\t{\n\t\t// 2D properties.\n\t\tif (sourceEvent) {\n\t\t\tevent.ctrlKey = sourceEvent.ctrlKey;\n\t\t\tevent.altKey = sourceEvent.altKey;\n\t\t\tevent.shiftKey = sourceEvent.shiftKey;\n\t\t\tevent.screenX = sourceEvent.clientX;\n\t\t\tevent.screenY = sourceEvent.clientY;\n\t\t}\n\n\t\tif (collider == null)\n\t\t\tcollider = this._iCollidingObject;\n\n\t\t// 3D properties.\n\t\tif (collider) {\n\t\t\t// Object.\n\t\t\tevent.object = collider.displayObject;\n\t\t\tevent.materialOwner = collider.materialOwner;\n\t\t\t// UV.\n\t\t\tevent.uv = collider.uv;\n\t\t\t// Position.\n\t\t\tevent.localPosition = collider.localPosition? collider.localPosition.clone() : null;\n\t\t\t// Normal.\n\t\t\tevent.localNormal = collider.localNormal? collider.localNormal.clone() : null;\n\t\t\t// Face index.\n\t\t\tevent.index = collider.index;\n\t\t} else {\n\t\t\t// Set all to null.\n\t\t\tevent.uv = null;\n\t\t\tevent.object = null;\n\t\t\tevent.localPosition = this._nullVector;\n\t\t\tevent.localNormal = this._nullVector;\n\t\t\tevent.index = 0;\n\t\t\tevent.subGeometryIndex = 0;\n\t\t}\n\n\t\t// Store event to be dispatched later.\n\t\tthis._queuedEvents.push(event);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Listeners.\n\t// ---------------------------------------------------------------------\n\n\tprivate onMouseMove(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseMove, this._mouseMoveEvent = event);\n\t}\n\n\tprivate onMouseOut(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = null;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseOut, event);\n\t}\n\n\tprivate onMouseOver(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseOver, event);\n\t}\n\n\tprivate onClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseClick, event);\n\t}\n\n\tprivate onDoubleClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDoubleClick, event);\n\t}\n\n\tprivate onMouseDown(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDown, event);\n\t}\n\n\tprivate onMouseUp(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseUp , event);\n\t}\n\n\tprivate onMouseWheel(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseWheel, event);\n\t}\n\n\n\tprivate updateColliders(event:MouseEvent)\n\t{\n\t\tif (this._iUpdateDirty)\n\t\t\treturn;\n\n\t\tvar view:View;\n\t\tvar bounds:ClientRect;\n\t\tvar mouseX:number = event.clientX;\n\t\tvar mouseY:number = event.clientY;\n\t\tvar len:number = this._viewLookup.length;\n\t\tfor (var i:number = 0; i < len; i++) {\n\t\t\tview = this._viewLookup[i];\n\t\t\tbounds = view.htmlElement.getBoundingClientRect();\n\t\t\tif (mouseX < bounds.left || mouseX > bounds.right || mouseY < bounds.top || mouseY > bounds.bottom) {\n\t\t\t\tview._pMouseX = null;\n\t\t\t\tview._pMouseY = null;\n\t\t\t} else {\n\t\t\t\tview._pMouseX = mouseX + bounds.left;\n\t\t\t\tview._pMouseY = mouseY + bounds.top;\n\t\t\t\tview.updateCollider();\n\n\t\t\t\tif (view.layeredView && this._iCollidingObject)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._iUpdateDirty = true;\n\t}\n}\n\nexport = MouseManager;","import MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport ImageTexture\t\t\t\t\t= require(\"awayjs-core/lib/textures/ImageTexture\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass CSSMaterialBase extends MaterialBase\n{\n\tprivate _imageElement:HTMLImageElement;\n\tprivate _imageStyle:MSStyleCSSProperties;\n\n\n\tpublic get imageElement():HTMLImageElement\n\t{\n\t\treturn this._imageElement;\n\t}\n\n\tpublic get imageStyle():MSStyleCSSProperties\n\t{\n\t\treturn this._imageStyle;\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tif (value instanceof ImageTexture) {\n\t\t\tthis._imageElement = ( value).htmlImageElement;\n\n\t\t\tvar node:HTMLStyleElement = document.createElement(\"style\");\n\t\t\tnode.type = \"text/css\";\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(node);\n\n\t\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\t\t\tsheet.insertRule(\".material\" + this.id + \"{ }\", 0);\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[0]).style;\n\n\t\t\tstyle.backgroundImage = \"url(\" + this._imageElement.src + \")\";\n\t\t\tstyle.backgroundSize = \"100% 100%\";\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.width = this._imageElement.width + \"px\";\n\t\t\tstyle.height = this._imageElement.height + \"px\";\n\t\t\tstyle.transformOrigin\n\t\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t\tthis._pHeight = this._imageElement.height;\n\t\t\tthis._pWidth = this._imageElement.width;\n\n\t\t\tthis._pNotifySizeChanged();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor(texture:Texture2DBase = null, smooth:boolean = true, repeat:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis.texture = texture;\n\n\t\tthis.smooth = smooth;\n\t\tthis.repeat = repeat;\n\t}\n}\n\nexport = CSSMaterialBase;","/**\n * Enumeration class for defining which lighting types affect the specific material\n * lighting component (diffuse and specular). This can be useful if, for example, you\n * want to use light probes for diffuse global lighting, but want specular reflections from\n * traditional light sources without those affecting the diffuse light.\n *\n * @see away.materials.ColorMaterial.diffuseLightSources\n * @see away.materials.ColorMaterial.specularLightSources\n * @see away.materials.TextureMaterial.diffuseLightSources\n * @see away.materials.TextureMaterial.specularLightSources\n */\nclass LightSources\n{\n\t/**\n\t * Defines normal lights are to be used as the source for the lighting\n\t * component.\n\t */\n\tpublic static LIGHTS:number = 0x01;\n\n\t/**\n\t * Defines that global lighting probes are to be used as the source for the\n\t * lighting component.\n\t */\n\tpublic static PROBES:number = 0x02;\n\n\t/**\n\t * Defines that both normal and global lighting probes are to be used as the\n\t * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES.\n\t */\n\tpublic static ALL:number = 0x03;\n}\n\nexport = LightSources;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport IStage\t\t\t\t\t\t= require(\"awayjs-display/lib/base/IStage\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IMaterialData\t\t\t\t= require(\"awayjs-display/lib/pool/IMaterialData\");\nimport IMaterialPassData\t\t\t= require(\"awayjs-display/lib/pool/IMaterialPassData\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport IMaterialPass\t\t\t\t= require(\"awayjs-display/lib/materials/passes/IMaterialPass\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass MaterialBase extends NamedAssetBase implements IAsset\n{\n\tprivate _sizeChanged:MaterialEvent;\n\tprivate _materialPassData:Array = new Array();\n\tprivate _materialData:Array = new Array();\n\n\tpublic _pAlphaThreshold:number = 0;\n\tpublic _pAnimateUVs:boolean = false;\n\tprivate _enableLightFallOff:boolean = true;\n\tprivate _specularLightSources:number = 0x01;\n\tprivate _diffuseLightSources:number = 0x03;\n\n\t/**\n\t * An object to contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * A value that can be used by materials that only work with a given type of renderer. The renderer can test the\n\t * classification to choose which render path to use. For example, a deferred material could set this value so\n\t * that the deferred renderer knows not to take the forward rendering path.\n\t *\n\t * @private\n\t */\n\tpublic _iClassification:string;\n\n\n\t/**\n\t * An id for this material used to sort the renderables by shader program, which reduces Program state changes.\n\t *\n\t * @private\n\t */\n\tpublic _iMaterialId:number = 0;\n\n\tpublic _iBaseScreenPassIndex:number = 0;\n\n\tprivate _bothSides:boolean = false; // update\n\tprivate _animationSet:IAnimationSet;\n\tpublic _pScreenPassesInvalid:boolean = true;\n\n\t/**\n\t * A list of material owners, renderables or custom Entities.\n\t */\n\tprivate _owners:Array;\n\n\tprivate _alphaPremultiplied:boolean;\n\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\n\tprivate _numPasses:number = 0;\n\tprivate _passes:Array;\n\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\tprivate _repeat:boolean = false;\n\tprivate _color:number = 0xFFFFFF;\n\tpublic _pTexture:Texture2DBase;\n\n\tpublic _pLightPicker:LightPickerBase;\n\n\tpublic _pHeight:number = 1;\n\tpublic _pWidth:number = 1;\n\tpublic _pRequiresBlending:boolean = false;\n\n\tprivate _onPassChangeDelegate:(event:Event) => void;\n\tprivate _onLightChangeDelegate:(event:Event) => void;\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis._owners = new Array();\n\t\tthis._passes = new Array();\n\n\t\tthis._onPassChangeDelegate = (event:Event) => this.onPassChange(event);\n\t\tthis._onLightChangeDelegate = (event:Event) => this.onLightsChange(event);\n\n\t\tthis.alphaPremultiplied = false; //TODO: work out why this is different for WebGL\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MATERIAL;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._pHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\tpublic set lightPicker(value:LightPickerBase)\n\t{\n\t\tif (this._pLightPicker == value)\n\t\t\treturn;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.removeEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pLightPicker = value;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.addEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pInvalidateScreenPasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to\n\t * the texture's borders when the uv coordinates are outside the [0, 1] interval.\n\t */\n\tpublic get repeat():boolean\n\t{\n\t\treturn this._repeat;\n\t}\n\n\tpublic set repeat(value:boolean)\n\t{\n\t\tif (this._repeat == value)\n\t\t\treturn;\n\n\t\tthis._repeat = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The diffuse reflectivity color of the surface.\n\t */\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tif (this._color == value)\n\t\t\treturn;\n\n\t\tthis._color = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tthis._pInvalidatePasses();\n\n\t\tthis._pHeight = this._pTexture.height;\n\t\tthis._pWidth = this._pTexture.width;\n\n\t\tthis._pNotifySizeChanged();\n\t}\n\n\t/**\n\t * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\n\t */\n\tpublic get animateUVs():boolean\n\t{\n\t\treturn this._pAnimateUVs;\n\t}\n\n\tpublic set animateUVs(value:boolean)\n\t{\n\t\tif (this._pAnimateUVs == value)\n\t\t\treturn;\n\n\t\tthis._pAnimateUVs = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n\t * compatibility for constrained mode.\n\t */\n\tpublic get enableLightFallOff():boolean\n\t{\n\t\treturn this._enableLightFallOff;\n\t}\n\n\tpublic set enableLightFallOff(value:boolean)\n\t{\n\t\tif (this._enableLightFallOff == value)\n\t\t\treturn;\n\n\t\tthis._enableLightFallOff = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n\t * and/or light probes for diffuse reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get diffuseLightSources():number\n\t{\n\t\treturn this._diffuseLightSources;\n\t}\n\n\tpublic set diffuseLightSources(value:number)\n\t{\n\t\tif (this._diffuseLightSources == value)\n\t\t\treturn;\n\n\t\tthis._diffuseLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for specular reflections. This allows choosing between regular lights\n\t * and/or light probes for specular reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get specularLightSources():number\n\t{\n\t\treturn this._specularLightSources;\n\t}\n\n\tpublic set specularLightSources(value:number)\n\t{\n\t\tif (this._specularLightSources == value)\n\t\t\treturn;\n\n\t\tthis._specularLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tthis._pClearScreenPasses();\n\n\t\tlen = this._materialData.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._materialData[i].dispose();\n\n\t\tthis._materialData = new Array();\n\n\t\tlen = this._materialPassData.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._materialPassData[i].dispose();\n\n\t\tthis._materialPassData = new Array();\n\t}\n\n\t/**\n\t * Defines whether or not the material should cull triangles facing away from the camera.\n\t */\n\tpublic get bothSides():boolean\n\t{\n\t\treturn this._bothSides;\n\t}\n\n\tpublic set bothSides(value:boolean)\n\t{\n\t\tif (this._bothSides = value)\n\t\t\treturn;\n\n\t\tthis._bothSides = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether visible textures (or other pixels) used by this material have\n\t * already been premultiplied. Toggle this if you are seeing black halos around your\n\t * blended alpha edges.\n\t */\n\tpublic get alphaPremultiplied():boolean\n\t{\n\t\treturn this._alphaPremultiplied;\n\t}\n\n\tpublic set alphaPremultiplied(value:boolean)\n\t{\n\t\tif (this._alphaPremultiplied == value)\n\t\t\treturn;\n\n\t\tthis._alphaPremultiplied = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not the material requires alpha blending during rendering.\n\t */\n\tpublic get requiresBlending():boolean\n\t{\n\t\treturn this._pRequiresBlending;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._pWidth;\n\t}\n\n\t/**\n\t * Sets the render state for a pass that is independent of the rendered object. This needs to be called before\n\t * calling renderPass. Before activating a pass, the previously used pass needs to be deactivated.\n\t * @param pass The pass data to activate.\n\t * @param stage The Stage object which is currently used for rendering.\n\t * @param camera The camera from which the scene is viewed.\n\t * @private\n\t */\n\tpublic _iActivatePass(pass:IMaterialPassData, renderer:IRenderer, camera:Camera) // ARCANE\n\t{\n\t\tpass.materialPass._iActivate(pass, renderer, camera);\n\t}\n\n\t/**\n\t * Clears the render state for a pass. This needs to be called before activating another pass.\n\t * @param pass The pass to deactivate.\n\t * @param stage The Stage used for rendering\n\t *\n\t * @internal\n\t */\n\tpublic _iDeactivatePass(pass:IMaterialPassData, renderer:IRenderer) // ARCANE\n\t{\n\t\tpass.materialPass._iDeactivate(pass, renderer);\n\t}\n\n\t/**\n\t * Renders the current pass. Before calling renderPass, activatePass needs to be called with the same index.\n\t * @param pass The pass used to render the renderable.\n\t * @param renderable The IRenderable object to draw.\n\t * @param stage The Stage object used for rendering.\n\t * @param entityCollector The EntityCollector object that contains the visible scene data.\n\t * @param viewProjection The view-projection matrix used to project to the screen. This is not the same as\n\t * camera.viewProjection as it includes the scaling factors when rendering to textures.\n\t *\n\t * @internal\n\t */\n\tpublic _iRenderPass(pass:IMaterialPassData, renderable:IRenderable, stage:IStage, camera:Camera, viewProjection:Matrix3D)\n\t{\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.collectLights(renderable);\n\n\t\tpass.materialPass._iRender(pass, renderable, stage, camera, viewProjection);\n\t}\n\n\t//\n\t// MATERIAL MANAGEMENT\n\t//\n\t/**\n\t * Mark an IMaterialOwner as owner of this material.\n\t * Assures we're not using the same material across renderables with different animations, since the\n\t * Programs depend on animation. This method needs to be called when a material is assigned.\n\t *\n\t * @param owner The IMaterialOwner that had this material assigned\n\t *\n\t * @internal\n\t */\n\tpublic iAddOwner(owner:IMaterialOwner)\n\t{\n\t\tthis._owners.push(owner);\n\n\t\tvar animationSet:IAnimationSet;\n\t\tvar animator:IAnimator = owner.animator;\n\n\t\tif (animator)\n\t\t\tanimationSet = animator.animationSet;\n\n\t\tif (owner.animator) {\n\t\t\tif (this._animationSet && animationSet != this._animationSet) {\n\t\t\t\tthrow new Error(\"A Material instance cannot be shared across material owners with different animation sets\");\n\t\t\t} else {\n\t\t\t\tif (this._animationSet != animationSet) {\n\n\t\t\t\t\tthis._animationSet = animationSet;\n\n\t\t\t\t\tthis.invalidateAnimation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes an IMaterialOwner as owner.\n\t * @param owner\n\t *\n\t * @internal\n\t */\n\tpublic iRemoveOwner(owner:IMaterialOwner)\n\t{\n\t\tthis._owners.splice(this._owners.indexOf(owner), 1);\n\n\t\tif (this._owners.length == 0) {\n\t\t\tthis._animationSet = null;\n\n\t\t\tthis.invalidateAnimation();\n\t\t}\n\t}\n\n\t/**\n\t * A list of the IMaterialOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\t/**\n\t * The amount of passes used by the material.\n\t *\n\t * @private\n\t */\n\tpublic _iNumScreenPasses():number\n\t{\n\t\treturn this._numPasses;\n\t}\n\n\t/**\n\t * A list of the screen passes used in this material\n\t *\n\t * @private\n\t */\n\tpublic get _iScreenPasses():Array\n\t{\n\t\treturn this._passes;\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pInvalidatePasses()\n\t{\n\t\tvar len:number = this._materialPassData.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._materialPassData[i].invalidate();\n\n\t\tthis.invalidateMaterial();\n\t}\n\n\t/**\n\t * Flags that the screen passes have become invalid and need possible re-ordering / adding / deleting\n\t */\n\tpublic _pInvalidateScreenPasses()\n\t{\n\t\tthis._pScreenPassesInvalid = true;\n\t}\n\n\t/**\n\t * Removes a pass from the material.\n\t * @param pass The pass to be removed.\n\t */\n\tpublic _pRemoveScreenPass(pass:IMaterialPass)\n\t{\n\t\tpass.removeEventListener(Event.CHANGE, this._onPassChangeDelegate);\n\t\tthis._passes.splice(this._passes.indexOf(pass), 1);\n\n\t\tthis._numPasses--;\n\t}\n\n\t/**\n\t * Removes all passes from the material\n\t */\n\tpublic _pClearScreenPasses()\n\t{\n\t\tfor (var i:number = 0; i < this._numPasses; ++i)\n\t\t\tthis._passes[i].removeEventListener(Event.CHANGE, this._onPassChangeDelegate);\n\n\t\tthis._passes.length = this._numPasses = 0;\n\t}\n\n\t/**\n\t * Adds a pass to the material\n\t * @param pass\n\t */\n\tpublic _pAddScreenPass(pass:IMaterialPass)\n\t{\n\t\tthis._passes[this._numPasses++] = pass;\n\n\t\tpass.lightPicker = this._pLightPicker;\n\t\tpass.addEventListener(Event.CHANGE, this._onPassChangeDelegate);\n\n\t\tthis.invalidateMaterial();\n\t}\n\n\tpublic _iAddMaterialData(materialData:IMaterialData):IMaterialData\n\t{\n\t\tthis._materialData.push(materialData);\n\n\t\treturn materialData;\n\t}\n\n\tpublic _iRemoveMaterialData(materialData:IMaterialData):IMaterialData\n\t{\n\t\tthis._materialData.splice(this._materialData.indexOf(materialData), 1);\n\n\t\treturn materialData;\n\t}\n\n\t/**\n\t * Performs any processing that needs to occur before any of its passes are used.\n\t *\n\t * @private\n\t */\n\tpublic _iUpdateMaterial()\n\t{\n\t}\n\t\n\t/**\n\t * Listener for when a pass's shader code changes. It recalculates the render order id.\n\t */\n\tprivate onPassChange(event:Event)\n\t{\n\t\tthis.invalidateMaterial();\n\t}\n\n\tprivate invalidateAnimation()\n\t{\n\t\tvar len:number = this._materialData.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._materialData[i].invalidateAnimation();\n\t}\n\t\n\tprivate invalidateMaterial()\n\t{\n\t\tvar len:number = this._materialData.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._materialData[i].invalidateMaterial();\n\t}\n\n\t/**\n\t * Called when the light picker's configuration changed.\n\t */\n\tprivate onLightsChange(event:Event)\n\t{\n\t\tthis._pInvalidateScreenPasses();\n\t}\n\n\tpublic _pNotifySizeChanged()\n\t{\n\t\tif (!this._sizeChanged)\n\t\t\tthis._sizeChanged = new MaterialEvent(MaterialEvent.SIZE_CHANGED);\n\n\t\tthis.dispatchEvent(this._sizeChanged);\n\t}\n\n\tpublic _iAddMaterialPassData(materialPassData:IMaterialPassData):IMaterialPassData\n\t{\n\t\tthis._materialPassData.push(materialPassData);\n\n\t\treturn materialPassData;\n\t}\n\n\tpublic _iRemoveMaterialPassData(materialPassData:IMaterialPassData):IMaterialPassData\n\t{\n\t\tthis._materialPassData.splice(this._materialPassData.indexOf(materialPassData), 1);\n\n\t\treturn materialPassData;\n\t}\n}\n\nexport = MaterialBase;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\n\n/**\n * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for\n * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be\n * extended to provide more application-specific dynamic selection of lights.\n *\n * @see StaticLightPicker\n */\nclass LightPickerBase extends NamedAssetBase implements IAsset\n{\n\tpublic _pNumPointLights:number = 0;\n\tpublic _pNumDirectionalLights:number = 0;\n\tpublic _pNumCastingPointLights:number = 0;\n\tpublic _pNumCastingDirectionalLights:number = 0;\n\tpublic _pNumLightProbes:number = 0;\n\n\tpublic _pAllPickedLights:Array;\n\tpublic _pPointLights:Array;\n\tpublic _pCastingPointLights:Array;\n\tpublic _pDirectionalLights:Array;\n\tpublic _pCastingDirectionalLights:Array;\n\tpublic _pLightProbes:Array;\n\tpublic _pLightProbeWeights:Array;\n\n\t/**\n\t * Creates a new LightPickerBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Disposes resources used by the light picker.\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT_PICKER;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that will be provided.\n\t */\n\tpublic get numDirectionalLights():number\n\t{\n\t\treturn this._pNumDirectionalLights;\n\t}\n\n\t/**\n\t * The maximum amount of point lights that will be provided.\n\t */\n\tpublic get numPointLights():number\n\t{\n\t\treturn this._pNumPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that cast shadows.\n\t */\n\tpublic get numCastingDirectionalLights():number\n\t{\n\t\treturn this._pNumCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The amount of point lights that cast shadows.\n\t */\n\tpublic get numCastingPointLights():number\n\t{\n\t\treturn this._pNumCastingPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of light probes that will be provided.\n\t */\n\tpublic get numLightProbes():number\n\t{\n\t\treturn this._pNumLightProbes;\n\t}\n\n\t/**\n\t * The collected point lights to be used for shading.\n\t */\n\tpublic get pointLights():Array\n\t{\n\t\treturn this._pPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights to be used for shading.\n\t */\n\tpublic get directionalLights():Array\n\t{\n\t\treturn this._pDirectionalLights;\n\t}\n\n\t/**\n\t * The collected point lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingPointLights():Array\n\t{\n\t\treturn this._pCastingPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingDirectionalLights():Array\n\t{\n\t\treturn this._pCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The collected light probes to be used for shading.\n\t */\n\tpublic get lightProbes():Array\n\t{\n\t\treturn this._pLightProbes;\n\t}\n\n\t/**\n\t * The weights for each light probe, defining their influence on the object.\n\t */\n\tpublic get lightProbeWeights():Array\n\t{\n\t\treturn this._pLightProbeWeights;\n\t}\n\n\t/**\n\t * A collection of all the collected lights.\n\t */\n\tpublic get allPickedLights():Array\n\t{\n\t\treturn this._pAllPickedLights;\n\t}\n\n\t/**\n\t * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code.\n\t */\n\tpublic collectLights(renderable:IRenderable)\n\t{\n\t\tthis.updateProbeWeights(renderable);\n\t}\n\n\t/**\n\t * Updates the weights for the light probes, based on the renderable's position relative to them.\n\t * @param renderable The renderble for which to calculate the light probes' influence.\n\t */\n\tprivate updateProbeWeights(renderable:IRenderable)\n\t{\n\t\t// todo: this will cause the same calculations to occur per TriangleSubMesh. See if this can be improved.\n\t\tvar objectPos:Vector3D = renderable.sourceEntity.scenePosition;\n\t\tvar lightPos:Vector3D;\n\n\t\tvar rx:number = objectPos.x, ry:number = objectPos.y, rz:number = objectPos.z;\n\t\tvar dx:number, dy:number, dz:number;\n\t\tvar w:number, total:number = 0;\n\t\tvar i:number;\n\n\t\t// calculates weights for probes\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i) {\n\n\t\t\tlightPos = this._pLightProbes[i].scenePosition;\n\t\t\tdx = rx - lightPos.x;\n\t\t\tdy = ry - lightPos.y;\n\t\t\tdz = rz - lightPos.z;\n\t\t\t// weight is inversely proportional to square of distance\n\t\t\tw = dx*dx + dy*dy + dz*dz;\n\n\t\t\t// just... huge if at the same spot\n\t\t\tw = w > .00001? 1/w : 50000000;\n\t\t\tthis._pLightProbeWeights[i] = w;\n\t\t\ttotal += w;\n\t\t}\n\n\t\t// normalize\n\t\ttotal = 1/total;\n\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i)\n\t\t\tthis._pLightProbeWeights[i] *= total;\n\t}\n}\n\nexport = LightPickerBase;","import Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport LightEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\n\n/**\n * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but\n * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may\n * occur.\n */\nclass StaticLightPicker extends LightPickerBase\n{\n\tprivate _lights:Array;\n\tprivate _onCastShadowChangeDelegate:Function;\n\n\t/**\n\t * Creates a new StaticLightPicker object.\n\t * @param lights The lights to be used for shading.\n\t */\n\tconstructor(lights)\n\t{\n\t\tsuper();\n\n\t\tthis._onCastShadowChangeDelegate = (event:LightEvent) => this.onCastShadowChange(event);\n\n\t\tthis.lights = lights;\n\t}\n\n\t/**\n\t * The lights used for shading.\n\t */\n\tpublic get lights()\n\t{\n\t\treturn this._lights;\n\t}\n\n\tpublic set lights(value:Array)\n\t{\n\t\tvar numPointLights:number = 0;\n\t\tvar numDirectionalLights:number = 0;\n\t\tvar numCastingPointLights:number = 0;\n\t\tvar numCastingDirectionalLights:number = 0;\n\t\tvar numLightProbes:number = 0;\n\t\tvar light:LightBase;\n\n\t\tif (this._lights)\n\t\t\tthis.clearListeners();\n\n\t\tthis._lights = value;\n\t\tthis._pAllPickedLights = value;\n\t\tthis._pPointLights = new Array();\n\t\tthis._pCastingPointLights = new Array();\n\t\tthis._pDirectionalLights = new Array();\n\t\tthis._pCastingDirectionalLights = new Array();\n\t\tthis._pLightProbes = new Array();\n\n\t\tvar len:number = value.length;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tlight = value[i];\n\t\t\tlight.addEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\n\t\t\tif (light instanceof PointLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingPointLights[numCastingPointLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pPointLights[numPointLights++] = light;\n\n\t\t\t} else if (light instanceof DirectionalLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingDirectionalLights[numCastingDirectionalLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pDirectionalLights[numDirectionalLights++] = light;\n\n\t\t\t} else if (light instanceof LightProbe) {\n\t\t\t\tthis._pLightProbes[numLightProbes++] = light;\n\t\t\t}\n\t\t}\n\n\t\tif (this._pNumDirectionalLights == numDirectionalLights && this._pNumPointLights == numPointLights && this._pNumLightProbes == numLightProbes && this._pNumCastingPointLights == numCastingPointLights && this._pNumCastingDirectionalLights == numCastingDirectionalLights)\n\t\t\treturn;\n\n\t\tthis._pNumDirectionalLights = numDirectionalLights;\n\t\tthis._pNumCastingDirectionalLights = numCastingDirectionalLights;\n\t\tthis._pNumPointLights = numPointLights;\n\t\tthis._pNumCastingPointLights = numCastingPointLights;\n\t\tthis._pNumLightProbes = numLightProbes;\n\n\t\t// MUST HAVE MULTIPLE OF 4 ELEMENTS!\n\t\tthis._pLightProbeWeights = new Array(Math.ceil(numLightProbes/4)*4);\n\n\t\t// notify material lights have changed\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\n\t}\n\n\t/**\n\t * Remove configuration change listeners on the lights.\n\t */\n\tprivate clearListeners()\n\t{\n\t\tvar len:number = this._lights.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._lights[i].removeEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\t}\n\n\t/**\n\t * Notifies the material of a configuration change.\n\t */\n\tprivate onCastShadowChange(event:LightEvent)\n\t{\n\t\t// TODO: Assign to special caster collections, just append it to the lights in SinglePass\n\t\t// But keep seperated in multipass\n\n\t\tvar light:LightBase = event.target;\n\n\t\tif (light instanceof PointLight)\n\t\t\tthis.updatePointCasting( light);\n\t\telse if (light instanceof DirectionalLight)\n\t\t\tthis.updateDirectionalCasting( light);\n\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\t/**\n\t * Called when a directional light's shadow casting configuration changes.\n\t */\n\tprivate updateDirectionalCasting(light:DirectionalLight)\n\t{\n\t\tvar dl:DirectionalLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumDirectionalLights;\n\t\t\t++this._pNumCastingDirectionalLights;\n\n\n\t\t\tthis._pDirectionalLights.splice(this._pDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pCastingDirectionalLights.push(light);\n\n\t\t} else {\n\t\t\t++this._pNumDirectionalLights;\n\t\t\t--this._pNumCastingDirectionalLights;\n\n\t\t\tthis._pCastingDirectionalLights.splice(this._pCastingDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pDirectionalLights.push(light);\n\t\t}\n\t}\n\n\t/**\n\t * Called when a point light's shadow casting configuration changes.\n\t */\n\tprivate updatePointCasting(light:PointLight)\n\t{\n\t\tvar pl:PointLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumPointLights;\n\t\t\t++this._pNumCastingPointLights;\n\t\t\tthis._pPointLights.splice(this._pPointLights.indexOf(pl), 1);\n\t\t\tthis._pCastingPointLights.push(light);\n\t\t} else {\n\t\t\t++this._pNumPointLights;\n\t\t\t--this._pNumCastingPointLights;\n\n\t\t\tthis._pCastingPointLights.splice(this._pCastingPointLights.indexOf(pl), 1);\n\t\t\tthis._pPointLights.push(light);\n\t\t}\n\t}\n}\n\nexport = StaticLightPicker;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IEventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/IEventDispatcher\");\nimport FreeMatrixProjection\t\t\t= require(\"awayjs-core/lib/projections/FreeMatrixProjection\");\nimport IProjection\t\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass CascadeShadowMapper extends DirectionalShadowMapper implements IEventDispatcher\n{\n\tpublic _pScissorRects:Rectangle[];\n\tprivate _pScissorRectsInvalid:boolean = true;\n\tprivate _splitRatios:number[];\n\n\tprivate _numCascades:number /*int*/;\n\tprivate _depthCameras:Array;\n\tprivate _depthLenses:Array;\n\n\tprivate _texOffsetsX:Array;\n\tprivate _texOffsetsY:Array;\n\n\tprivate _changeDispatcher:EventDispatcher;\n\tprivate _nearPlaneDistances:number[];\n\n\tconstructor(numCascades:number /*uint*/ = 3)\n\t{\n\t\tsuper();\n\n\t\tif (numCascades < 1 || numCascades > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = numCascades;\n\t\tthis._changeDispatcher = new EventDispatcher(this);\n\t\tthis.init();\n\t}\n\n\tpublic getSplitRatio(index:number /*uint*/):number\n\t{\n\t\treturn this._splitRatios[index];\n\t}\n\n\tpublic setSplitRatio(index:number /*uint*/, value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (index >= this._numCascades)\n\t\t\tthrow new Error(\"index must be smaller than the number of cascades!\");\n\n\t\tthis._splitRatios[index] = value;\n\t}\n\n\tpublic getDepthProjections(partition:number /*uint*/):Matrix3D\n\t{\n\t\treturn this._depthCameras[partition].viewProjection;\n\t}\n\n\tprivate init()\n\t{\n\t\tthis._splitRatios = new Array(this._numCascades);\n\t\tthis._nearPlaneDistances = new Array(this._numCascades);\n\n\t\tvar s:number = 1;\n\t\tfor (var i:number /*int*/ = this._numCascades - 1; i >= 0; --i) {\n\t\t\tthis._splitRatios[i] = s;\n\t\t\ts *= .4;\n\t\t}\n\n\t\tthis._texOffsetsX = Array(-1, 1, -1, 1);\n\t\tthis._texOffsetsY = Array(1, 1, -1, -1);\n\t\tthis._pScissorRects = new Array(4);\n\t\tthis._depthLenses = new Array();\n\t\tthis._depthCameras = new Array();\n\n\t\tfor (i = 0; i < this._numCascades; ++i) {\n\t\t\tthis._depthLenses[i] = new FreeMatrixProjection();\n\t\t\tthis._depthCameras[i] = new Camera(this._depthLenses[i]);\n\t\t}\n\t}\n\n\tpublic _pSetDepthMapSize(value:number /*uint*/)\n\t{\n\t\tsuper._pSetDepthMapSize(value);\n\n\t\tthis.invalidateScissorRects();\n\t}\n\n\tprivate invalidateScissorRects()\n\t{\n\t\tthis._pScissorRectsInvalid = true;\n\t}\n\n\tpublic get numCascades():number /*int*/\n\t{\n\t\treturn this._numCascades;\n\t}\n\n\tpublic set numCascades(value:number /*int*/)\n\t{\n\t\tif (value == this._numCascades)\n\t\t\treturn;\n\n\t\tif (value < 1 || value > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = value;\n\t\tthis.invalidateScissorRects();\n\t\tthis.init();\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\tpublic pDrawDepthMap(target:RenderTexture, scene:Scene, renderer:IRenderer)\n\t{\n\t\tif (this._pScissorRectsInvalid)\n\t\t\tthis.updateScissorRects();\n\n\t\tthis._pCasterCollector.cullPlanes = this._pCullPlanes;\n\t\tthis._pCasterCollector.camera = this._pOverallDepthCamera;\n\t\tthis._pCasterCollector.clear();\n\t\tscene.traversePartitions(this._pCasterCollector);\n\n\t\trenderer._iRenderCascades(this._pCasterCollector, target, this._numCascades, this._pScissorRects, this._depthCameras);\n\t}\n\n\tprivate updateScissorRects()\n\t{\n\t\tvar half:number = this._pDepthMapSize*.5;\n\n\t\tthis._pScissorRects[0] = new Rectangle(0, 0, half, half);\n\t\tthis._pScissorRects[1] = new Rectangle(half, 0, half, half);\n\t\tthis._pScissorRects[2] = new Rectangle(0, half, half, half);\n\t\tthis._pScissorRects[3] = new Rectangle(half, half, half, half);\n\n\t\tthis._pScissorRectsInvalid = false;\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar matrix:Matrix3D;\n\t\tvar projection:IProjection = viewCamera.projection;\n\t\tvar projectionNear:number = projection.near;\n\t\tvar projectionRange:number = projection.far - projectionNear;\n\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, viewCamera.projection.frustumCorners, this._pMatrix);\n\t\tthis._pMatrix.appendScale(.96, .96, 1);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t\tthis.pUpdateCullPlanes(viewCamera);\n\n\t\tfor (var i:number /*int*/ = 0; i < this._numCascades; ++i) {\n\t\t\tmatrix = this._depthLenses[i].matrix;\n\n\t\t\tthis._nearPlaneDistances[i] = projectionNear + this._splitRatios[i]*projectionRange;\n\t\t\tthis._depthCameras[i].transform = this._pOverallDepthCamera.transform;\n\n\t\t\tthis.updateProjectionPartition(matrix, this._splitRatios[i], this._texOffsetsX[i], this._texOffsetsY[i]);\n\n\t\t\tthis._depthLenses[i].matrix = matrix;\n\t\t}\n\t}\n\n\tprivate updateProjectionPartition(matrix:Matrix3D, splitRatio:number, texOffsetX:number, texOffsetY:number)\n\t{\n\t\tvar raw:Array = Matrix3DUtils.RAW_DATA_CONTAINER;\n\t\tvar xN:number, yN:number, zN:number;\n\t\tvar xF:number, yF:number, zF:number;\n\t\tvar minX:number = Number.POSITIVE_INFINITY, minY:number = Number.POSITIVE_INFINITY, minZ:number;\n\t\tvar maxX:number = Number.NEGATIVE_INFINITY, maxY:number = Number.NEGATIVE_INFINITY, maxZ:number = Number.NEGATIVE_INFINITY;\n\t\tvar i:number /*uint*/ = 0;\n\n\t\twhile (i < 12) {\n\t\t\txN = this._pLocalFrustum[i];\n\t\t\tyN = this._pLocalFrustum[i + 1];\n\t\t\tzN = this._pLocalFrustum[i + 2];\n\t\t\txF = xN + (this._pLocalFrustum[i + 12] - xN)*splitRatio;\n\t\t\tyF = yN + (this._pLocalFrustum[i + 13] - yN)*splitRatio;\n\t\t\tzF = zN + (this._pLocalFrustum[i + 14] - zN)*splitRatio;\n\t\t\tif (xN < minX)\n\t\t\t\tminX = xN;\n\t\t\tif (xN > maxX)\n\t\t\t\tmaxX = xN;\n\t\t\tif (yN < minY)\n\t\t\t\tminY = yN;\n\t\t\tif (yN > maxY)\n\t\t\t\tmaxY = yN;\n\t\t\tif (zN > maxZ)\n\t\t\t\tmaxZ = zN;\n\t\t\tif (xF < minX)\n\t\t\t\tminX = xF;\n\t\t\tif (xF > maxX)\n\t\t\t\tmaxX = xF;\n\t\t\tif (yF < minY)\n\t\t\t\tminY = yF;\n\t\t\tif (yF > maxY)\n\t\t\t\tmaxY = yF;\n\t\t\tif (zF > maxZ)\n\t\t\t\tmaxZ = zF;\n\t\t\ti += 3;\n\t\t}\n\n\t\tminZ = 1;\n\n\t\tvar w:number = (maxX - minX);\n\t\tvar h:number = (maxY - minY);\n\t\tvar d:number = 1/(maxZ - minZ);\n\n\t\tif (minX < 0)\n\t\t\tminX -= this._pSnap; // because int() rounds up for < 0\n\t\tif (minY < 0)\n\t\t\tminY -= this._pSnap;\n\t\tminX = Math.floor(minX/this._pSnap)*this._pSnap;\n\t\tminY = Math.floor(minY/this._pSnap)*this._pSnap;\n\n\t\tvar snap2:number = 2*this._pSnap;\n\t\tw = Math.floor(w/snap2 + 1)*snap2;\n\t\th = Math.floor(h/snap2 + 1)*snap2;\n\n\t\tmaxX = minX + w;\n\t\tmaxY = minY + h;\n\n\t\tw = 1/w;\n\t\th = 1/h;\n\n\t\traw[0] = 2*w;\n\t\traw[5] = 2*h;\n\t\traw[10] = d;\n\t\traw[12] = -(maxX + minX)*w;\n\t\traw[13] = -(maxY + minY)*h;\n\t\traw[14] = -minZ*d;\n\t\traw[15] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\n\t\tmatrix.copyRawDataFrom(raw);\n\t\tmatrix.appendScale(.96, .96, 1);\n\t\tmatrix.appendTranslation(texOffsetX, texOffsetY, 0);\n\t\tmatrix.appendScale(.5, .5, 1);\n\t}\n\n\tpublic addEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.addEventListener(type, listener);\n\t}\n\n\tpublic removeEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.removeEventListener(type, listener);\n\t}\n\n\tpublic dispatchEvent(event:Event)\n\t{\n\t\treturn this._changeDispatcher.dispatchEvent(event);\n\t}\n\n\tpublic hasEventListener(type:string):boolean\n\t{\n\t\treturn this._changeDispatcher.hasEventListener(type);\n\t}\n\n\tget _iNearPlaneDistances():Array\n\t{\n\t\treturn this._nearPlaneDistances;\n\t}\n}\n\nexport = CascadeShadowMapper;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PartialImplementationError\t= require(\"awayjs-core/lib/errors/PartialImplementationError\");\nimport PerspectiveProjection\t\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport ShadowMapperBase\t\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass CubeMapShadowMapper extends ShadowMapperBase\n{\n\tprivate _depthCameras:Array;\n\tprivate _projections:Array;\n\tprivate _needsRender:Array;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pDepthMapSize = 512;\n\t\tthis._needsRender = new Array();\n\t\tthis.initCameras();\n\t}\n\n\tprivate initCameras()\n\t{\n\t\tthis._depthCameras = new Array();\n\t\tthis._projections = new Array();\n\n\t\t// posX, negX, posY, negY, posZ, negZ\n\t\tthis.addCamera(0, 90, 0);\n\t\tthis.addCamera(0, -90, 0);\n\t\tthis.addCamera(-90, 0, 0);\n\t\tthis.addCamera(90, 0, 0);\n\t\tthis.addCamera(0, 0, 0);\n\t\tthis.addCamera(0, 180, 0);\n\t}\n\n\tprivate addCamera(rotationX:number, rotationY:number, rotationZ:number)\n\t{\n\t\tvar cam:Camera = new Camera();\n\t\tcam.rotationX = rotationX;\n\t\tcam.rotationY = rotationY;\n\t\tcam.rotationZ = rotationZ;\n\t\tcam.projection.near = .01;\n\n\t\tvar projection:PerspectiveProjection = cam.projection;\n\t\tprojection.fieldOfView = 90;\n\t\tthis._projections.push(projection);\n\t\tcam.projection._iAspectRatio = 1;\n\t\tthis._depthCameras.push(cam);\n\t}\n\n\t//@override\n\tpublic pCreateDepthTexture():TextureProxyBase\n\t{\n\t\tthrow new PartialImplementationError();\n\t\t/*\n\t\t return new RenderCubeTexture( this._depthMapSize );\n\t\t */\n\t}\n\n\t//@override\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar light:PointLight = (this._pLight);\n\t\tvar maxDistance:number = light._pFallOff;\n\t\tvar pos:Vector3D = this._pLight.scenePosition;\n\n\t\t// todo: faces outside frustum which are pointing away from camera need not be rendered!\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tthis._projections[i].far = maxDistance;\n\t\t\tthis._depthCameras[i].transform.position = pos;\n\t\t\tthis._needsRender[i] = true;\n\t\t}\n\t}\n\n\t//@override\n\tpublic pDrawDepthMap(target:RenderTexture, scene:Scene, renderer:IRenderer)\n\t{\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tif (this._needsRender[i]) {\n\t\t\t\tthis._pCasterCollector.camera = this._depthCameras[i];\n\t\t\t\tthis._pCasterCollector.clear();\n\t\t\t\tscene.traversePartitions(this._pCasterCollector);\n\t\t\t\trenderer._iRender(this._pCasterCollector, target, null, i)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport = CubeMapShadowMapper;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport FreeMatrixProjection\t\t\t= require(\"awayjs-core/lib/projections/FreeMatrixProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport ShadowMapperBase\t\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass DirectionalShadowMapper extends ShadowMapperBase\n{\n\tpublic _pOverallDepthCamera:Camera;\n\tpublic _pLocalFrustum:Array;\n\n\tpublic _pLightOffset:number = 10000;\n\tpublic _pMatrix:Matrix3D;\n\tpublic _pOverallDepthProjection:FreeMatrixProjection;\n\tpublic _pSnap:number = 64;\n\n\tpublic _pCullPlanes:Array;\n\tpublic _pMinZ:number;\n\tpublic _pMaxZ:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pCullPlanes = [];\n\t\tthis._pOverallDepthProjection = new FreeMatrixProjection();\n\t\tthis._pOverallDepthCamera = new Camera(this._pOverallDepthProjection);\n\t\tthis._pLocalFrustum = [];\n\t\tthis._pMatrix = new Matrix3D();\n\t}\n\n\tpublic get snap():number\n\t{\n\t\treturn this._pSnap;\n\t}\n\n\tpublic set snap(value:number)\n\t{\n\t\tthis._pSnap = value;\n\t}\n\n\tpublic get lightOffset():number\n\t{\n\t\treturn this._pLightOffset;\n\t}\n\n\tpublic set lightOffset(value:number)\n\t{\n\t\tthis._pLightOffset = value;\n\t}\n\n\t//@arcane\n\tpublic get iDepthProjection():Matrix3D\n\t{\n\t\treturn this._pOverallDepthCamera.viewProjection;\n\t}\n\n\t//@arcane\n\tpublic get depth():number\n\t{\n\t\treturn this._pMaxZ - this._pMinZ;\n\t}\n\n\t//@override\n\tpublic pDrawDepthMap(target:TextureProxyBase, scene:Scene, renderer:IRenderer)\n\t{\n\t\tthis._pCasterCollector.camera = this._pOverallDepthCamera;\n\t\tthis._pCasterCollector.cullPlanes = this._pCullPlanes;\n\t\tthis._pCasterCollector.clear();\n\t\tscene.traversePartitions(this._pCasterCollector);\n\t\trenderer._iRender(this._pCasterCollector, target);\n\t}\n\n\t//@protected\n\tpublic pUpdateCullPlanes(viewCamera:Camera)\n\t{\n\t\tvar lightFrustumPlanes:Array = this._pOverallDepthCamera.frustumPlanes;\n\t\tvar viewFrustumPlanes:Array = viewCamera.frustumPlanes;\n\t\tthis._pCullPlanes.length = 4;\n\n\t\tthis._pCullPlanes[0] = lightFrustumPlanes[0];\n\t\tthis._pCullPlanes[1] = lightFrustumPlanes[1];\n\t\tthis._pCullPlanes[2] = lightFrustumPlanes[2];\n\t\tthis._pCullPlanes[3] = lightFrustumPlanes[3];\n\n\t\tvar light:DirectionalLight = this._pLight;\n\t\tvar dir:Vector3D = light.sceneDirection;\n\t\tvar dirX:number = dir.x;\n\t\tvar dirY:number = dir.y;\n\t\tvar dirZ:number = dir.z;\n\t\tvar j:number = 4;\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tvar plane:Plane3D = viewFrustumPlanes[i];\n\t\t\tif (plane.a*dirX + plane.b*dirY + plane.c*dirZ < 0)\n\t\t\t\tthis._pCullPlanes[j++] = plane;\n\t\t}\n\t}\n\n\t//@override\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, viewCamera.projection.frustumCorners, this._pMatrix);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t\tthis.pUpdateCullPlanes(viewCamera);\n\t}\n\n\tpublic pUpdateProjectionFromFrustumCorners(viewCamera:Camera, corners:Array, matrix:Matrix3D)\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar dir:Vector3D;\n\t\tvar x:number, y:number, z:number;\n\t\tvar minX:number, minY:number;\n\t\tvar maxX:number, maxY:number;\n\t\tvar i:number;\n\n\t\tvar light:DirectionalLight = this._pLight;\n\t\tdir = light.sceneDirection;\n\t\tthis._pOverallDepthCamera.transform.matrix3D = this._pLight.sceneTransform;\n\t\tx = Math.floor((viewCamera.x - dir.x*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\ty = Math.floor((viewCamera.y - dir.y*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\tz = Math.floor((viewCamera.z - dir.z*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\tthis._pOverallDepthCamera.x = x;\n\t\tthis._pOverallDepthCamera.y = y;\n\t\tthis._pOverallDepthCamera.z = z;\n\n\t\tthis._pMatrix.copyFrom(this._pOverallDepthCamera.inverseSceneTransform);\n\t\tthis._pMatrix.prepend(viewCamera.sceneTransform);\n\t\tthis._pMatrix.transformVectors(corners, this._pLocalFrustum);\n\n\t\tminX = maxX = this._pLocalFrustum[0];\n\t\tminY = maxY = this._pLocalFrustum[1];\n\t\tthis._pMaxZ = this._pLocalFrustum[2];\n\n\t\ti = 3;\n\t\twhile (i < 24) {\n\t\t\tx = this._pLocalFrustum[i];\n\t\t\ty = this._pLocalFrustum[i + 1];\n\t\t\tz = this._pLocalFrustum[i + 2];\n\t\t\tif (x < minX)\n\t\t\t\tminX = x;\n\t\t\tif (x > maxX)\n\t\t\t\tmaxX = x;\n\t\t\tif (y < minY)\n\t\t\t\tminY = y;\n\t\t\tif (y > maxY)\n\t\t\t\tmaxY = y;\n\t\t\tif (z > this._pMaxZ)\n\t\t\t\tthis._pMaxZ = z;\n\t\t\ti += 3;\n\t\t}\n\n\t\tthis._pMinZ = 1;\n\n\t\tvar w:number = maxX - minX;\n\t\tvar h:number = maxY - minY;\n\t\tvar d:number = 1/(this._pMaxZ - this._pMinZ);\n\n\t\tif (minX < 0)\n\t\t\tminX -= this._pSnap; // because int() rounds up for < 0\n\n\t\tif (minY < 0)\n\t\t\tminY -= this._pSnap;\n\n\t\tminX = Math.floor(minX/this._pSnap)*this._pSnap;\n\t\tminY = Math.floor(minY/this._pSnap)*this._pSnap;\n\n\t\tvar snap2:number = 2*this._pSnap;\n\t\tw = Math.floor(w/snap2 + 2)*snap2;\n\t\th = Math.floor(h/snap2 + 2)*snap2;\n\n\t\tmaxX = minX + w;\n\t\tmaxY = minY + h;\n\n\t\tw = 1/w;\n\t\th = 1/h;\n\n\t\traw[0] = 2*w;\n\t\traw[5] = 2*h;\n\t\traw[10] = d;\n\t\traw[12] = -(maxX + minX)*w;\n\t\traw[13] = -(maxY + minY)*h;\n\t\traw[14] = -this._pMinZ*d;\n\t\traw[15] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\n\t\tmatrix.copyRawDataFrom(raw);\n\t}\n}\n\nexport = DirectionalShadowMapper;","import Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass NearDirectionalShadowMapper extends DirectionalShadowMapper\n{\n\tprivate _coverageRatio:number;\n\n\tconstructor(coverageRatio:number = .5)\n\t{\n\t\tsuper();\n\n\t\tthis.coverageRatio = coverageRatio;\n\t}\n\n\t/**\n\t * A value between 0 and 1 to indicate the ratio of the view frustum that needs to be covered by the shadow map.\n\t */\n\tpublic get coverageRatio():number\n\t{\n\t\treturn this._coverageRatio;\n\t}\n\n\tpublic set coverageRatio(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1; else if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._coverageRatio = value;\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar corners:Array = viewCamera.projection.frustumCorners;\n\n\t\tfor (var i:number /*int*/ = 0; i < 12; ++i) {\n\t\t\tvar v:number = corners[i];\n\t\t\tthis._pLocalFrustum[i] = v;\n\t\t\tthis._pLocalFrustum[i + 12] = v + (corners[i + 12] - v)*this._coverageRatio;\n\t\t}\n\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, this._pLocalFrustum, this._pMatrix);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t}\n}\n\nexport = NearDirectionalShadowMapper;","import AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ShadowCasterCollector\t\t= require(\"awayjs-display/lib/traverse/ShadowCasterCollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass ShadowMapperBase\n{\n\n\tpublic _pCasterCollector:ShadowCasterCollector;\n\n\tprivate _depthMap:TextureProxyBase;\n\tpublic _pDepthMapSize:number = 2048;\n\tpublic _pLight:LightBase;\n\tprivate _explicitDepthMap:boolean;\n\tprivate _autoUpdateShadows:boolean = true;\n\tpublic _iShadowsInvalid:boolean;\n\n\tconstructor()\n\t{\n\t\tthis._pCasterCollector = this.pCreateCasterCollector();\n\t}\n\n\tpublic pCreateCasterCollector()\n\t{\n\t\treturn new ShadowCasterCollector();\n\t}\n\n\tpublic get autoUpdateShadows():boolean\n\t{\n\t\treturn this._autoUpdateShadows;\n\t}\n\n\tpublic set autoUpdateShadows(value:boolean)\n\t{\n\t\tthis._autoUpdateShadows = value;\n\t}\n\n\tpublic updateShadows()\n\t{\n\t\tthis._iShadowsInvalid = true;\n\t}\n\n\tpublic iSetDepthMap(depthMap:TextureProxyBase)\n\t{\n\t\tif (this._depthMap == depthMap)\n\t\t\treturn;\n\n\t\tif (this._depthMap && !this._explicitDepthMap)\n\t\t\tthis._depthMap.dispose();\n\n\t\tthis._depthMap = depthMap;\n\n\t\tif (this._depthMap) {\n\t\t\tthis._explicitDepthMap = true;\n\t\t\tthis._pDepthMapSize = this._depthMap.size;\n\t\t} else {\n\t\t\tthis._explicitDepthMap = false;\n\t\t}\n\t}\n\n\tpublic get light():LightBase\n\t{\n\t\treturn this._pLight;\n\t}\n\n\tpublic set light(value:LightBase)\n\t{\n\t\tthis._pLight = value;\n\t}\n\n\tpublic get depthMap():TextureProxyBase\n\t{\n\t\tif (!this._depthMap)\n\t\t\tthis._depthMap = this.pCreateDepthTexture();\n\n\t\treturn this._depthMap;\n\t}\n\n\tpublic get depthMapSize():number\n\t{\n\t\treturn this._pDepthMapSize;\n\t}\n\n\tpublic set depthMapSize(value:number)\n\t{\n\t\tif (value == this._pDepthMapSize)\n\t\t\treturn;\n\n\t\tthis._pSetDepthMapSize(value);\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._pCasterCollector = null;\n\n\t\tif (this._depthMap && !this._explicitDepthMap)\n\t\t\tthis._depthMap.dispose();\n\n\t\tthis._depthMap = null;\n\t}\n\n\tpublic pCreateDepthTexture():TextureProxyBase\n\t{\n\t\treturn new RenderTexture(this._pDepthMapSize, this._pDepthMapSize);\n\t}\n\n\tpublic iRenderDepthMap(entityCollector:EntityCollector, renderer:IRenderer)\n\t{\n\t\tthis._iShadowsInvalid = false;\n\n\t\tthis.pUpdateDepthProjection(entityCollector.camera);\n\n\t\tif (!this._depthMap)\n\t\t\tthis._depthMap = this.pCreateDepthTexture();\n\n\t\tthis.pDrawDepthMap(this._depthMap, entityCollector.scene, renderer);\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic pDrawDepthMap(target:TextureProxyBase, scene:Scene, renderer:IRenderer)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _pSetDepthMapSize(value)\n\t{\n\t\tthis._pDepthMapSize = value;\n\n\t\tif (this._explicitDepthMap) {\n\t\t\tthrow Error(\"Cannot set depth map size for the current renderer.\");\n\t\t} else if (this._depthMap) {\n\t\t\tthis._depthMap.dispose();\n\t\t\tthis._depthMap = null;\n\t\t}\n\t}\n}\n\nexport = ShadowMapperBase;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.CameraNode\n */\nclass CameraNode extends EntityNode\n{\n\tconstructor(camera:IEntity)\n\t{\n\t\tsuper(camera);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\t// todo: dead end for now, if it has a debug mesh, then sure accept that\n\t}\n}\n\nexport = CameraNode;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.DirectionalLightNode\n */\nclass DirectionalLightNode extends EntityNode\n{\n\tprivate _directionalLight:IEntity;\n\n\t/**\n\t *\n\t * @param directionalLight\n\t */\n\tconstructor(directionalLight:IEntity)\n\t{\n\t\tsuper(directionalLight);\n\n\t\tthis._directionalLight = directionalLight;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyDirectionalLight(this._directionalLight);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = DirectionalLightNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PartialImplementationError\t= require(\"awayjs-core/lib/errors/PartialImplementationError\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.EntityNode\n */\nclass EntityNode extends NodeBase\n{\n\n\tprivate _entity:IEntity;\n\tpublic _iUpdateQueueNext:EntityNode;\n\n\tconstructor(entity:IEntity)\n\t{\n\t\tsuper();\n\t\tthis._entity = entity;\n\t\tthis._iNumEntities = 1;\n\t}\n\n\tpublic get entity():IEntity\n\t{\n\t\treturn this._entity;\n\t}\n\n\tpublic removeFromParent():void\n\t{\n\t\tif (this._iParent)\n\t\t\tthis._iParent.iRemoveNode(this);\n\n\t\tthis._iParent = null;\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn this.entity.castsShadows;\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\tif (!this._entity._iIsVisible())\n\t\t\treturn false;\n\n\t\treturn this._entity.worldBounds.isInFrustum(planes, numPlanes);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyEntity(this._entity);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\tif (!this._entity._iIsVisible())\n\t\t\treturn false;\n\n\t\treturn this._entity.isIntersectingRay(rayPosition, rayDirection);\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic _pCreateBoundsPrimitive():IEntity\n\t{\n\t\tthrow new PartialImplementationError();\n\t\t//return this._entity.bounds.boundingEntity;\n\t}\n}\n\nexport = EntityNode;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.LightProbeNode\n */\nclass LightProbeNode extends EntityNode\n{\n\tprivate _lightProbe:IEntity;\n\n\t/**\n\t *\n\t * @param lightProbe\n\t */\n\tconstructor(lightProbe:IEntity)\n\t{\n\t\tsuper(lightProbe);\n\n\t\tthis._lightProbe = lightProbe;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyLightProbe(this._lightProbe);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = LightProbeNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.NodeBase\n */\nclass NodeBase\n{\n\tprivate _boundsChildrenVisible:boolean;\n\tprivate _explicitBoundsVisible:boolean;\n\tprivate _implicitBoundsVisible:boolean;\n\tpublic _iParent:NodeBase;\n\tpublic _pChildNodes:Array;\n\tpublic _pNumChildNodes:number = 0;\n\tpublic _pBoundsPrimitive:IEntity;\n\n\tpublic _iNumEntities:number = 0;\n\tpublic _iCollectionMark:number;// = 0;\n\n\t/**\n\t *\n\t */\n\tpublic get boundsVisible():boolean\n\t{\n\t\treturn this._explicitBoundsVisible;\n\t}\n\n\tpublic set boundsVisible(value:boolean)\n\t{\n\t\tif (this._explicitBoundsVisible == value)\n\t\t\treturn;\n\n\t\tthis._explicitBoundsVisible = value;\n\n\t\tthis._iUpdateImplicitBoundsVisible(this._iParent? this._iParent.boundsChildrenVisible : false);\n\n\t}\n\n\tpublic get boundsChildrenVisible():boolean\n\t{\n\t\treturn this._boundsChildrenVisible;\n\t}\n\n\tpublic set boundsChildrenVisible(value:boolean)\n\t{\n\t\tif (this._boundsChildrenVisible == value)\n\t\t\treturn;\n\n\t\tthis._boundsChildrenVisible = value;\n\n\t\tfor (var i:number = 0; i < this._pNumChildNodes; ++i)\n\t\t\tthis._pChildNodes[i]._iUpdateImplicitBoundsVisible(this._boundsChildrenVisible);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get parent():NodeBase\n\t{\n\t\treturn this._iParent;\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic get _pNumEntities():number\n\t{\n\t\treturn this._iNumEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tthis._pChildNodes = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t * @internal\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @param rayPosition\n\t * @param rayDirection\n\t * @returns {boolean}\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t * @returns {away.partition.NodeBase}\n\t */\n\tpublic findPartitionForEntity(entity:IEntity):NodeBase\n\t{\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param traverser\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (this._pNumEntities == 0 && !this._implicitBoundsVisible)\n\t\t\treturn;\n\n\t\tif (traverser.enterNode(this)) {\n\t\t\tvar i:number = 0;\n\n\t\t\twhile (i < this._pNumChildNodes)\n\t\t\t\tthis._pChildNodes[i++].acceptTraverser(traverser);\n\n\t\t\tif (this._implicitBoundsVisible)\n\t\t\t\tthis._pBoundsPrimitive.partitionNode.acceptTraverser(traverser);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic _pCreateBoundsPrimitive():IEntity\n\t{\n\t\treturn null;\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @internal\n\t */\n\tpublic iAddNode(node:NodeBase)\n\t{\n\t\tnode._iParent = this;\n\t\tthis._iNumEntities += node._pNumEntities;\n\t\tthis._pChildNodes[ this._pNumChildNodes++ ] = node;\n\n\t\tnode._iUpdateImplicitBoundsVisible(this.boundsChildrenVisible);\n\n\t\tvar numEntities:number = node._pNumEntities;\n\t\tnode = this;\n\n\t\tdo {\n\t\t\tnode._iNumEntities += numEntities;\n\t\t} while ((node = node._iParent) != null);\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @internal\n\t */\n\tpublic iRemoveNode(node:NodeBase)\n\t{\n\t\tvar index:number = this._pChildNodes.indexOf(node);\n\t\tthis._pChildNodes[index] = this._pChildNodes[--this._pNumChildNodes];\n\t\tthis._pChildNodes.pop();\n\n\t\tnode._iUpdateImplicitBoundsVisible(false);\n\n\t\tvar numEntities:number = node._pNumEntities;\n\t\tnode = this;\n\n\t\tdo {\n\t\t\tnode._pNumEntities -= numEntities;\n\t\t} while ((node = node._iParent) != null);\n\t}\n\n\tprivate _iUpdateImplicitBoundsVisible(value:boolean)\n\t{\n\t\tif (this._implicitBoundsVisible == this._explicitBoundsVisible || value)\n\t\t\treturn;\n\n\t\tthis._implicitBoundsVisible = this._explicitBoundsVisible || value;\n\n\t\tthis._iUpdateEntityBounds();\n\n\t\tfor (var i:number = 0; i < this._pNumChildNodes; ++i)\n\t\t\tthis._pChildNodes[i]._iUpdateImplicitBoundsVisible(this._boundsChildrenVisible);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsBoundsVisible():boolean\n\t{\n\t\treturn this._implicitBoundsVisible;\n\t}\n\n//\t\tpublic _pUpdateNumEntities(value:number)\n//\t\t{\n//\t\t\tvar diff:number = value - this._pNumEntities;\n//\t\t\tvar node:NodeBase = this;\n//\n//\t\t\tdo {\n//\t\t\t\tnode._pNumEntities += diff;\n//\t\t\t} while ((node = node._iParent) != null);\n//\t\t}\n\n\tpublic _iUpdateEntityBounds()\n\t{\n\t\tif (this._pBoundsPrimitive) {\n\t\t\tthis._pBoundsPrimitive.dispose();\n\t\t\tthis._pBoundsPrimitive = null;\n\t\t}\n\n\t\tif (this._implicitBoundsVisible)\n\t\t\tthis._pBoundsPrimitive = this._pCreateBoundsPrimitive();\n\t}\n}\n\nexport = NodeBase;","/**\n * @class away.partition.NullNode\n */\nclass NullNode\n{\n\tconstructor()\n\t{\n\t}\n}\n\nexport = NullNode;","import DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport NullNode\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NullNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\n/**\n * @class away.partition.Partition\n */\nclass Partition\n{\n\n\tpublic _rootNode:NodeBase;\n\tprivate _updatesMade:Boolean = false;\n\tprivate _updateQueue:EntityNode;\n\n\tconstructor(rootNode:NodeBase)\n\t{\n\t\tthis._rootNode = rootNode || new NullNode();\n\t}\n\n\tpublic get rootNode():NodeBase\n\t{\n\t\treturn this._rootNode;\n\t}\n\n\tpublic traverse(traverser:ICollector)\n\t{\n\t\tif (this._updatesMade)\n\t\t\tthis.updateEntities();\n\n\t\tthis._rootNode.acceptTraverser(traverser);\n\t}\n\n\tpublic iMarkForUpdate(entity:DisplayObject)\n\t{\n\t\tvar node:EntityNode = entity.partitionNode;\n\t\tvar t:EntityNode = this._updateQueue;\n\n\t\twhile (t) {\n\t\t\tif (node == t)\n\t\t\t\treturn;\n\n\t\t\tt = t._iUpdateQueueNext;\n\t\t}\n\n\t\tnode._iUpdateQueueNext = this._updateQueue;\n\n\t\tthis._updateQueue = node;\n\t\tthis._updatesMade = true;\n\t}\n\n\tpublic iRemoveEntity(entity:DisplayObject)\n\t{\n\t\tvar node:EntityNode = entity.partitionNode;\n\t\tvar t:EntityNode;\n\n\t\tnode.removeFromParent();\n\n\t\tif (node == this._updateQueue) {\n\t\t\tthis._updateQueue = node._iUpdateQueueNext;\n\t\t} else {\n\t\t\tt = this._updateQueue;\n\t\t\twhile (t && t._iUpdateQueueNext != node)\n\t\t\t\tt = t._iUpdateQueueNext;\n\n\t\t\tif (t)\n\t\t\t\tt._iUpdateQueueNext = node._iUpdateQueueNext;\n\t\t}\n\n\t\tnode._iUpdateQueueNext = null;\n\n\t\tif (!this._updateQueue)\n\t\t\tthis._updatesMade = false;\n\t}\n\n\tprivate updateEntities()\n\t{\n\t\tvar node:EntityNode = this._updateQueue;\n\t\tvar targetNode:NodeBase;\n\t\tvar t:EntityNode;\n\t\tthis._updateQueue = null;\n\t\tthis._updatesMade = false;\n\n\t\tdo {\n\t\t\ttargetNode = this._rootNode.findPartitionForEntity(node.entity);\n\n\t\t\tif (node.parent != targetNode) {\n\t\t\t\tif (node)\n\t\t\t\t\tnode.removeFromParent();\n\n\t\t\t\ttargetNode.iAddNode(node);\n\t\t\t}\n\n\t\t\tt = node._iUpdateQueueNext;\n\t\t\tnode._iUpdateQueueNext = null;\n\n\t\t\t//required for controllers with autoUpdate set to true\n\t\t\tnode.entity._iInternalUpdate();\n\n\t\t} while ((node = t) != null);\n\t}\n}\n\nexport = Partition;","import NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.PointLightNode\n */\nclass PointLightNode extends EntityNode\n{\n\tprivate _pointLight:IEntity;\n\n\t/**\n\t *\n\t * @param pointLight\n\t */\n\tconstructor(pointLight:IEntity)\n\t{\n\t\tsuper(pointLight);\n\n\t\tthis._pointLight = pointLight;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode( this))\n\t\t\ttraverser.applyPointLight(this._pointLight);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = PointLightNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * SkyboxNode is a space partitioning leaf node that contains a Skybox object.\n *\n * @class away.partition.SkyboxNode\n */\nclass SkyboxNode extends EntityNode\n{\n\tprivate _skyBox:IEntity;\n\n\t/**\n\t * Creates a new SkyboxNode object.\n\t * @param skyBox The Skybox to be contained in the node.\n\t */\n\tconstructor(skyBox:IEntity)\n\t{\n\t\tsuper(skyBox);\n\n\t\tthis._skyBox = skyBox;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode( this))\n\t\t\ttraverser.applySkybox(this._skyBox);\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\tif (!this._skyBox._iIsVisible)\n\t\t\treturn false;\n\n\t\t//a skybox is always in view unless its visibility is set to false\n\t\treturn true;\n\t}\n}\n\nexport = SkyboxNode;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\n\n/**\n * Value object for a picking collision returned by a picking collider. Created as unique objects on display objects\n *\n * @see away.base.DisplayObject#pickingCollisionVO\n * @see away.core.pick.IPickingCollider\n *\n * @class away.pick.PickingCollisionVO\n */\nclass PickingCollisionVO\n{\n\t/**\n\t * The display object to which this collision object belongs.\n\t */\n\tpublic displayObject:DisplayObject;\n\n\t/**\n\t * The local position of the collision on the entity's surface.\n\t */\n\tpublic localPosition:Vector3D;\n\n\t/**\n\t * The local normal vector at the position of the collision.\n\t */\n\tpublic localNormal:Vector3D;\n\n\t/**\n\t * The uv coordinate at the position of the collision.\n\t */\n\tpublic uv:Point;\n\n\t/**\n\t * The index of the face where the event took pl ace.\n\t */\n\tpublic index:number;\n\n\t/**\n\t * The index of the subGeometry where the event took place.\n\t */\n//\t\tpublic subGeometryIndex:number;\n\n\t/**\n\t * The starting position of the colliding ray in local coordinates.\n\t */\n\tpublic localRayPosition:Vector3D;\n\n\t/**\n\t * The direction of the colliding ray in local coordinates.\n\t */\n\tpublic localRayDirection:Vector3D;\n\n\t/**\n\t * The starting position of the colliding ray in scene coordinates.\n\t */\n\tpublic rayPosition:Vector3D;\n\n\t/**\n\t * The direction of the colliding ray in scene coordinates.\n\t */\n\tpublic rayDirection:Vector3D;\n\n\t/**\n\t * Determines if the ray position is contained within the entity bounds.\n\t *\n\t * @see away3d.entities.Entity#bounds\n\t */\n\tpublic rayOriginIsInsideBounds:boolean;\n\n\t/**\n\t * The distance along the ray from the starting position to the calculated intersection entry point with the entity.\n\t */\n\tpublic rayEntryDistance:number;\n\n\t/**\n\t * The material ownwer associated with a collision.\n\t */\n\tpublic materialOwner:IMaterialOwner;\n\n\t/**\n\t * Creates a new PickingCollisionVO object.\n\t *\n\t * @param entity The entity to which this collision object belongs.\n\t */\n\tconstructor(displayObject:DisplayObject)\n\t{\n\t\tthis.displayObject = displayObject;\n\t}\n\n}\n\nexport = PickingCollisionVO;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport View\t\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport IPicker\t\t\t\t\t\t= require(\"awayjs-display/lib/pick/IPicker\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport RaycastCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/RaycastCollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * Picks a 3d object from a view or scene by 3D raycast calculations.\n * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,\n * then triggers an optional picking collider on individual entity objects to further determine the precise values of the picking ray collision.\n *\n * @class away.pick.RaycastPicker\n */\nclass RaycastPicker implements IPicker\n{\n\tprivate _findClosestCollision:boolean;\n\tprivate _raycastCollector:RaycastCollector;\n\tprivate _ignoredEntities = [];\n\tprivate _onlyMouseEnabled:boolean = true;\n\n\tprivate _entities:Array;\n\tprivate _numEntities:number = 0;\n\tprivate _hasCollisions:boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get onlyMouseEnabled():boolean\n\t{\n\t\treturn this._onlyMouseEnabled;\n\t}\n\n\tpublic set onlyMouseEnabled(value:boolean)\n\t{\n\t\tthis._onlyMouseEnabled = value;\n\t}\n\n\t/**\n\t * Creates a new RaycastPicker object.\n\t *\n\t * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,\n\t * or simply returns the first collision encountered. Defaults to false.\n\t */\n\tconstructor(findClosestCollision:boolean = false)\n\t{\n\t\tthis._raycastCollector = new RaycastCollector();\n\n\t\tthis._findClosestCollision = findClosestCollision;\n\t\tthis._entities = new Array();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getViewCollision(x:number, y:number, view:View):PickingCollisionVO\n\t{\n\t\t//update ray\n\t\tvar rayPosition:Vector3D = view.unproject(x, y, 0);\n\t\tvar rayDirection:Vector3D = view.unproject(x, y, 1).subtract(rayPosition);\n\n\t\treturn this.getSceneCollision(rayPosition, rayDirection, view.scene);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getSceneCollision(rayPosition:Vector3D, rayDirection:Vector3D, scene:Scene):PickingCollisionVO\n\t{\n\t\t//clear collector\n\t\tthis._raycastCollector.clear();\n\n\t\t//setup ray vectors\n\t\tthis._raycastCollector.rayPosition = rayPosition;\n\t\tthis._raycastCollector.rayDirection = rayDirection;\n\n\t\t// collect entities to test\n\t\tscene.traversePartitions(this._raycastCollector);\n\n\t\tthis._numEntities = 0;\n\t\tvar node:EntityListItem = this._raycastCollector.entityHead;\n\t\tvar entity:IEntity;\n\n\t\twhile (node) {\n\t\t\tif (!this.isIgnored(entity = node.entity))\n\t\t\t\tthis._entities[this._numEntities++] = entity;\n\n\t\t\tnode = node.next;\n\t\t}\n\n\t\t//early out if no collisions detected\n\t\tif (!this._numEntities)\n\t\t\treturn null;\n\n\t\treturn this.getPickingCollisionVO(this._raycastCollector);\n\t}\n\n//\t\tpublic getEntityCollision(position:Vector3D, direction:Vector3D, entities:Array):PickingCollisionVO\n//\t\t{\n//\t\t\tthis._numEntities = 0;\n//\n//\t\t\tvar entity:IEntity;\n//\t\t\tvar l:number = entities.length;\n//\n//\t\t\tfor (var c:number = 0; c < l; c++) {\n//\t\t\t\tentity = entities[c];\n//\n//\t\t\t\tif (entity.isIntersectingRay(position, direction))\n//\t\t\t\t\tthis._entities[this._numEntities++] = entity;\n//\t\t\t}\n//\n//\t\t\treturn this.getPickingCollisionVO(this._raycastCollector);\n//\t\t}\n\n\tpublic setIgnoreList(entities)\n\t{\n\t\tthis._ignoredEntities = entities;\n\t}\n\n\tprivate isIgnored(entity:IEntity):boolean\n\t{\n\t\tif (this._onlyMouseEnabled && !entity._iIsMouseEnabled())\n\t\t\treturn true;\n\n\t\tvar len:number = this._ignoredEntities.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tif (this._ignoredEntities[i] == entity)\n\t\t\t\treturn true;\n\n\t\treturn false;\n\t}\n\n\tprivate sortOnNearT(entity1:IEntity, entity2:IEntity):number\n\t{\n\t\treturn entity1._iPickingCollisionVO.rayEntryDistance > entity2._iPickingCollisionVO.rayEntryDistance? 1 : -1;\n\t}\n\n\tprivate getPickingCollisionVO(collector:ICollector):PickingCollisionVO\n\t{\n\t\t// trim before sorting\n\t\tthis._entities.length = this._numEntities;\n\n\t\t// Sort entities from closest to furthest.\n\t\tthis._entities = this._entities.sort(this.sortOnNearT); // TODO - test sort filter in JS\n\n\t\t// ---------------------------------------------------------------------\n\t\t// Evaluate triangle collisions when needed.\n\t\t// Replaces collision data provided by bounds collider with more precise data.\n\t\t// ---------------------------------------------------------------------\n\n\t\tvar shortestCollisionDistance:number = Number.MAX_VALUE;\n\t\tvar bestCollisionVO:PickingCollisionVO;\n\t\tvar pickingCollisionVO:PickingCollisionVO;\n\t\tvar entity:IEntity;\n\t\tvar i:number;\n\n\t\tfor (i = 0; i < this._numEntities; ++i) {\n\t\t\tentity = this._entities[i];\n\t\t\tpickingCollisionVO = entity._iPickingCollisionVO;\n\t\t\tif (entity.pickingCollider) {\n\t\t\t\t// If a collision exists, update the collision data and stop all checks.\n\t\t\t\tif ((bestCollisionVO == null || pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance) && entity._iTestCollision(shortestCollisionDistance, this._findClosestCollision)) {\n\t\t\t\t\tshortestCollisionDistance = pickingCollisionVO.rayEntryDistance;\n\t\t\t\t\tbestCollisionVO = pickingCollisionVO;\n\t\t\t\t\tif (!this._findClosestCollision) {\n\t\t\t\t\t\tthis.updateLocalPosition(pickingCollisionVO);\n\t\t\t\t\t\treturn pickingCollisionVO;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (bestCollisionVO == null || pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance) { // A bounds collision with no triangle collider stops all checks.\n\t\t\t\t// Note: a bounds collision with a ray origin inside its bounds is ONLY ever used\n\t\t\t\t// to enable the detection of a corresponsding triangle collision.\n\t\t\t\t// Therefore, bounds collisions with a ray origin inside its bounds can be ignored\n\t\t\t\t// if it has been established that there is NO triangle collider to test\n\t\t\t\tif (!pickingCollisionVO.rayOriginIsInsideBounds) {\n\t\t\t\t\tthis.updateLocalPosition(pickingCollisionVO);\n\t\t\t\t\treturn pickingCollisionVO;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn bestCollisionVO;\n\t}\n\n\tprivate updateLocalPosition(pickingCollisionVO:PickingCollisionVO)\n\t{\n\t\tvar collisionPos:Vector3D = ( pickingCollisionVO.localPosition == null )? new Vector3D() : pickingCollisionVO.localPosition;\n\n\t\tvar rayDir:Vector3D = pickingCollisionVO.localRayDirection;\n\t\tvar rayPos:Vector3D = pickingCollisionVO.localRayPosition;\n\t\tvar t:number = pickingCollisionVO.rayEntryDistance;\n\t\tcollisionPos.x = rayPos.x + t*rayDir.x;\n\t\tcollisionPos.y = rayPos.y + t*rayDir.y;\n\t\tcollisionPos.z = rayPos.z + t*rayDir.z;\n\t}\n\n\tpublic dispose()\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = RaycastPicker;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport RenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/RenderablePool\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSBillboardRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"billboard\";\n\n\tconstructor(pool:RenderablePool, billboard:Billboard)\n\t{\n\t\tsuper(pool, billboard, billboard);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\tvar img:HTMLDivElement = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + billboard.material.id;\n\t}\n}\n\nexport = CSSBillboardRenderable;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport RenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/RenderablePool\");\nimport LineSegment\t\t\t\t\t= require(\"awayjs-display/lib/entities/LineSegment\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSLineSegmentRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"lineSegment\";\n\n\tconstructor(pool:RenderablePool, lineSegment:LineSegment)\n\t{\n\t\tsuper(pool, lineSegment, lineSegment);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\tvar img:HTMLDivElement = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + lineSegment.material.id;\n\t}\n}\n\nexport = CSSLineSegmentRenderable;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\n\nimport IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport RenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/RenderablePool\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSRenderableBase implements IRenderable\n{\n\t/**\n\t *\n\t */\n\tprivate _pool:RenderablePool;\n\n\t/**\n\t *\n\t */\n\tpublic next:CSSRenderableBase;\n\n\t/**\n\t *\n\t */\n\tpublic materialId:number;\n\n\t/**\n\t *\n\t */\n\tpublic renderOrderId:number;\n\n\t/**\n\t *\n\t */\n\tpublic zIndex:number;\n\n\t/**\n\t *\n\t */\n\tpublic cascaded:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic renderSceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tpublic sourceEntity:IEntity;\n\n\t/**\n\t *\n\t */\n\tpublic materialOwner:IMaterialOwner;\n\n\t/**\n\t *\n\t */\n\tpublic htmlElement:HTMLElement;\n\n\t/**\n\t *\n\t * @param sourceEntity\n\t * @param material\n\t * @param animator\n\t */\n\tconstructor(pool:RenderablePool, sourceEntity:IEntity, materialOwner:IMaterialOwner)\n\t{\n\t\t//store a reference to the pool for later disposal\n\t\tthis._pool = pool;\n\n\t\tthis.sourceEntity = sourceEntity;\n\t\tthis.materialOwner = materialOwner;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pool.disposeItem(this.materialOwner);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateGeometry()\n\t{\n\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateIndexData()\n\t{\n\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateVertexData(dataType:string)\n\t{\n\n\t}\n}\n\nexport = CSSRenderableBase;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport RenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/RenderablePool\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n\n/**\n * @class away.pool.CSSSkyboxRenderable\n */\nclass CSSSkyboxRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"skybox\";\n\n\tconstructor(pool:RenderablePool, skyBox:Skybox)\n\t{\n\t\tsuper(pool, skyBox, skyBox);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\t\tvar img:HTMLDivElement;\n\n\t\t//create the six images that make up the skybox\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\timg = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + skyBox.material.id;\n\t}\n}\n\nexport = CSSSkyboxRenderable;","import EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\n\n/**\n * @class away.pool.EntityListItemPool\n */\nclass EntityListItemPool\n{\n\tprivate _pool:Array;\n\tprivate _index:number = 0;\n\tprivate _poolSize:number = 0;\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tthis._pool = new Array();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getItem():EntityListItem\n\t{\n\t\tvar item:EntityListItem;\n\t\tif (this._index == this._poolSize) {\n\t\t\titem = new EntityListItem();\n\t\t\tthis._pool[this._index++] = item;\n\t\t\t++this._poolSize;\n\t\t} else {\n\t\t\titem = this._pool[this._index++];\n\t\t}\n\t\treturn item;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic freeAll()\n\t{\n\t\tthis._index = 0;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._pool.length = 0;\n\t}\n}\n\nexport = EntityListItemPool;","import IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.pool.EntityListItem\n */\nclass EntityListItem\n{\n\t/**\n\t *\n\t */\n\tpublic entity:IEntity;\n\n\t/**\n\t *\n\t */\n\tpublic next:EntityListItem;\n}\n\nexport = EntityListItem;","import IMaterialOwner\t\t\t\t= require(\"awayjs-display/lib/base/IMaterialOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderableClass\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderableClass\");\n\n/**\n * @class away.pool.RenderablePool\n */\nclass RenderablePool\n{\n\tprivate static _pools:Object = new Object();\n\n\tprivate _pool:Object = new Object();\n\tprivate _renderableClass:IRenderableClass;\n\n\t/**\n\t * //TODO\n\t *\n\t * @param renderableClass\n\t */\n\tconstructor(renderableClass:IRenderableClass)\n\t{\n\t\tthis._renderableClass = renderableClass;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param materialOwner\n\t * @returns IRenderable\n\t */\n\tpublic getItem(materialOwner:IMaterialOwner):IRenderable\n\t{\n\t\treturn (this._pool[materialOwner.id] || (this._pool[materialOwner.id] = materialOwner._iAddRenderable(new this._renderableClass(this, materialOwner))))\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param materialOwner\n\t */\n\tpublic disposeItem(materialOwner:IMaterialOwner)\n\t{\n\t\tmaterialOwner._iRemoveRenderable(this._pool[materialOwner.id]);\n\n\t\tthis._pool[materialOwner.id] = null;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param renderableClass\n\t * @returns RenderablePool\n\t */\n\tpublic static getPool(renderableClass:IRenderableClass):RenderablePool\n\t{\n\t\tvar pool:RenderablePool = RenderablePool._pools[renderableClass.id];\n\n\t\tif (pool != undefined)\n\t\t\treturn pool;\n\n\t\treturn (RenderablePool._pools[renderableClass.id] = new RenderablePool(renderableClass));\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param renderableClass\n\t */\n\tpublic static disposePool(renderableClass:any)\n\t{\n\t\tif (RenderablePool._pools[renderableClass.id])\n\t\t\tRenderablePool._pools[renderableClass.id] = undefined;\n\t}\n}\n\nexport = RenderablePool;","import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating\n */\nclass PrefabBase extends NamedAssetBase\n{\n\tpublic _pObjects:Array = new Array();\n\n//\t\tpublic _pBatchObjects:Array = new Array();\n\n\t/**\n\t * Creates a new PrefabBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Returns a display object generated from this prefab\n\t */\n\tpublic getNewObject():DisplayObject\n\t{\n\t\tvar object:DisplayObject = this._pCreateObject();\n\n\t\tthis._pObjects.push(object);\n\n\t\treturn object;\n\t}\n\n//\t\tpublic getNewBatchObject():BatchObject\n//\t\t{\n//\t\t\tvar object:BatchObject = this._pCreateBatchObject();\n//\n//\t\t\tthis._pBatchObjects.push(object);\n//\n//\t\t\treturn object;\n//\t\t}\n\n\tpublic _pCreateObject():DisplayObject\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iValidate()\n\t{\n\t\t// To be overridden when necessary\n\t}\n}\n\nexport = PrefabBase;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Capsule primitive mesh.\n */\nclass PrimitiveCapsulePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _height:number;\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the capsule.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The height of the capsule.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = (value%2 == 0)? value + 1 : value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Capsule object.\n\t * @param radius The radius of the capsule.\n\t * @param height The height of the capsule.\n\t * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value.\n\t * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 15, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._height = height;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = (segmentsH%2 == 0)? segmentsH + 1 : segmentsH;\n\t\tthis._yUp = yUp;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar triIndex:number = 0;\n\t\tvar index:number = 0;\n\t\tvar startIndex:number;\n\t\tvar comp1:number, comp2:number, t1:number, t2:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsH + 1)*(this._segmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of closure\n\t\t\tnumIndices = (this._segmentsH - 1)*this._segmentsW*6; // each level has segmentH quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tstartIndex = index;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar offset:number = j > this._segmentsH/2? this._height/2 : -this._height/2;\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\t\t\t\t\tvar normLen:number = 1/Math.sqrt(x*x + y*y + z*z);\n\t\t\t\t\tvar tanLen:number = Math.sqrt(y*y + x*x);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsW) {\n\n\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\t\t\t\t\t\tnormals[index] = (normals[startIndex] + (x*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 1] = (normals[startIndex + 1] + ( comp1*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 2] = (normals[startIndex + 2] + (comp2*normLen))*.5;\n\t\t\t\t\t\ttangents[index] = (tangents[startIndex] + (tanLen > .007? -y/tanLen : 1))*.5;\n\t\t\t\t\t\ttangents[index + 1] = (tangents[startIndex + 1] + t1)*.5;\n\t\t\t\t\t\ttangents[index + 2] = (tangents[startIndex + 2] + t2)*.5;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// vertex\n\t\t\t\t\t\tpositions[index] = x;\n\t\t\t\t\t\tpositions[index + 1] = (this._yUp)? comp1 - offset : comp1;\n\t\t\t\t\t\tpositions[index + 2] = (this._yUp)? comp2 : comp2 + offset;\n\t\t\t\t\t\t// normal\n\t\t\t\t\t\tnormals[index] = x*normLen;\n\t\t\t\t\t\tnormals[index + 1] = comp1*normLen;\n\t\t\t\t\t\tnormals[index + 2] = comp2*normLen;\n\t\t\t\t\t\t// tangent\n\t\t\t\t\t\ttangents[index] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[index + 1] = t1;\n\t\t\t\t\t\ttangents[index + 2] = t2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\tvar a:number = (this._segmentsW + 1)*j + i;\n\t\t\t\t\t\tvar b:number = (this._segmentsW + 1)*j + i - 1;\n\t\t\t\t\t\tvar c:number = (this._segmentsW + 1)*(j - 1) + i - 1;\n\t\t\t\t\t\tvar d:number = (this._segmentsW + 1)*(j - 1) + i;\n\n\t\t\t\t\t\tif (j == this._segmentsH) {\n\t\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\n\t\t\t\t\t\t} else if (j == 1) {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += 3;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsH )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCapsulePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport PrimitiveCylinderPrefab\t= require(\"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab\");\n\n/**\n * A UV Cone primitive mesh.\n */\nclass PrimitiveConePrefab extends PrimitiveCylinderPrefab implements IAsset\n{\n\n\t/**\n\t * The radius of the bottom end of the cone.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Cone object.\n\t * @param radius The radius of the bottom end of the cone\n\t * @param height The height of the cone\n\t * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1.\n\t * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 1, closed:boolean = true, yUp:boolean = true)\n\t{\n\t\tsuper(0, radius, height, segmentsW, segmentsH, false, closed, true, yUp);\n\t}\n}\n\nexport = PrimitiveConePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Cube primitive prefab.\n */\nclass PrimitiveCubePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _width:number;\n\tprivate _height:number;\n\tprivate _depth:number;\n\tprivate _tile6:boolean;\n\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _segmentsD:number;\n\n\t/**\n\t * Creates a new Cube object.\n\t * @param width The size of the cube along its X-axis.\n\t * @param height The size of the cube along its Y-axis.\n\t * @param depth The size of the cube along its Z-axis.\n\t * @param segmentsW The number of segments that make up the cube along the X-axis.\n\t * @param segmentsH The number of segments that make up the cube along the Y-axis.\n\t * @param segmentsD The number of segments that make up the cube along the Z-axis.\n\t * @param tile6 The type of uv mapping to use. When true, a texture will be subdivided in a 2x3 grid, each used for a single face. When false, the entire image is mapped on each face.\n\t */\n\tconstructor(width:number = 100, height:number = 100, depth:number = 100, segmentsW:number = 1, segmentsH:number = 1, segmentsD:number = 1, tile6:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._depth = depth;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._segmentsD = segmentsD;\n\t\tthis._tile6 = tile6;\n\t}\n\n\t/**\n\t * The size of the cube along its X-axis.\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tthis._width = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The size of the cube along its Y-axis.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The size of the cube along its Z-axis.\n\t */\n\tpublic get depth():number\n\t{\n\t\treturn this._depth;\n\t}\n\n\tpublic set depth(value:number)\n\t{\n\t\tthis._depth = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The type of uv mapping to use. When false, the entire image is mapped on each face.\n\t * When true, a texture will be subdivided in a 3x2 grid, each used for a single face.\n\t * Reading the tiles from left to right, top to bottom they represent the faces of the\n\t * cube in the following order: bottom, top, back, left, front, right. This creates\n\t * several shared edges (between the top, front, left and right faces) which simplifies\n\t * texture painting.\n\t */\n\tpublic get tile6():boolean\n\t{\n\t\treturn this._tile6;\n\t}\n\n\tpublic set tile6(value:boolean)\n\t{\n\t\tthis._tile6 = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the X-axis. Defaults to 1.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the Y-axis. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the Z-axis. Defaults to 1.\n\t */\n\tpublic get segmentsD():number\n\t{\n\t\treturn this._segmentsD;\n\t}\n\n\tpublic set segmentsD(value:number)\n\t{\n\t\tthis._segmentsD = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar tl:number, tr:number, bl:number, br:number;\n\t\tvar i:number, j:number, inc:number = 0;\n\n\t\tvar vidx:number, fidx:number; // indices\n\t\tvar hw:number, hh:number, hd:number; // halves\n\t\tvar dw:number, dh:number, dd:number; // deltas\n\n\t\tvar outer_pos:number;\n\t\tvar numIndices:number;\n\t\tvar numVertices:number;\n\n\t\t// half cube dimensions\n\t\thw = this._width/2;\n\t\thh = this._height/2;\n\t\thd = this._depth/2;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tnumVertices = ((this._segmentsW + 1)*(this._segmentsH + 1) + (this._segmentsW + 1)*(this._segmentsD + 1) + (this._segmentsH + 1)*(this._segmentsD + 1))*2;\n\n\t\t\tnumIndices = ((this._segmentsW*this._segmentsH + this._segmentsW*this._segmentsD + this._segmentsH*this._segmentsD)*12);\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.indices != null) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices);\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// Segment dimensions\n\t\t\tdw = this._width/this._segmentsW;\n\t\t\tdh = this._height/this._segmentsH;\n\t\t\tdd = this._depth/this._segmentsD;\n\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\touter_pos = -hw + i*dw;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\t// front\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx + 2] = -hd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\tnormals[vidx + 2] = -1;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// back\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx + 2] = hd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\tnormals[vidx + 2] = 1;\n\t\t\t\t\ttangents[vidx] = -1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = 2*((i - 1)*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\ttr = 2*(i*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinc += 2*(this._segmentsW + 1)*(this._segmentsH + 1);\n\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\touter_pos = -hw + i*dw;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsD; j++) {\n\t\t\t\t\t// top\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = hh;\n\t\t\t\t\tpositions[vidx + 2] = -hd + j*dd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 1;\n\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// bottom\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh;\n\t\t\t\t\tpositions[vidx + 2] = -hd + j*dd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = -1;\n\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = inc + 2*((i - 1)*(this._segmentsD + 1) + (j - 1));\n\t\t\t\t\t\ttr = inc + 2*(i*(this._segmentsD + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinc += 2*(this._segmentsW + 1)*(this._segmentsD + 1);\n\n\t\t\tfor (i = 0; i <= this._segmentsD; i++) {\n\t\t\t\touter_pos = hd - i*dd;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\t// left\n\t\t\t\t\tpositions[vidx] = -hw;\n\t\t\t\t\tpositions[vidx+1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx+2] = outer_pos;\n\t\t\t\t\tnormals[vidx] = -1;\n\t\t\t\t\tnormals[vidx+1] = 0;\n\t\t\t\t\tnormals[vidx+2] = 0;\n\t\t\t\t\ttangents[vidx] = 0;\n\t\t\t\t\ttangents[vidx+1] = 0;\n\t\t\t\t\ttangents[vidx+2] = -1;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// right\n\t\t\t\t\tpositions[vidx] = hw;\n\t\t\t\t\tpositions[vidx+1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx+2] = outer_pos;\n\t\t\t\t\tnormals[vidx] = 1;\n\t\t\t\t\tnormals[vidx+1] = 0;\n\t\t\t\t\tnormals[vidx+2] = 0;\n\t\t\t\t\ttangents[vidx] = 0;\n\t\t\t\t\ttangents[vidx+1] = 0;\n\t\t\t\t\ttangents[vidx+2] = 1;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = inc + 2*((i - 1)*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\ttr = inc + 2*(i*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = this._segmentsH*4 + this._segmentsW*4 + this._segmentsD*4;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\t//front/back face\n\t\t\tfor (i = 0; i < this._segmentsH; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = i*this._height/this._segmentsH - hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = i*this._height/this._segmentsH - hh\n\t\t\t\tendPositions[vidx + 2] = -hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tstartPositions[vidx + 2] = hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsW; ++i) {\n\t\t\t\tstartPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = -hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd;\n\n\t\t\t\tendPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t//left/right face\n\t\t\tfor (i = 0; i < this._segmentsH; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = i*this._height/this._segmentsH - hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = -hw;\n\t\t\t\tendPositions[vidx + 1] = i*this._height/this._segmentsH - hh\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = hw;\n\t\t\t\tstartPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsD; ++i) {\n\t\t\t\tstartPositions[vidx] = hw\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tendPositions[vidx] = -hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\n\t\t\t//top/bottom face\n\t\t\tfor (i = 0; i < this._segmentsD; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = -hh;\n\t\t\t\tendPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = hh;\n\t\t\t\tstartPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsW; ++i) {\n\t\t\t\tstartPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tendPositions[vidx + 1] = -hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tstartPositions[vidx + 1] = hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number, index:number;\n\t\tvar uvs:Array;\n\n\t\tvar u_tile_dim:number, v_tile_dim:number;\n\t\tvar u_tile_step:number, v_tile_step:number;\n\t\tvar tl0u:number, tl0v:number;\n\t\tvar tl1u:number, tl1v:number;\n\t\tvar du:number, dv:number;\n\t\tvar numVertices:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = ((this._segmentsW + 1)*(this._segmentsH + 1) + (this._segmentsW + 1)*(this._segmentsD + 1) + (this._segmentsH + 1)*(this._segmentsD + 1))*2;\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.uvs != null) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t}\n\n\t\t\tif (this._tile6) {\n\t\t\t\tu_tile_dim = u_tile_step = 1/3;\n\t\t\t\tv_tile_dim = v_tile_step = 1/2;\n\t\t\t} else {\n\t\t\t\tu_tile_dim = v_tile_dim = 1;\n\t\t\t\tu_tile_step = v_tile_step = 0;\n\t\t\t}\n\n\t\t\t// Create planes two and two, the same way that they were\n\t\t\t// constructed in the buildGeometry() function. First calculate\n\t\t\t// the top-left UV coordinate for both planes, and then loop\n\t\t\t// over the points, calculating the UVs from these numbers.\n\n\t\t\t// When tile6 is true, the layout is as follows:\n\t\t\t// .-----.-----.-----. (1,1)\n\t\t\t// | Bot | T | Bak |\n\t\t\t// |-----+-----+-----|\n\t\t\t// | L | F | R |\n\t\t\t// (0,0)'-----'-----'-----'\n\n\t\t\tindex = 0;\n\n\t\t\t// FRONT / BACK\n\t\t\ttl0u = 1*u_tile_step;\n\t\t\ttl0v = 1*v_tile_step;\n\t\t\ttl1u = 2*u_tile_step;\n\t\t\ttl1v = 0*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsW;\n\t\t\tdv = v_tile_dim/this._segmentsH;\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + (u_tile_dim - i*du))*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TOP / BOTTOM\n\t\t\ttl0u = 1*u_tile_step;\n\t\t\ttl0v = 0*v_tile_step;\n\t\t\ttl1u = 0*u_tile_step;\n\t\t\ttl1v = 0*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsW;\n\t\t\tdv = v_tile_dim/this._segmentsD;\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsD; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + j*dv)*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// LEFT / RIGHT\n\t\t\ttl0u = 0*u_tile_step;\n\t\t\ttl0v = 1*v_tile_step;\n\t\t\ttl1u = 2*u_tile_step;\n\t\t\ttl1v = 1*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsD;\n\t\t\tdv = v_tile_dim/this._segmentsH;\n\t\t\tfor (i = 0; i <= this._segmentsD; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + (u_tile_dim - i*du))*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCubePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Cylinder primitive mesh.\n */\nclass PrimitiveCylinderPrefab extends PrimitivePrefabBase implements IAsset\n{\n\tpublic _pBottomRadius:number;\n\tpublic _pSegmentsW:number;\n\tpublic _pSegmentsH:number;\n\n\tprivate _topRadius:number;\n\tprivate _height:number;\n\n\tprivate _topClosed:boolean;\n\tprivate _bottomClosed:boolean;\n\tprivate _surfaceClosed:boolean;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the top end of the cylinder.\n\t */\n\tpublic get topRadius():number\n\t{\n\t\treturn this._topRadius;\n\t}\n\n\tpublic set topRadius(value:number)\n\t{\n\t\tthis._topRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the bottom end of the cylinder.\n\t */\n\tpublic get bottomRadius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set bottomRadius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the top end of the cylinder.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._pSegmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis.setSegmentsW(value);\n\t}\n\n\tpublic setSegmentsW(value:number)\n\t{\n\t\tthis._pSegmentsW = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the cylinder. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._pSegmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\n\t\tthis.setSegmentsH(value)\n\n\t}\n\n\tpublic setSegmentsH(value:number)\n\t{\n\t\tthis._pSegmentsH = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * Defines whether the top end of the cylinder is closed (true) or open.\n\t */\n\tpublic get topClosed():boolean\n\t{\n\t\treturn this._topClosed;\n\t}\n\n\tpublic set topClosed(value:boolean)\n\t{\n\t\tthis._topClosed = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the bottom end of the cylinder is closed (true) or open.\n\t */\n\tpublic get bottomClosed():boolean\n\t{\n\t\treturn this._bottomClosed;\n\t}\n\n\tpublic set bottomClosed(value:boolean)\n\t{\n\t\tthis._bottomClosed = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the cylinder poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Cylinder object.\n\t * @param topRadius The radius of the top end of the cylinder.\n\t * @param bottomRadius The radius of the bottom end of the cylinder\n\t * @param height The radius of the bottom end of the cylinder\n\t * @param segmentsW Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the cylinder. Defaults to 1.\n\t * @param topClosed Defines whether the top end of the cylinder is closed (true) or open.\n\t * @param bottomClosed Defines whether the bottom end of the cylinder is closed (true) or open.\n\t * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(topRadius:number = 50, bottomRadius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 1, topClosed:boolean = true, bottomClosed:boolean = true, surfaceClosed:boolean = true, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._topRadius = topRadius;\n\t\tthis._pBottomRadius = bottomRadius;\n\t\tthis._height = height;\n\t\tthis._pSegmentsW = segmentsW;\n\t\tthis._pSegmentsH = segmentsH;\n\t\tthis._topClosed = topClosed;\n\t\tthis._bottomClosed = bottomClosed;\n\t\tthis._surfaceClosed = surfaceClosed;\n\t\tthis._yUp = yUp;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar x:number;\n\t\tvar y:number;\n\t\tvar z:number;\n\t\tvar vidx:number;\n\t\tvar fidx:number;\n\n\t\tvar radius:number;\n\t\tvar revolutionAngle:number;\n\n\t\tvar dr:number;\n\t\tvar latNormElev:number;\n\t\tvar latNormBase:number;\n\t\tvar numIndices:number = 0;\n\n\t\tvar comp1:number;\n\t\tvar comp2:number;\n\t\tvar startIndex:number = 0;\n\t\tvar nextVertexIndex:number = 0;\n\n\t\tvar t1:number;\n\t\tvar t2:number;\n\n\t\t// reset utility variables\n\t\tthis._numVertices = 0;\n\n\t\t// evaluate revolution steps\n\t\tvar revolutionAngleDelta:number = 2*Math.PI/this._pSegmentsW;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tthis._numVertices += (this._pSegmentsH + 1)*(this._pSegmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of UV unwrapping\n\t\t\t\tnumIndices += this._pSegmentsH*this._pSegmentsW*6; // each level has segmentW quads, each of 2 triangles\n\t\t\t}\n\t\t\tif (this._topClosed) {\n\t\t\t\tthis._numVertices += 2*(this._pSegmentsW + 1); // segmentsW + 1 because of unwrapping\n\t\t\t\tnumIndices += this._pSegmentsW*3; // one triangle for each segment\n\t\t\t}\n\t\t\tif (this._bottomClosed) {\n\t\t\t\tthis._numVertices += 2*(this._pSegmentsW + 1);\n\t\t\t\tnumIndices += this._pSegmentsW*3;\n\t\t\t}\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// top\n\t\t\tif (this._topClosed && this._topRadius > 0) {\n\n\t\t\t\tz = -0.5*this._height;\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t// central vertex\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = 1;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = -1;\n\t\t\t\t\t\tcomp1 = 0;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpositions[vidx] = 0;\n\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = this._topRadius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = this._topRadius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex + 3];\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 4];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 5];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t// add triangle\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 1;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 2;\n\n\t\t\t\t\t\tnextVertexIndex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnextVertexIndex += 2;\n\t\t\t}\n\n\t\t\t// bottom\n\t\t\tif (this._bottomClosed && this._pBottomRadius > 0) {\n\n\t\t\t\tz = 0.5*this._height;\n\n\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = -1;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = 1;\n\t\t\t\t\t\tcomp1 = 0;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpositions[vidx] = 0;\n\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = this._pBottomRadius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = this._pBottomRadius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex + 3];\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 4];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 5];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t// add triangle\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 2;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 1;\n\n\t\t\t\t\t\tnextVertexIndex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnextVertexIndex += 2;\n\t\t\t}\n\n\t\t\t// The normals on the lateral surface all have the same incline, i.e.\n\t\t\t// the \"elevation\" component (Y or Z depending on yUp) is constant.\n\t\t\t// Same principle goes for the \"base\" of these vectors, which will be\n\t\t\t// calculated such that a vector [base,elev] will be a unit vector.\n\t\t\tdr = (this._pBottomRadius - this._topRadius);\n\t\t\tlatNormElev = dr/this._height;\n\t\t\tlatNormBase = (latNormElev == 0)? 1 : this._height/dr;\n\n\t\t\t// lateral surface\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tvar a:number;\n\t\t\t\tvar b:number;\n\t\t\t\tvar c:number;\n\t\t\t\tvar d:number;\n\t\t\t\tvar na0:number, na1:number, naComp1:number, naComp2:number;\n\n\t\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\t\tradius = this._topRadius - ((j/this._pSegmentsH)*(this._topRadius - this._pBottomRadius));\n\t\t\t\t\tz = -(this._height/2) + (j/this._pSegmentsH*this._height);\n\n\t\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t\t// revolution vertex\n\t\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\t\tx = radius*Math.cos(revolutionAngle);\n\t\t\t\t\t\ty = radius*Math.sin(revolutionAngle);\n\t\t\t\t\t\tna0 = latNormBase*Math.cos(revolutionAngle);\n\t\t\t\t\t\tna1 = latNormBase*Math.sin(revolutionAngle);\n\n\t\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\t\tt2 = -na0;\n\t\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t\t\tnaComp1 = latNormElev;\n\t\t\t\t\t\t\tnaComp2 = na1;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt1 = -na0;\n\t\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t\t\tnaComp1 = na1;\n\t\t\t\t\t\t\tnaComp2 = latNormElev;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\t\t\t\t\t\t\tnormals[vidx] = na0;\n\t\t\t\t\t\t\tnormals[vidx + 1] = latNormElev;\n\t\t\t\t\t\t\tnormals[vidx + 2] = na1;\n\t\t\t\t\t\t\ttangents[vidx] = na1;\n\t\t\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\t\t\ttangents[vidx + 2] = t2;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t\t\tnormals[vidx] = na0;\n\t\t\t\t\t\t\tnormals[vidx + 1] = naComp1;\n\t\t\t\t\t\t\tnormals[vidx + 2] = naComp2;\n\t\t\t\t\t\t\ttangents[vidx] = -na1;\n\t\t\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\t\t\ttangents[vidx + 2] = t2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t\t// close triangle\n\t\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\t\ta = nextVertexIndex; // current\n\t\t\t\t\t\t\tb = nextVertexIndex - 1; // previous\n\t\t\t\t\t\t\tc = b - this._pSegmentsW - 1; // previous of last level\n\t\t\t\t\t\t\td = a - this._pSegmentsW - 1; // current of last level\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnextVertexIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._pSegmentsH + 1)*(this._pSegmentsW) + this._pSegmentsW;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\t//horizonal lines\n\n\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\tradius = this._topRadius - ((j/this._pSegmentsH)*(this._topRadius - this._pBottomRadius));\n\t\t\t\tz = this._height*(j/this._pSegmentsH - 0.5);\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = radius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = radius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t\t//vertical lines\n\t\t\t\t\t\tstartPositions[vidx] = endPositions[vidx - this._pSegmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 1] = endPositions[vidx + 1 - this._pSegmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 2] = endPositions[vidx + 2 - this._pSegmentsW*6];\n\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i < this._pSegmentsW) {\n\t\t\t\t\t\tstartPositions[vidx] = x;\n\t\t\t\t\t\tstartPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tstartPositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar x:number;\n\t\tvar y:number;\n\t\tvar revolutionAngle:number;\n\t\tvar uvs:Array;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// evaluate revolution steps\n\t\t\tvar revolutionAngleDelta:number = 2*Math.PI/this._pSegmentsW;\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// top\n\t\t\tif (this._topClosed) {\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = 0.5 + 0.5* -Math.cos(revolutionAngle);\n\t\t\t\t\ty = 0.5 + 0.5*Math.sin(revolutionAngle);\n\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleU; // central vertex\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = x*triangleGeometry.scaleU; // revolution vertex\n\t\t\t\t\tuvs[index++] = y*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bottom\n\t\t\tif (this._bottomClosed) {\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = 0.5 + 0.5*Math.cos(revolutionAngle);\n\t\t\t\t\ty = 0.5 + 0.5*Math.sin(revolutionAngle);\n\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleU; // central vertex\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = x*triangleGeometry.scaleU; // revolution vertex\n\t\t\t\t\tuvs[index++] = y*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// lateral surface\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t\t// revolution vertex\n\t\t\t\t\t\tuvs[index++] = ( i/this._pSegmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\t\tuvs[index++] = ( j/this._pSegmentsH )*triangleGeometry.scaleV;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCylinderPrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Plane primitive mesh.\n */\nclass PrimitivePlanePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\tprivate _width:number;\n\tprivate _height:number;\n\tprivate _doubleSided:boolean;\n\n\t/**\n\t * Creates a new Plane object.\n\t * @param width The width of the plane.\n\t * @param height The height of the plane.\n\t * @param segmentsW The number of segments that make up the plane along the X-axis.\n\t * @param segmentsH The number of segments that make up the plane along the Y or Z-axis.\n\t * @param yUp Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false).\n\t * @param doubleSided Defines whether the plane will be visible from both sides, with correct vertex normals.\n\t */\n\tconstructor(width:number = 100, height:number = 100, segmentsW:number = 1, segmentsH:number = 1, yUp:boolean = true, doubleSided:boolean = false)\n\t{\n\n\t\tsuper();\n\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._yUp = yUp;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._doubleSided = doubleSided;\n\n\t}\n\n\t/**\n\t * The number of segments that make up the plane along the X-axis. Defaults to 1.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or\n\t * false, respectively. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). Defaults to true.\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the plane will be visible from both sides, with correct vertex normals (as opposed to bothSides on Material). Defaults to false.\n\t */\n\tpublic get doubleSided():boolean\n\t{\n\t\treturn this._doubleSided;\n\t}\n\n\tpublic set doubleSided(value:boolean)\n\t{\n\t\tthis._doubleSided = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The width of the plane.\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tthis._width = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The height of the plane.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar x:number, y:number;\n\t\tvar numIndices:number;\n\t\tvar base:number;\n\t\tvar tw:number = this._segmentsW + 1;\n\t\tvar numVertices:number;\n\n\t\tvar vidx:number, fidx:number; // indices\n\n\t\tvar xi:number;\n\t\tvar yi:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tvar numVertices:number = (this._segmentsH + 1)*tw;\n\t\t\tvar positions:Array;\n\t\t\tvar normals:Array;\n\t\t\tvar tangents:Array;\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumVertices *= 2;\n\n\t\t\tnumIndices = this._segmentsH*this._segmentsW*6;\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumIndices *= 2;\n\n\t\t\tif (triangleGeometry.indices != null && numIndices == triangleGeometry.indices.length) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tif (numVertices == triangleGeometry.numVertices) {\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tfidx = 0;\n\n\t\t\tvidx = 0;\n\n\t\t\tfor (yi = 0; yi <= this._segmentsH; ++yi) {\n\n\t\t\t\tfor (xi = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\t\tx = (xi/this._segmentsW - .5)*this._width;\n\t\t\t\t\ty = (yi/this._segmentsH - .5)*this._height;\n\n\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tpositions[vidx + 1] = 0;\n\t\t\t\t\t\tpositions[vidx + 2] = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx + 1] = y;\n\t\t\t\t\t\tpositions[vidx + 2] = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tnormals[vidx + 1] = 1;\n\t\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\t\tnormals[vidx + 2] = -1;\n\t\t\t\t\t}\n\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// add vertex with same position, but with inverted normal & tangent\n\t\t\t\t\tif (this._doubleSided) {\n\n\t\t\t\t\t\tfor (var i:number = vidx; i < vidx + 3; ++i) {\n\t\t\t\t\t\t\tpositions[i] = positions[i - 3];\n\t\t\t\t\t\t\tnormals[i] = -normals[i - 3];\n\t\t\t\t\t\t\ttangents[i] = -tangents[i - 3];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif (xi != this._segmentsW && yi != this._segmentsH) {\n\n\t\t\t\t\t\tbase = xi + yi*tw;\n\t\t\t\t\t\tvar mult:number = this._doubleSided? 2 : 1;\n\n\t\t\t\t\t\tindices[fidx++] = base*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw)*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult;\n\t\t\t\t\t\tindices[fidx++] = base*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + 1)*mult;\n\n\t\t\t\t\t\tif (this._doubleSided) {\n\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = base*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = base*mult + 1;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._segmentsH + 1) + tw;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tvar hw:number = this._width/2;\n\t\t\tvar hh:number = this._height/2;\n\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tfidx = 0;\n\n\t\t\tvidx = 0;\n\n\t\t\tfor (yi = 0; yi <= this._segmentsH; ++yi) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = 0;\n\t\t\t\tstartPositions[vidx + 2] = yi*this._height - hh;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = 0;\n\t\t\t\tendPositions[vidx + 2] = yi*this._height - hh;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\n\t\t\tfor (xi = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\tstartPositions[vidx] = xi*this._width - hw;\n\t\t\t\tstartPositions[vidx + 1] = 0;\n\t\t\t\tstartPositions[vidx + 2] = -hh;\n\n\t\t\t\tendPositions[vidx] = xi*this._width - hw;\n\t\t\t\tendPositions[vidx + 1] = 0;\n\t\t\t\tendPositions[vidx + 2] = hh;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar uvs:Array;\n\t\tvar numVertices:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = ( this._segmentsH + 1 )*( this._segmentsW + 1 );\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumVertices *= 2;\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (triangleGeometry.uvs && numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t\tthis._pInvalidateGeometry()\n\t\t\t}\n\n\t\t\tvar index:number = 0;\n\n\t\t\tfor (var yi:number = 0; yi <= this._segmentsH; ++yi) {\n\n\t\t\t\tfor (var xi:number = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\t\tuvs[index] = (xi/this._segmentsW)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index + 1] = (1 - yi/this._segmentsH)*triangleGeometry.scaleV;\n\t\t\t\t\tindex += 2;\n\n\t\t\t\t\tif (this._doubleSided) {\n\t\t\t\t\t\tuvs[index] = (xi/this._segmentsW)*triangleGeometry.scaleU;\n\t\t\t\t\t\tuvs[index+1] = (1 - yi/this._segmentsH)*triangleGeometry.scaleV;\n\t\t\t\t\t\tindex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitivePlanePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport PrimitiveCylinderPrefab\t= require(\"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab\");\n\n/**\n * A UV RegularPolygon primitive mesh.\n */\nclass PrimitivePolygonPrefab extends PrimitiveCylinderPrefab implements IAsset\n{\n\n\t/**\n\t * The radius of the regular polygon.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The number of sides of the regular polygon.\n\t */\n\tpublic get sides():number\n\t{\n\t\treturn this._pSegmentsW;\n\t}\n\n\tpublic set sides(value:number)\n\t{\n\t\tthis.setSegmentsW(value);\n\t}\n\n\t/**\n\t * The number of subdivisions from the edge to the center of the regular polygon.\n\t */\n\tpublic get subdivisions():number\n\t{\n\t\treturn this._pSegmentsH;\n\t}\n\n\tpublic set subdivisions(value:number)\n\t{\n\t\tthis.setSegmentsH(value);\n\t}\n\n\t/**\n\t * Creates a new RegularPolygon disc object.\n\t * @param radius The radius of the regular polygon\n\t * @param sides Defines the number of sides of the regular polygon.\n\t * @param yUp Defines whether the regular polygon should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 100, sides:number = 16, yUp:boolean = true)\n\t{\n\t\tsuper(radius, 0, 0, sides, 1, true, false, false, yUp);\n\t}\n}\n\nexport = PrimitivePolygonPrefab;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport PrefabBase\t\t\t\t= require(\"awayjs-display/lib/prefabs/PrefabBase\");\n\n/**\n * PrimitivePrefabBase is an abstract base class for polytope prefabs, which are simple pre-built geometric shapes\n */\nclass PrimitivePrefabBase extends PrefabBase\n{\n\tpublic _geomDirty:boolean = true;\n\tpublic _uvDirty:boolean = true;\n\n\tprivate _material:MaterialBase;\n\tprivate _geometry:Geometry;\n\tprivate _subGeometry:SubGeometryBase;\n\tprivate _geometryType:string;\n\tprivate _geometryTypeDirty:boolean = true;\n\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.PRIMITIVE_PREFAB;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get geometryType():string\n\t{\n\t\treturn this._geometryType;\n\t}\n\t\n\tpublic set geometryType(value:string)\n\t{\n\t\tif (this._geometryType == value)\n\t\t\treturn;\n\n\t\tthis._geometryType = value;\n\t\t\n\t\tthis.invalidateGeometryType();\n\t}\n\n\tpublic get geometry():Geometry\n\t{\n\t\tthis._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\t/**\n\t * The material with which to render the primitive.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tthis._material = value;\n\n\t\tvar len:number = this._pObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\t( this._pObjects[i]).material = this._material;\n\t}\n\n\t/**\n\t * Creates a new PrimitivePrefabBase object.\n\t *\n\t * @param material The material with which to render the object\n\t */\n\tconstructor(material:MaterialBase = null, geometryType:string = \"triangleSubGeometry\")\n\t{\n\t\tsuper();\n\n\t\tthis._geometry = new Geometry();\n\t\tthis._material = material;\n\t\tthis._geometryType = geometryType;\n\t}\n\n\t/**\n\t * Builds the primitive's geometry when invalid. This method should not be called directly. The calling should\n\t * be triggered by the invalidateGeometry method (and in turn by updateGeometry).\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * Builds the primitive's uv coordinates when invalid. This method should not be called directly. The calling\n\t * should be triggered by the invalidateUVs method (and in turn by updateUVs).\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * Invalidates the primitive's geometry type, causing it to be updated when requested.\n\t */\n\tpublic invalidateGeometryType()\n\t{\n\t\tthis._geometryTypeDirty = true;\n\t\tthis._geomDirty = true;\n\t\tthis._uvDirty = true;\n\t}\n\t\n\t/**\n\t * Invalidates the primitive's geometry, causing it to be updated when requested.\n\t */\n\tpublic _pInvalidateGeometry()\n\t{\n\t\tthis._geomDirty = true;\n\t}\n\n\t/**\n\t * Invalidates the primitive's uv coordinates, causing them to be updated when requested.\n\t */\n\tpublic _pInvalidateUVs()\n\t{\n\t\tthis._uvDirty = true;\n\t}\n\n\t/**\n\t * Updates the subgeometry when invalid.\n\t */\n\tprivate updateGeometryType()\n\t{\n\t\t//remove any existing sub geometry\n\t\tif (this._subGeometry)\n\t\t\tthis._geometry.removeSubGeometry(this._subGeometry);\n\n\t\tif (this._geometryType == \"triangleSubGeometry\") {\n\t\t\tvar triangleGeometry:TriangleSubGeometry = new TriangleSubGeometry(true);\n\t\t\ttriangleGeometry.autoDeriveNormals = false;\n\t\t\ttriangleGeometry.autoDeriveTangents = false;\n\t\t\ttriangleGeometry.autoDeriveUVs = false;\n\t\t\tthis._geometry.addSubGeometry(triangleGeometry);\n\t\t\tthis._subGeometry = triangleGeometry;\n\t\t} else if (this._geometryType == \"lineSubGeometry\") {\n\t\t\tthis._geometry.addSubGeometry(this._subGeometry = new LineSubGeometry());\n\t\t}\n\n\t\tthis._geometryTypeDirty = false;\n\t}\n\n\t\n\t/**\n\t * Updates the geometry when invalid.\n\t */\n\tprivate updateGeometry()\n\t{\n\t\tthis._pBuildGeometry(this._subGeometry, this._geometryType);\n\n\t\tthis._geomDirty = false;\n\t}\n\n\t/**\n\t * Updates the uv coordinates when invalid.\n\t */\n\tprivate updateUVs()\n\t{\n\t\tthis._pBuildUVs(this._subGeometry, this._geometryType);\n\n\t\tthis._uvDirty = false;\n\t}\n\n\tpublic _iValidate()\n\t{\n\t\tif (this._geometryTypeDirty)\n\t\t\tthis.updateGeometryType();\n\t\t\n\t\tif (this._geomDirty)\n\t\t\tthis.updateGeometry();\n\n\t\tif (this._uvDirty)\n\t\t\tthis.updateUVs();\n\t}\n\n\n\tpublic _pCreateObject():DisplayObject\n\t{\n\t\tvar mesh:Mesh = new Mesh(this._geometry, this._material);\n\t\tmesh._iSourcePrefab = this;\n\n\t\treturn mesh;\n\t}\n\n\n//\t\tpublic _pCreateBatchObject():BatchObject\n//\t\t{\n//\t\t\tvar batch:BatchObject = new BatchObject(this._geometry, this._material);\n//\t\t\tbatch._iSourcePrefab = this;\n//\n//\t\t\treturn batch;\n//\t\t}\n}\n\nexport = PrimitivePrefabBase;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A UV Sphere primitive mesh.\n */\nclass PrimitiveSpherePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\n\t/**\n\t * The radius of the sphere.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the sphere. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the sphere. Defaults to 12.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Sphere object.\n\t *\n\t * @param radius The radius of the sphere.\n\t * @param segmentsW Defines the number of horizontal segments that make up the sphere.\n\t * @param segmentsH Defines the number of vertical segments that make up the sphere.\n\t * @param yUp Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, segmentsW:number = 16, segmentsH:number = 12, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._yUp = yUp;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar vidx:number, fidx:number; // indices\n\n\t\tvar comp1:number;\n\t\tvar comp2:number;\n\t\tvar numVertices:number;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tnumVertices = (this._segmentsH + 1)*(this._segmentsW + 1);\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.indices != null) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array((this._segmentsH - 1)*this._segmentsW*6);\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\tvar startIndex:number;\n\t\t\tvar t1:number;\n\t\t\tvar t2:number;\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tstartIndex = vidx;\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\t\t\t\t\tvar normLen:number = 1/Math.sqrt(x*x + y*y + z*z);\n\t\t\t\t\tvar tanLen:number = Math.sqrt(y*y + x*x);\n\n\t\t\t\t\tif (this._yUp) {\n\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\tpositions[vidx+1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[vidx+2] = positions[startIndex + 2];\n\t\t\t\t\t\tnormals[vidx] = normals[startIndex] + (x*normLen)*.5;\n\t\t\t\t\t\tnormals[vidx+1] = normals[startIndex + 1] + ( comp1*normLen)*.5;\n\t\t\t\t\t\tnormals[vidx+2] = normals[startIndex + 2] + (comp2*normLen)*.5;\n\t\t\t\t\t\ttangents[vidx] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[vidx+1] = t1;\n\t\t\t\t\t\ttangents[vidx+2] = t2;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx+1] = comp1;\n\t\t\t\t\t\tpositions[vidx+2] = comp2;\n\t\t\t\t\t\tnormals[vidx] = x*normLen;\n\t\t\t\t\t\tnormals[vidx+1] = comp1*normLen;\n\t\t\t\t\t\tnormals[vidx+2] = comp2*normLen;\n\t\t\t\t\t\ttangents[vidx] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[vidx+1] = t1;\n\t\t\t\t\t\ttangents[vidx+2] = t2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\n\t\t\t\t\t\tvar a:number = (this._segmentsW + 1)*j + i;\n\t\t\t\t\t\tvar b:number = (this._segmentsW + 1)*j + i - 1;\n\t\t\t\t\t\tvar c:number = (this._segmentsW + 1)*(j - 1) + i - 1;\n\t\t\t\t\t\tvar d:number = (this._segmentsW + 1)*(j - 1) + i;\n\n\t\t\t\t\t\tif (j == this._segmentsH) {\n\n\t\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\n\t\t\t\t\t\t} else if (j == 1) {\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvidx += 3;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._segmentsH - 1)*this._segmentsW*2;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\t//horizonal lines\n\t\t\t\t\t\tif (j < this._segmentsH) {\n\t\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//vertical lines\n\t\t\t\t\t\tstartPositions[vidx] = endPositions[vidx - this._segmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 1] = endPositions[vidx + 1 - this._segmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 2] = endPositions[vidx + 2 - this._segmentsW*6];\n\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i < this._segmentsW && j > 0 && j < this._segmentsH) {\n\t\t\t\t\t\tstartPositions[vidx] = x;\n\t\t\t\t\t\tstartPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tstartPositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number;\n\t\tvar numVertices:number = (this._segmentsH + 1)*(this._segmentsW + 1);\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = (this._segmentsH + 1)*(this._segmentsW + 1);\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.uvs != null) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t}\n\n\t\t\tvar index:number = 0;\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsH )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveSpherePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A UV Cylinder primitive mesh.\n */\nclass PrimitiveTorusPrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _tubeRadius:number;\n\tprivate _segmentsR:number;\n\tprivate _segmentsT:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the torus.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the inner tube of the torus.\n\t */\n\tpublic get tubeRadius():number\n\t{\n\t\treturn this._tubeRadius;\n\t}\n\n\tpublic set tubeRadius(value:number)\n\t{\n\t\tthis._tubeRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the torus. Defaults to 16.\n\t */\n\tpublic get segmentsR():number\n\t{\n\t\treturn this._segmentsR;\n\t}\n\n\tpublic set segmentsR(value:number)\n\t{\n\t\tthis._segmentsR = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the torus. Defaults to 8.\n\t */\n\tpublic get segmentsT():number\n\t{\n\t\treturn this._segmentsT;\n\t}\n\n\tpublic set segmentsT(value:number)\n\t{\n\t\tthis._segmentsT = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Torus object.\n\t * @param radius The radius of the torus.\n\t * @param tuebRadius The radius of the inner tube of the torus.\n\t * @param segmentsR Defines the number of horizontal segments that make up the torus.\n\t * @param segmentsT Defines the number of vertical segments that make up the torus.\n\t * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, tubeRadius:number = 50, segmentsR:number = 16, segmentsT:number = 8, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._tubeRadius = tubeRadius;\n\t\tthis._segmentsR = segmentsR;\n\t\tthis._segmentsT = segmentsT;\n\t\tthis._yUp = yUp;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number, j:number;\n\t\tvar x:number, y:number, z:number, nx:number, ny:number, nz:number, revolutionAngleR:number, revolutionAngleT:number;\n\t\tvar vidx:number;\n\t\tvar fidx:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsT + 1)*(this._segmentsR + 1); // segmentsT + 1 because of closure, segmentsR + 1 because of closure\n\t\t\tnumIndices = this._segmentsT*this._segmentsR*6; // each level has segmentR quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// evaluate revolution steps\n\t\t\tvar revolutionAngleDeltaR:number = 2*Math.PI/this._segmentsR;\n\t\t\tvar revolutionAngleDeltaT:number = 2*Math.PI/this._segmentsT;\n\n\t\t\tvar comp1:number, comp2:number;\n\t\t\tvar t1:number, t2:number, n1:number, n2:number;\n\t\t\tvar startIndex:number = 0;\n\t\t\tvar nextVertexIndex:number = 0;\n\n\t\t\t// surface\n\t\t\tvar a:number, b:number, c:number, d:number, length:number;\n\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\n\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngleR = i*revolutionAngleDeltaR;\n\t\t\t\t\trevolutionAngleT = j*revolutionAngleDeltaT;\n\n\t\t\t\t\tlength = Math.cos(revolutionAngleT);\n\t\t\t\t\tnx = length*Math.cos(revolutionAngleR);\n\t\t\t\t\tny = length*Math.sin(revolutionAngleR);\n\t\t\t\t\tnz = Math.sin(revolutionAngleT);\n\n\t\t\t\t\tx = this._radius*Math.cos(revolutionAngleR) + this._tubeRadius*nx;\n\t\t\t\t\ty = this._radius*Math.sin(revolutionAngleR) + this._tubeRadius*ny;\n\t\t\t\t\tz = (j == this._segmentsT)? 0 : this._tubeRadius*nz;\n\n\t\t\t\t\tif (this._yUp) {\n\n\t\t\t\t\t\tn1 = -nz;\n\t\t\t\t\t\tn2 = ny;\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tn1 = ny;\n\t\t\t\t\t\tn2 = nz;\n\t\t\t\t\t\tt1 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsR) {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = nx;\n\t\t\t\t\tnormals[vidx + 1] = n1;\n\t\t\t\t\tnormals[vidx + 2] = n2;\n\t\t\t\t\ttangents[vidx] = -(length? ny/length : y/this._radius);\n\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\ttangents[vidx + 2] = t2;\n\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// close triangle\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\ta = nextVertexIndex; // current\n\t\t\t\t\t\tb = nextVertexIndex - 1; // previous\n\t\t\t\t\t\tc = b - this._segmentsR - 1; // previous of last level\n\t\t\t\t\t\td = a - this._segmentsR - 1; // current of last level\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t}\n\n\t\t\t\t\tnextVertexIndex++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsR )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsT )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveTorusPrefab;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport CoordinateSystem\t\t\t\t= require(\"awayjs-core/lib/projections/CoordinateSystem\");\n\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport CSSRendererBase\t\t\t\t= require(\"awayjs-display/lib/render/CSSRendererBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\n\n\n/**\n * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the\n * materials assigned to them.\n *\n * @class away.render.DefaultRenderer\n */\nclass CSSDefaultRenderer extends CSSRendererBase implements IRenderer\n{\n\tprivate _container:HTMLDivElement;\n\tprivate _context:HTMLDivElement;\n\tprivate _contextStyle:MSStyleCSSProperties;\n\tprivate _contextMatrix:Matrix3D = new Matrix3D();\n\t\n\tprivate _activeMaterial:CSSMaterialBase;\n\tprivate _skyboxProjection:Matrix3D = new Matrix3D();\n\tprivate _transform:Matrix3D = new Matrix3D();\n\n\t/**\n\t * Creates a new CSSDefaultRenderer object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t//create container for the renderer\n\t\tthis._container = document.createElement(\"div\");\n\t\tthis._container.style.overflow = \"hidden\";\n\t\tthis._container.style.position = \"absolute\";\n\t\t\n\t\t//add container to body\n\t\tdocument.body.appendChild(this._container);\n\n\t\t//create conxtext for the renderer\n\t\tthis._context = document.createElement(\"div\");\n\t\tthis._contextStyle = this._context.style;\n\t\tthis._contextStyle.position = \"absolute\";\n\t\tthis._contextStyle.transformStyle\n\t\t\t= this._contextStyle[\"-webkit-transform-style\"]\n\t\t\t= this._contextStyle[\"-moz-transform-style\"]\n\t\t\t= this._contextStyle[\"-o-transform-style\"]\n\t\t\t= this._contextStyle[\"-ms-transform-style\"] = \"preserve-3d\";\n\t\tthis._contextStyle.transformOrigin\n\t\t\t= this._contextStyle[\"-webkit-transform-origin\"]\n\t\t\t= this._contextStyle[\"-moz-transform-origin\"]\n\t\t\t= this._contextStyle[\"-o-transform-origin\"]\n\t\t\t= this._contextStyle[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t//add context to container\n\t\tthis._container.appendChild(this._context);\n\t}\n\n\t/**\n\t *\n\t * @param entityCollector\n\t */\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tsuper.render(entityCollector);\n\n\t\tif (this._pBackBufferInvalid)// reset or update render settings\n\t\t\tthis.pUpdateBackBuffer();\n\n\t\tthis._iRender( entityCollector);\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic pDraw(entityCollector:EntityCollector)\n\t{\n//\t\t\tif (entityCollector.skyBox) {\n//\t\t\t\tif (this._activeMaterial)\n//\t\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n//\n//\t\t\t\tthis._activeMaterial = null;\n//\n//\t\t\t\tthis._pContext.setDepthTest(false, away.gl.ContextGLCompareMode.ALWAYS);\n//\t\t\t\tthis.drawSkybox(entityCollector);\n//\n//\t\t\t}\n//\n//\t\t\tvar which:number = target? DefaultRenderer.SCREEN_PASSES : DefaultRenderer.ALL_PASSES;\n\n\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\n\t\tfor (var i:number = 0; i < sheet.cssRules.length; i++) {\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[i]).style;\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = (entityCollector.camera.projection.coordinateSystem == CoordinateSystem.RIGHT_HANDED)? \"\" : \"scale3d(1, -1, 1) translateY(-\" + style.height + \")\";\n\t\t}\n\n\t\tthis.drawRenderables(this._renderableHead, entityCollector);\n\n//\t\t\tif (this._activeMaterial)\n//\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n\n\t\tthis._activeMaterial = null;\n\t}\n\n\t/**\n\t * Updates the backbuffer properties.\n\t */\n\tpublic pUpdateBackBuffer()\n\t{\n\t\tthis._container.style.width = this._width + \"px\";\n\t\tthis._container.style.height = this._height + \"px\";\n\t\tthis._container.style.clip = \"rect(0px, \" + this._width + \"px, \" + this._height + \"px, 0px)\";\n\n\t\t//update context matrix\n\t\tthis._contextMatrix.rawData[0] = this._width/2;\n\t\tthis._contextMatrix.rawData[5] = -this._height/2;\n\t\tthis._contextMatrix.rawData[10] = -1; //fix for innaccurate z-sort\n\t\tthis._contextMatrix.rawData[12] = this._width/2;\n\t\tthis._contextMatrix.rawData[13] = this._height/2;\n\n\t\t//update context tranform\n\t\tthis._contextStyle.transform\n\t\t\t= this._contextStyle[\"-webkit-transform\"]\n\t\t\t= this._contextStyle[\"-moz-transform\"]\n\t\t\t= this._contextStyle[\"-o-transform\"]\n\t\t\t= this._contextStyle[\"-ms-transform\"] = this._contextMatrix.toString();\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * Draw the skybox if present.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawSkybox(entityCollector:CSSEntityCollector)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Draw a list of renderables.\n\t * @param renderables The renderables to draw.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawRenderables(item:CSSRenderableBase, entityCollector:EntityCollector)\n\t{\n\t\tvar viewProjection:Matrix3D = entityCollector.camera.viewProjection.clone();\n\n\t\twhile (item) {\n\t\t\tthis._activeMaterial = item.materialOwner.material;\n\n\t\t\t//serialise transform and apply to html element\n\t\t\tthis._transform.copyRawDataFrom(item.renderSceneTransform.rawData);\n\t\t\tthis._transform.append(viewProjection);\n\n\t\t\tvar style:MSStyleCSSProperties = item.htmlElement.style;\n\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = this._transform.toString();\n\n\t\t\tstyle.transformStyle\n\t\t\t\t= style[\"-webkit-transform-style\"]\n\t\t\t\t= style[\"-moz-transform-style\"]\n\t\t\t\t= style[\"-o-transform-style\"]\n\t\t\t\t= style[\"-ms-transform-style\"] = \"preserve-3d\";\n\n\t\t\t//check if child requires adding to the view\n\t\t\tif (!this._context.contains(item.htmlElement))\n\t\t\t\tthis._context.appendChild(item.htmlElement);\n\n\t\t\titem = item.next;\n\t\t}\n\n//\t\t\tvar numPasses:number;\n//\t\t\tvar j:number;\n//\t\t\tvar camera:away.entities.Camera = entityCollector.camera;\n//\t\t\tvar item2:away.render.CSSRenderableBase;\n//\n//\t\t\twhile (item) {\n//\t\t\t\tthis._activeMaterial = item.material;\n//\n//\t\t\t\tthis._activeMaterial.iUpdateMaterial(this._pContext);\n//\n//\t\t\t\tnumPasses = this._activeMaterial._iNumPasses;\n//\n//\t\t\t\tj = 0;\n//\n//\t\t\t\tdo {\n//\t\t\t\t\titem2 = item;\n//\n//\t\t\t\t\tvar rttMask:number = this._activeMaterial.iPassRendersToTexture(j)? 1 : 2;\n//\n//\t\t\t\t\tif ((rttMask & which) != 0) {\n//\t\t\t\t\t\tthis._activeMaterial.iActivatePass(j, this._pStageGL, camera);\n//\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\tthis._activeMaterial.iRenderPass(j, item2, this._pStageGL, entityCollector);\n//\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.material == this._activeMaterial);\n//\n//\t\t\t\t\t\tthis._activeMaterial.iDeactivatePass(j, this._pStageGL);\n//\n//\t\t\t\t\t} else {\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.renderable.material == this._activeMaterial);\n//\t\t\t\t\t}\n//\t\t\t\t} while (++j < numPasses);\n//\n//\t\t\t\titem = item2;\n//\t\t\t}\n\t}\n\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\t//TODO\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\treturn new CSSEntityCollector();\n\t}\n}\n\nexport = CSSDefaultRenderer;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport LineSubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport TriangleSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport CSSBillboardRenderable\t\t= require(\"awayjs-display/lib/pool/CSSBillboardRenderable\");\nimport CSSLineSegmentRenderable\t\t= require(\"awayjs-display/lib/pool/CSSLineSegmentRenderable\");\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport RenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/RenderablePool\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\nimport RendererEvent\t\t\t\t= require(\"awayjs-display/lib/events/RendererEvent\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\n/**\n * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.RendererBase\n */\nclass CSSRendererBase extends EventDispatcher\n{\n\tprivate _billboardRenderablePool:RenderablePool;\n\tprivate _lineSegmentRenderablePool:RenderablePool;\n\n\tpublic _pCamera:Camera;\n\tpublic _iEntryPoint:Vector3D;\n\tpublic _pCameraForward:Vector3D;\n\n\tprivate _backgroundR:number = 0;\n\tprivate _backgroundG:number = 0;\n\tprivate _backgroundB:number = 0;\n\tprivate _backgroundAlpha:number = 1;\n\tprivate _shareContext:boolean = false;\n\n\tpublic _pBackBufferInvalid:boolean = true;\n\tpublic _depthTextureInvalid:boolean = true;\n\n\tpublic _renderableHead:CSSRenderableBase;\n\n\tpublic _width:number;\n\tpublic _height:number;\n\n\tprivate _viewPort:Rectangle = new Rectangle();\n\tprivate _viewportDirty:boolean;\n\tprivate _scissorRect:Rectangle = new Rectangle();\n\tprivate _scissorDirty:boolean;\n\n\tprivate _localPos:Point = new Point();\n\tprivate _globalPos:Point = new Point();\n\n\tprivate _scissorUpdated:RendererEvent;\n\tprivate _viewPortUpdated:RendererEvent;\n\n\t/**\n\t * A viewPort rectangle equivalent of the StageGL size and position.\n\t */\n\tpublic get viewPort():Rectangle\n\t{\n\t\treturn this._viewPort;\n\t}\n\n\t/**\n\t * A scissor rectangle equivalent of the view size and position.\n\t */\n\tpublic get scissorRect():Rectangle\n\t{\n\t\treturn this._scissorRect;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._localPos.x;\n\t}\n\n\tpublic set x(value:number)\n\t{\n\t\tif (this.x == value)\n\t\t\treturn;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._localPos.y;\n\t}\n\n\tpublic set y(value:number)\n\t{\n\t\tif (this.y == value)\n\t\t\treturn;\n\n\t\tthis._globalPos.y = this._localPos.y = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tif (this._width == value)\n\t\t\treturn;\n\n\t\tthis._width = value;\n\t\tthis._scissorRect.width = value;\n\t\tthis._viewPort.width = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tif (this._height == value)\n\t\t\treturn;\n\n\t\tthis._height = value;\n\t\tthis._scissorRect.height = value;\n\t\tthis._viewPort.height = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic renderableSorter:IEntitySorter;\n\n\t/**\n\t * Creates a new RendererBase object.\n\t */\n\tconstructor(renderToTexture:boolean = false, forceSoftware:boolean = false, profile:string = \"baseline\")\n\t{\n\t\tsuper();\n\n\t\tthis._billboardRenderablePool = RenderablePool.getPool(CSSBillboardRenderable);\n\t\tthis._lineSegmentRenderablePool = RenderablePool.getPool(CSSLineSegmentRenderable);\n\n\t\tthis._viewPort = new Rectangle();\n\n\t\tif (this._width == 0)\n\t\t\tthis.width = window.innerWidth;\n\n\t\tif (this._height == 0)\n\t\t\tthis.height = window.innerHeight;\n\t}\n\n\t/**\n\t * The background color's red component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundR():number\n\t{\n\t\treturn this._backgroundR;\n\t}\n\n\tpublic set _iBackgroundR(value:number)\n\t{\n\t\tif (this._backgroundR == value)\n\t\t\treturn;\n\n\t\tthis._backgroundR = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's green component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundG():number\n\t{\n\t\treturn this._backgroundG;\n\t}\n\n\tpublic set _iBackgroundG(value:number)\n\t{\n\t\tif (this._backgroundG == value)\n\t\t\treturn;\n\n\t\tthis._backgroundG = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's blue component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundB():number\n\t{\n\t\treturn this._backgroundB;\n\t}\n\n\tpublic set _iBackgroundB(value:number)\n\t{\n\t\tif (this._backgroundB == value)\n\t\t\treturn;\n\n\t\tthis._backgroundB = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\tpublic get shareContext():boolean\n\t{\n\t\treturn this._shareContext;\n\t}\n\n\tpublic set shareContext(value:boolean)\n\t{\n\t\tif (this._shareContext == value)\n\t\t\treturn;\n\n\t\tthis._shareContext = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t * Disposes the resources used by the RendererBase.\n\t */\n\tpublic dispose()\n\t{\n\t\t/*\n\t\t if (_backgroundImageRenderer) {\n\t\t _backgroundImageRenderer.dispose();\n\t\t _backgroundImageRenderer = null;\n\t\t }\n\t\t */\n\t}\n\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tthis._viewportDirty = false;\n\t\tthis._scissorDirty = false;\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic _iRender(entityCollector:EntityCollector, target:TextureProxyBase = null, scissorRect:Rectangle = null, surfaceSelector:number = 0)\n\t{\n\t\tif (!entityCollector.entityHead)\n\t\t\treturn;\n\n\t\tthis.pExecuteRender(entityCollector, scissorRect);\n\t}\n\n\tpublic _iRenderCascades(entityCollector:ICollector, target:TextureProxyBase, numCascades:number, scissorRects:Array, cameras:Array)\n\t{\n\n\t}\n\tpublic pCollectRenderables(entityCollector:ICollector)\n\t{\n\t\t//reset head values\n\t\tthis._renderableHead = null;\n\n\t\t//grab entity head\n\t\tvar item:EntityListItem = entityCollector.entityHead;\n\n\t\t//set temp values for entry point and camera forward vector\n\t\tthis._pCamera = entityCollector.camera;\n\t\tthis._iEntryPoint = this._pCamera.scenePosition;\n\t\tthis._pCameraForward = this._pCamera.transform.forwardVector;\n\n\t\t//iterate through all entities\n\t\twhile (item) {\n\t\t\titem.entity._iCollectRenderables(this);\n\t\t\titem = item.next;\n\t\t}\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic pExecuteRender(entityCollector:CSSEntityCollector, scissorRect:Rectangle = null)\n\t{\n\t\tthis.pCollectRenderables(entityCollector);\n\n\t\tthis.pDraw(entityCollector);\n\t}\n\n\t/**\n\t * Performs the actual drawing of dom objects to the target.\n\t *\n\t * @param entityCollector The EntityCollector object containing the potentially visible dom objects.\n\t */\n\tpublic pDraw(entityCollector:CSSEntityCollector)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get _iBackgroundAlpha():number\n\t{\n\t\treturn this._backgroundAlpha;\n\t}\n\n\tpublic set _iBackgroundAlpha(value:number)\n\t{\n\t\tif (this._backgroundAlpha == value)\n\t\t\treturn;\n\n\t\tthis._backgroundAlpha = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t *\n\t * @param billboard\n\t */\n\tpublic applyBillboard(billboard:Billboard)\n\t{\n\t\tthis._applyRenderable( this._billboardRenderablePool.getItem(billboard));\n\t}\n\n\t/**\n\t *\n\t * @param lineSubMesh\n\t */\n\tpublic applyLineSubMesh(lineSubMesh:LineSubMesh)\n\t{\n\t\t//this._applyRenderable( this._billboardRenderablePool.getItem(lineSegment));\n\t}\n\n\t/**\n\t *\n\t * @param skybox\n\t */\n\tpublic applySkybox(skybox:Skybox)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tpublic applyTriangleSubMesh(triangleSubMesh:TriangleSubMesh)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\tprivate _applyRenderable(renderable:CSSRenderableBase)\n\t{\n\t\tvar material:CSSMaterialBase = renderable.materialOwner.material;\n\t\tvar entity:IEntity = renderable.sourceEntity;\n\t\tvar position:Vector3D = entity.scenePosition;\n\n\t\tif (material) {\n\t\t\t//set ids for faster referencing\n\t\t\trenderable.materialId = material._iMaterialId;\n//\t\t\t\trenderable.renderOrderId = material._iRenderOrderId;\n\t\t\trenderable.cascaded = false;\n\n\t\t\t// project onto camera's z-axis\n\t\t\tposition = this._iEntryPoint.subtract(position);\n\t\t\trenderable.zIndex = entity.zOffset - position.dotProduct(this._pCameraForward);\n\n\t\t\t//store reference to scene transform\n\t\t\trenderable.renderSceneTransform = renderable.sourceEntity.getRenderSceneTransform(this._pCamera);\n\n\t\t\t//store reference to next item in list\n\t\t\trenderable.next = this._renderableHead;\n\t\t\tthis._renderableHead = renderable;\n\t\t}\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyScissorUpdate()\n\t{\n\t\tif (this._scissorDirty)\n\t\t\treturn;\n\n\t\tthis._scissorDirty = true;\n\n\t\tif (!this._scissorUpdated)\n\t\t\tthis._scissorUpdated = new RendererEvent(RendererEvent.SCISSOR_UPDATED);\n\n\t\tthis.dispatchEvent(this._scissorUpdated);\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyViewportUpdate()\n\t{\n\t\tif (this._viewportDirty)\n\t\t\treturn;\n\n\t\tthis._viewportDirty = true;\n\n\t\tif (!this._viewPortUpdated)\n\t\t\tthis._viewPortUpdated = new RendererEvent(RendererEvent.VIEWPORT_UPDATED);\n\n\t\tthis.dispatchEvent(this._viewPortUpdated);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateGlobalPos()\n\t{\n\t\tthis._viewPort.x = this._globalPos.x;\n\t\tthis._viewPort.y = this._globalPos.y;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = CSSRendererBase;","import IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\n\n/**\n * @class away.sort.RenderableMergeSort\n */\nclass RenderableMergeSort implements IEntitySorter\n{\n\tpublic sortBlendedRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable;\n\t\tvar slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortBlendedRenderables(head);\n\t\theadB = this.sortBlendedRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB) {\n\t\t\tif (head.zIndex < headB.zIndex) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result)\n\t\t\t\tresult = l; else\n\t\t\t\tcurr.next = l;\n\n\t\t\tcurr = l;\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n\n\tpublic sortOpaqueRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable, slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortOpaqueRenderables(head);\n\t\theadB = this.sortOpaqueRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\t\tvar cmp:number = 0;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB && head != null && headB != null) {\n\n\t\t\t// first sort per render order id (reduces program3D switches),\n\t\t\t// then on material id (reduces setting props),\n\t\t\t// then on zIndex (reduces overdraw)\n\t\t\tvar aid:number = head.renderOrderId;\n\t\t\tvar bid:number = headB.renderOrderId;\n\n\t\t\tif (aid == bid) {\n\t\t\t\tvar ma:number = head.materialId;\n\t\t\t\tvar mb:number = headB.materialId;\n\n\t\t\t\tif (ma == mb) {\n\t\t\t\t\tif (head.zIndex < headB.zIndex)\n\t\t\t\t\t\tcmp = 1; else\n\t\t\t\t\t\tcmp = -1;\n\t\t\t\t} else if (ma > mb) {\n\t\t\t\t\tcmp = 1;\n\t\t\t\t} else {\n\t\t\t\t\tcmp = -1;\n\t\t\t\t}\n\t\t\t} else if (aid > bid) {\n\t\t\t\tcmp = 1;\n\t\t\t} else {\n\t\t\t\tcmp = -1;\n\t\t\t}\n\n\t\t\tif (cmp < 0) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result) {\n\t\t\t\tresult = l;\n\t\t\t\tcurr = l;\n\t\t\t} else {\n\t\t\t\tcurr.next = l;\n\t\t\t\tcurr = l;\n\t\t\t}\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n}\n\nexport = RenderableMergeSort;","/**\n * The AntiAliasType class provides values for anti-aliasing in the\n * away.text.TextField class.\n */\nclass AntiAliasType\n{\n\t/**\n\t * Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing\n\t * allows font faces to be rendered at very high quality at small sizes. It\n\t * is best used with applications that have a lot of small text. Advanced\n\t * anti-aliasing is not recommended for very large fonts(larger than 48\n\t * points). This constant is used for the antiAliasType property\n\t * in the TextField class. Use the syntax\n\t * AntiAliasType.ADVANCED.\n\t */\n\tpublic static ADVANCED:string = \"advanced\";\n\n\t/**\n\t * Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and\n\t * earlier. This setting is recommended for applications that do not have a\n\t * lot of text. This constant is used for the antiAliasType\n\t * property in the TextField class. Use the syntax\n\t * AntiAliasType.NORMAL.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n}\n\nexport = AntiAliasType;","/**\n * The GridFitType class defines values for grid fitting in the TextField class.\n */\nclass GridFitType\n{\n\t/**\n\t * Doesn't set grid fitting. Horizontal and vertical lines in the glyphs are\n\t * not forced to the pixel grid. This constant is used in setting the\n\t * gridFitType property of the TextField class. This is often a\n\t * good setting for animation or for large font sizes. Use the syntax\n\t * GridFitType.NONE.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Fits strong horizontal and vertical lines to the pixel grid. This constant\n\t * is used in setting the gridFitType property of the TextField\n\t * class. This setting only works for left-justified text fields and acts\n\t * like the GridFitType.SUBPIXEL constant in static text. This\n\t * setting generally provides the best readability for left-aligned text. Use\n\t * the syntax GridFitType.PIXEL.\n\t */\n\tpublic static PIXEL:string = \"pixel\";\n\n\t/**\n\t * Fits strong horizontal and vertical lines to the sub-pixel grid on LCD\n\t * monitors. (Red, green, and blue are actual pixels on an LCD screen.) This\n\t * is often a good setting for right-aligned or center-aligned dynamic text,\n\t * and it is sometimes a useful tradeoff for animation vs. text quality. This\n\t * constant is used in setting the gridFitType property of the\n\t * TextField class. Use the syntax GridFitType.SUBPIXEL.\n\t */\n\tpublic static SUBPIXEL:string = \"subpixel\";\n}\n\nexport = GridFitType;","/**\n * The TextFieldAutoSize class is an enumeration of constant values used in\n * setting the autoSize property of the TextField class.\n */\nclass TextFieldAutoSize\n{\n\t/**\n\t * Specifies that the text is to be treated as center-justified text. Any\n\t * resizing of a single line of a text field is equally distributed to both\n\t * the right and left sides.\n\t */\n\tpublic static CENTER:string = \"center\";\n\n\t/**\n\t * Specifies that the text is to be treated as left-justified text, meaning\n\t * that the left side of the text field remains fixed and any resizing of a\n\t * single line is on the right side.\n\t */\n\tpublic static LEFT:string = \"left\";\n\n\t/**\n\t * Specifies that no resizing is to occur.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Specifies that the text is to be treated as right-justified text, meaning\n\t * that the right side of the text field remains fixed and any resizing of a\n\t * single line is on the left side.\n\t */\n\tpublic static RIGHT:string = \"right\";\n}\n\nexport = TextFieldAutoSize;","/**\n * The TextFieldType class is an enumeration of constant values used in setting the\n * type property of the TextField class.\n *\n * @see away.entities.TextField#type\n */\nclass TextFieldType\n{\n\t/**\n\t * Used to specify a dynamic TextField.\n\t */\n\tpublic static DYNAMIC:string = \"dynamic\";\n\n\t/**\n\t * Used to specify an input TextField.\n\t */\n\tpublic static INPUT:string = \"input\";\n}\n\nexport = TextFieldType;","/**\n * The TextFormatAlign class provides values for text alignment in the\n * TextFormat class.\n */\nclass TextFormatAlign\n{\n\t/**\n\t * Constant; centers the text in the text field. Use the syntax\n\t * TextFormatAlign.CENTER.\n\t */\n\tpublic CENTER:string = \"center\";\n\n\t/**\n\t * Constant; justifies text within the text field. Use the syntax\n\t * TextFormatAlign.JUSTIFY.\n\t */\n\tpublic JUSTIFY:string = \"justify\";\n\n\t/**\n\t * Constant; aligns text to the left within the text field. Use the syntax\n\t * TextFormatAlign.LEFT.\n\t */\n\tpublic LEFT:string = \"left\";\n\n\t/**\n\t * Constant; aligns text to the right within the text field. Use the syntax\n\t * TextFormatAlign.RIGHT.\n\t */\n\tpublic RIGHT:string = \"right\";\n}\n\nexport = TextFormatAlign;","/**\n * The TextFormat class represents character formatting information. Use the\n * TextFormat class to create specific text formatting for text fields. You\n * can apply text formatting to both static and dynamic text fields. The\n * properties of the TextFormat class apply to device and embedded fonts.\n * However, for embedded fonts, bold and italic text actually require specific\n * fonts. If you want to display bold or italic text with an embedded font,\n * you need to embed the bold and italic variations of that font.\n *\n *

You must use the constructor new TextFormat() to create a\n * TextFormat object before setting its properties. When you apply a\n * TextFormat object to a text field using the\n * TextField.defaultTextFormat property or the\n * TextField.setTextFormat() method, only its defined properties\n * are applied. Use the TextField.defaultTextFormat property to\n * apply formatting BEFORE you add text to the TextField, and the\n * setTextFormat() method to add formatting AFTER you add text to\n * the TextField. The TextFormat properties are null\n * by default because if you don't provide values for the properties, Flash\n * Player uses its own default formatting. The default formatting that Flash\n * Player uses for each property(if property's value is null) is\n * as follows:

\n *\n *

The default formatting for each property is also described in each\n * property description.

\n */\nclass TextFormat\n{\n\n\t/**\n\t * Indicates the alignment of the paragraph. Valid values are TextFormatAlign\n\t * constants.\n\t *\n\t * @default TextFormatAlign.LEFT\n\t * @throws ArgumentError The align specified is not a member of\n\t * flash.text.TextFormatAlign.\n\t */\n\tpublic align:string;\n\n\t/**\n\t * Indicates the block indentation in pixels. Block indentation is applied to\n\t * an entire block of text; that is, to all lines of the text. In contrast,\n\t * normal indentation(TextFormat.indent) affects only the first\n\t * line of each paragraph. If this property is null, the\n\t * TextFormat object does not specify block indentation(block indentation is\n\t * 0).\n\t */\n\tpublic blockIndent:number;\n\n\t/**\n\t * Specifies whether the text is boldface. The default value is\n\t * null, which means no boldface is used. If the value is\n\t * true, then the text is boldface.\n\t */\n\tpublic bold:boolean;\n\n\t/**\n\t * Indicates that the text is part of a bulleted list. In a bulleted list,\n\t * each paragraph of text is indented. To the left of the first line of each\n\t * paragraph, a bullet symbol is displayed. The default value is\n\t * null, which means no bulleted list is used.\n\t */\n\tpublic bullet:boolean;\n\n\t/**\n\t * Indicates the color of the text. A number containing three 8-bit RGB\n\t * components; for example, 0xFF0000 is red, and 0x00FF00 is green. The\n\t * default value is null, which means that Flash Player uses the\n\t * color black(0x000000).\n\t */\n\tpublic color:boolean;\n\n\t/**\n\t * The name of the font for text in this text format, as a string. The\n\t * default value is null, which means that Flash Player uses\n\t * Times New Roman font for the text.\n\t */\n\tpublic font:string;\n\n\t/**\n\t * Indicates the indentation from the left margin to the first character in\n\t * the paragraph. The default value is null, which indicates\n\t * that no indentation is used.\n\t */\n\tpublic indent:number;\n\n\t/**\n\t * Indicates whether text in this text format is italicized. The default\n\t * value is null, which means no italics are used.\n\t */\n\tpublic italic:boolean;\n\n\t/**\n\t * A Boolean value that indicates whether kerning is enabled\n\t * (true) or disabled(false). Kerning adjusts the\n\t * pixels between certain character pairs to improve readability, and should\n\t * be used only when necessary, such as with headings in large fonts. Kerning\n\t * is supported for embedded fonts only.\n\t *\n\t *

Certain fonts such as Verdana and monospaced fonts, such as Courier\n\t * New, do not support kerning.

\n\t *\n\t *

The default value is null, which means that kerning is not\n\t * enabled.

\n\t */\n\tpublic kerning:boolean;\n\n\t/**\n\t * An integer representing the amount of vertical space(called\n\t * leading) between lines. The default value is null,\n\t * which indicates that the amount of leading used is 0.\n\t */\n\tpublic leading:number;\n\n\t/**\n\t * The left margin of the paragraph, in pixels. The default value is\n\t * null, which indicates that the left margin is 0 pixels.\n\t */\n\tpublic leftMargin:number;\n\n\t/**\n\t * A number representing the amount of space that is uniformly distributed\n\t * between all characters. The value specifies the number of pixels that are\n\t * added to the advance after each character. The default value is\n\t * null, which means that 0 pixels of letter spacing is used.\n\t * You can use decimal values such as 1.75.\n\t */\n\tpublic letterSpacing:number;\n\n\t/**\n\t * The right margin of the paragraph, in pixels. The default value is\n\t * null, which indicates that the right margin is 0 pixels.\n\t */\n\tpublic rightMargin:number;\n\n\t/**\n\t * The size in pixels of text in this text format. The default value is\n\t * null, which means that a size of 12 is used.\n\t */\n\tpublic size:number;\n\n\t/**\n\t * Specifies custom tab stops as an array of non-negative integers. Each tab\n\t * stop is specified in pixels. If custom tab stops are not specified\n\t * (null), the default tab stop is 4(average character width).\n\t */\n\tpublic tabStops:Array = new Array();\n\n\t/**\n\t * Indicates the target window where the hyperlink is displayed. If the\n\t * target window is an empty string, the text is displayed in the default\n\t * target window _self. You can choose a custom name or one of\n\t * the following four names: _self specifies the current frame\n\t * in the current window, _blank specifies a new window,\n\t * _parent specifies the parent of the current frame, and\n\t * _top specifies the top-level frame in the current window. If\n\t * the TextFormat.url property is an empty string or\n\t * null, you can get or set this property, but the property will\n\t * have no effect.\n\t */\n\tpublic target:string;\n\n\t/**\n\t * Indicates whether the text that uses this text format is underlined\n\t * (true) or not(false). This underlining is\n\t * similar to that produced by the tag, but the latter is\n\t * not true underlining, because it does not skip descenders correctly. The\n\t * default value is null, which indicates that underlining is\n\t * not used.\n\t */\n\tpublic underline:boolean;\n\n\t/**\n\t * Indicates the target URL for the text in this text format. If the\n\t * url property is an empty string, the text does not have a\n\t * hyperlink. The default value is null, which indicates that\n\t * the text does not have a hyperlink.\n\t *\n\t *

Note: The text with the assigned text format must be set with\n\t * the htmlText property for the hyperlink to work.

\n\t */\n\tpublic url:string;\n\n\t/**\n\t * Creates a TextFormat object with the specified properties. You can then\n\t * change the properties of the TextFormat object to change the formatting of\n\t * text fields.\n\t *\n\t *

Any parameter may be set to null to indicate that it is\n\t * not defined. All of the parameters are optional; any omitted parameters\n\t * are treated as null.

\n\t *\n\t * @param font The name of a font for text as a string.\n\t * @param size An integer that indicates the size in pixels.\n\t * @param color The color of text using this text format. A number\n\t * containing three 8-bit RGB components; for example,\n\t * 0xFF0000 is red, and 0x00FF00 is green.\n\t * @param bold A Boolean value that indicates whether the text is\n\t * boldface.\n\t * @param italic A Boolean value that indicates whether the text is\n\t * italicized.\n\t * @param underline A Boolean value that indicates whether the text is\n\t * underlined.\n\t * @param url The URL to which the text in this text format\n\t * hyperlinks. If url is an empty string, the\n\t * text does not have a hyperlink.\n\t * @param target The target window where the hyperlink is displayed. If\n\t * the target window is an empty string, the text is\n\t * displayed in the default target window\n\t * _self. If the url parameter\n\t * is set to an empty string or to the value\n\t * null, you can get or set this property,\n\t * but the property will have no effect.\n\t * @param align The alignment of the paragraph, as a TextFormatAlign\n\t * value.\n\t * @param leftMargin Indicates the left margin of the paragraph, in pixels.\n\t * @param rightMargin Indicates the right margin of the paragraph, in pixels.\n\t * @param indent An integer that indicates the indentation from the left\n\t * margin to the first character in the paragraph.\n\t * @param leading A number that indicates the amount of leading vertical\n\t * space between lines.\n\t */\n\tconstructor(font:string = \"Times New Roman\", size:number = 12, color:number /*int*/ = 0x000000, bold:boolean = false, italic:boolean = false, underline:boolean = false, url:string = \"\", target:string = \"\", align:string = \"left\", leftMargin:number = 0, rightMargin:number = 0, indent:number = 0, leading:number = 0)\n\t{\n\t\tthis.font = font;\n\t\tthis.size = size;\n\t\tthis.bold = bold;\n\t\tthis.italic = italic;\n\t\tthis.underline = underline;\n\t\tthis.url = url;\n\t\tthis.target = target;\n\t\tthis.align = align;\n\t\tthis.leftMargin = leftMargin;\n\t\tthis.rightMargin = rightMargin;\n\t\tthis.indent = indent;\n\t\tthis.leading = leading;\n\t}\n}\n\nexport = TextFormat;","/**\n * A class that defines the Interactive mode of a text field object.\n *\n * @see away.entities.TextField#textInteractionMode\n */\nclass TextInteractionMode\n{\n\t/**\n\t * The text field's default interaction mode is NORMAL and it varies across\n\t * platform. On Desktop, the normal mode implies that the text field is in\n\t * scrollable + selection mode. On Mobile platforms like Android, normal mode\n\t * implies that the text field can only be scrolled but the text can not be\n\t * selected.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * On mobile platforms like Android, the text field starts in normal mode\n\t * (which implies scroll and non-selectable mode). The user can switch to\n\t * selection mode through the in-built context menu of the text field object.\n\t */\n\tpublic static SELECTION:string = \"selection\";\n}\n\nexport = TextInteractionMode;","/**\n * The TextLineMetrics class contains information about the text position and\n * measurements of a line of text within a text field. All measurements are in\n * pixels. Objects of this class are returned by the \n * away.entities.TextField.getLineMetrics() method.\n */\nclass TextLineMetrics\n{\n\t/**\n\t * The ascent value of the text is the length from the baseline to the top of\n\t * the line height in pixels.\n\t */\n\tpublic ascent:number;\n\n\t/**\n\t * The descent value of the text is the length from the baseline to the\n\t * bottom depth of the line in pixels.\n\t */\n\tpublic descent:number;\n\n\t/**\n\t * The height value of the text of the selected lines (not necessarily the\n\t * complete text) in pixels. The height of the text line does not include the\n\t * gutter height.\n\t */\n\tpublic height:number;\n\n\t/**\n\t * The leading value is the measurement of the vertical distance between the\n\t * lines of text.\n\t */\n\tpublic leading:number;\n\n\t/**\n\t * The width value is the width of the text of the selected lines (not\n\t * necessarily the complete text) in pixels. The width of the text line is\n\t * not the same as the width of the text field. The width of the text line is\n\t * relative to the text field width, minus the gutter width of 4 pixels\n\t * (2 pixels on each side).\n\t */\n\tpublic width:number;\n\n\t/**\n\t * The x value is the left position of the first character in pixels. This\n\t * value includes the margin, indent (if any), and gutter widths.\n\t */\n\tpublic x:number;\n\n\t/**\n\t * Creates a TextLineMetrics object. The TextLineMetrics object contains\n\t * information about the text metrics of a line of text in a text field.\n\t * Objects of this class are returned by the\n\t * away.entities.TextField.getLineMetrics() method.\n\t *\n\t * @param x The left position of the first character in pixels.\n\t * @param width The width of the text of the selected lines (not\n\t * necessarily the complete text) in pixels.\n\t * @param height The height of the text of the selected lines (not\n\t * necessarily the complete text) in pixels.\n\t * @param ascent The length from the baseline to the top of the line\n\t * height in pixels.\n\t * @param descent The length from the baseline to the bottom depth of\n\t * the line in pixels.\n\t * @param leading The measurement of the vertical distance between the\n\t * lines of text.\n\t */\n\tconstructor(x:number = NaN, width:number = NaN, height:number = NaN, ascent:number = NaN, descent:number = NaN, leading:number = NaN)\n\t{\n\n\t}\n}\n\nexport = TextLineMetrics;","import CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\n/**\n * @class away.traverse.CSSEntityCollector\n */\nclass CSSEntityCollector extends CollectorBase implements ICollector\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n}\n\nexport = CSSEntityCollector;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport EntityListItemPool\t\t\t= require(\"awayjs-display/lib/pool/EntityListItemPool\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.traverse.CollectorBase\n */\nclass CollectorBase implements ICollector\n{\n\tpublic scene:Scene;\n\n\tpublic _pEntityHead:EntityListItem;\n\tpublic _pEntityListItemPool:EntityListItemPool;\n\tpublic _pCamera:Camera;\n\tprivate _customCullPlanes:Array;\n\tprivate _cullPlanes:Array;\n\tprivate _numCullPlanes:number = 0;\n\tpublic _pNumEntities:number = 0;\n\tpublic _pNumInteractiveEntities:number = 0;\n\n\tconstructor()\n\t{\n\t\tthis._pEntityListItemPool = new EntityListItemPool();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get camera():Camera\n\t{\n\t\treturn this._pCamera;\n\t}\n\n\tpublic set camera(value:Camera)\n\t{\n\t\tthis._pCamera = value;\n\t\tthis._cullPlanes = this._pCamera.frustumPlanes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get cullPlanes():Array\n\t{\n\t\treturn this._customCullPlanes;\n\t}\n\n\tpublic set cullPlanes(value:Array)\n\t{\n\t\tthis._customCullPlanes = value;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get entityHead():EntityListItem\n\t{\n\t\treturn this._pEntityHead;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get numEntities():number\n\t{\n\t\treturn this._pNumEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get numInteractiveEntities():number\n\t{\n\t\treturn this._pNumInteractiveEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clear()\n\t{\n\t\tthis._pNumEntities = this._pNumInteractiveEntities = 0;\n\t\tthis._cullPlanes = this._customCullPlanes? this._customCullPlanes : ( this._pCamera? this._pCamera.frustumPlanes : null );\n\t\tthis._numCullPlanes = this._cullPlanes? this._cullPlanes.length : 0;\n\t\tthis._pEntityHead = null;\n\t\tthis._pEntityListItemPool.freeAll();\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @returns {boolean}\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\tvar enter:boolean = this.scene._iCollectionMark != node._iCollectionMark && node.isInFrustum(this._cullPlanes, this._numCullPlanes);\n\n\t\tnode._iCollectionMark = this.scene._iCollectionMark;\n\n\t\treturn enter;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyDirectionalLight(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyEntity(entity:IEntity)\n\t{\n\t\tthis._pNumEntities++;\n\n\t\tif (entity._iIsMouseEnabled())\n\t\t\tthis._pNumInteractiveEntities++;\n\n\t\tvar item:EntityListItem = this._pEntityListItemPool.getItem();\n\t\titem.entity = entity;\n\n\t\titem.next = this._pEntityHead;\n\t\tthis._pEntityHead = item;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyLightProbe(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyPointLight(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applySkybox(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n}\n\nexport = CollectorBase;","import LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n/**\n * @class away.traverse.EntityCollector\n */\nclass EntityCollector extends CollectorBase\n{\n\tpublic _pSkybox:Skybox;\n\tpublic _pLights:Array;\n\tprivate _directionalLights:Array;\n\tprivate _pointLights:Array;\n\tprivate _lightProbes:Array;\n\n\tpublic _pNumLights:number = 0;\n\n\tprivate _numDirectionalLights:number = 0;\n\tprivate _numPointLights:number = 0;\n\tprivate _numLightProbes:number = 0;\n\n\t/**\n\t *\n\t */\n\tpublic get directionalLights():Array\n\t{\n\t\treturn this._directionalLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get lightProbes():Array\n\t{\n\t\treturn this._lightProbes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get lights():Array\n\t{\n\t\treturn this._pLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get pointLights():Array\n\t{\n\t\treturn this._pointLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get skyBox():Skybox\n\t{\n\t\treturn this._pSkybox;\n\t}\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pLights = new Array();\n\t\tthis._directionalLights = new Array();\n\t\tthis._pointLights = new Array();\n\t\tthis._lightProbes = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyDirectionalLight(entity:IEntity)\n\t{\n\t\tthis._directionalLights[ this._numDirectionalLights++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyLightProbe(entity:IEntity)\n\t{\n\t\tthis._lightProbes[ this._numLightProbes++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyPointLight(entity:IEntity)\n\t{\n\t\tthis._pointLights[ this._numPointLights++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applySkybox(entity:IEntity)\n\t{\n\t\tthis._pSkybox = entity;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clear()\n\t{\n\t\tsuper.clear();\n\n\t\tthis._pSkybox = null;\n\n\t\tif (this._pNumLights > 0)\n\t\t\tthis._pLights.length = this._pNumLights = 0;\n\n\t\tif (this._numDirectionalLights > 0)\n\t\t\tthis._directionalLights.length = this._numDirectionalLights = 0;\n\n\t\tif (this._numPointLights > 0)\n\t\t\tthis._pointLights.length = this._numPointLights = 0;\n\n\t\tif (this._numLightProbes > 0)\n\t\t\tthis._lightProbes.length = this._numLightProbes = 0;\n\t}\n}\n\nexport = EntityCollector;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * The RaycastCollector class is a traverser for scene partitions that collects all scene graph entities that are\n * considered intersecting with the defined ray.\n *\n * @see away.partition.Partition\n * @see away.entities.IEntity\n *\n * @class away.traverse.RaycastCollector\n */\nclass RaycastCollector extends CollectorBase\n{\n\tprivate _rayPosition:Vector3D = new Vector3D();\n\tprivate _rayDirection:Vector3D = new Vector3D();\n\n\tpublic _iCollectionMark:number = 0;\n\n\t/**\n\t * Provides the starting position of the ray.\n\t */\n\tpublic get rayPosition():Vector3D\n\t{\n\t\treturn this._rayPosition;\n\t}\n\n\tpublic set rayPosition(value:Vector3D)\n\t{\n\t\tthis._rayPosition = value;\n\t}\n\n\t/**\n\t * Provides the direction vector of the ray.\n\t */\n\tpublic get rayDirection():Vector3D\n\t{\n\t\treturn this._rayDirection;\n\t}\n\n\tpublic set rayDirection(value:Vector3D)\n\t{\n\t\tthis._rayDirection = value;\n\t}\n\n\t/**\n\t * Creates a new RaycastCollector object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.\n\t *\n\t * @param node The Partition3DNode object to frustum-test.\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\treturn node.isIntersectingRay(this._rayPosition, this._rayDirection);\n\t}\n}\n\nexport = RaycastCollector;","import NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\n\n/**\n * @class away.traverse.ShadowCasterCollector\n */\nclass ShadowCasterCollector extends CollectorBase\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\tvar enter:boolean = this.scene._iCollectionMark != node._iCollectionMark && node.isCastingShadow();\n\n\t\tif (!enter) {\n\t\t\tnode._iCollectionMark = this.scene._iCollectionMark;\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn super.enterNode(node);\n\t}\n}\n\nexport = ShadowCasterCollector;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport ByteArray\t\t\t\t= require(\"awayjs-core/lib/utils/ByteArray\");\n\nimport CastError\t\t\t\t= require(\"awayjs-display/lib/errors/CastError\");\nimport BitmapTexture\t\t\t= require(\"awayjs-core/lib/textures/BitmapTexture\");\nimport ImageTexture\t\t\t\t= require(\"awayjs-core/lib/textures/ImageTexture\");\n\n/**\n * Helper class for casting assets to usable objects\n */\nclass Cast\n{\n\tprivate static _colorNames:Object;\n\tprivate static _hexChars:string = \"0123456789abcdefABCDEF\";\n\n\tprivate static _notClasses:Object = new Object();\n\tprivate static _classes:Object = new Object();\n\n\tpublic static string(data:any):string\n\t{\n\t\tif (typeof(data) == 'function')\n\t\t\tdata = new data;\n\n\t\tif (typeof(data) == 'string')\n\t\t\treturn data;\n\n\t\treturn data;\n\t}\n\n\tpublic static byteArray(data:any):ByteArray\n\t{\n\t\tif (typeof(data) == 'function')\n\t\t\tdata = new data;\n\n\t\tif (data instanceof ByteArray)\n\t\t\treturn data;\n\n\t\treturn data;\n\t}\n\n\t// public static xml(data:any):XML\n\t// {\n\t// if (typeof(data) == 'function')\n\t// data = new data;\n\t//\n\t// if (data is XML)\n\t// return data;\n\t//\n\t// return XML(data);\n\t// }\n\n\tprivate static isHex(str:string):boolean\n\t{\n\t\tvar length:number /*int*/ = str.length;\n\t\tfor (var i:number /*int*/ = 0; i < length; ++i) {\n\t\t\tif (this._hexChars.indexOf(str.charAt(i)) == -1)\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic static tryColor(data:any):number /*uint*/\n\t{\n\t\tif (typeof(data) == 'number' /*uint*/)\n\t\t\treturn Math.floor( data);\n\n\t\tif (typeof(data) == 'string') {\n\t\t\tif (data == \"random\")\n\t\t\t\treturn Math.floor(Math.random()*0x1000000);\n\n\t\t\tif (this._colorNames == null) {\n\t\t\t\tthis._colorNames = new Object();\n\t\t\t\tthis._colorNames[\"steelblue\"] = 0x4682B4;\n\t\t\t\tthis._colorNames[\"royalblue\"] = 0x041690;\n\t\t\t\tthis._colorNames[\"cornflowerblue\"] = 0x6495ED;\n\t\t\t\tthis._colorNames[\"lightsteelblue\"] = 0xB0C4DE;\n\t\t\t\tthis._colorNames[\"mediumslateblue\"] = 0x7B68EE;\n\t\t\t\tthis._colorNames[\"slateblue\"] = 0x6A5ACD;\n\t\t\t\tthis._colorNames[\"darkslateblue\"] = 0x483D8B;\n\t\t\t\tthis._colorNames[\"midnightblue\"] = 0x191970;\n\t\t\t\tthis._colorNames[\"navy\"] = 0x000080;\n\t\t\t\tthis._colorNames[\"darkblue\"] = 0x00008B;\n\t\t\t\tthis._colorNames[\"mediumblue\"] = 0x0000CD;\n\t\t\t\tthis._colorNames[\"blue\"] = 0x0000FF;\n\t\t\t\tthis._colorNames[\"dodgerblue\"] = 0x1E90FF;\n\t\t\t\tthis._colorNames[\"deepskyblue\"] = 0x00BFFF;\n\t\t\t\tthis._colorNames[\"lightskyblue\"] = 0x87CEFA;\n\t\t\t\tthis._colorNames[\"skyblue\"] = 0x87CEEB;\n\t\t\t\tthis._colorNames[\"lightblue\"] = 0xADD8E6;\n\t\t\t\tthis._colorNames[\"powderblue\"] = 0xB0E0E6;\n\t\t\t\tthis._colorNames[\"azure\"] = 0xF0FFFF;\n\t\t\t\tthis._colorNames[\"lightcyan\"] = 0xE0FFFF;\n\t\t\t\tthis._colorNames[\"paleturquoise\"] = 0xAFEEEE;\n\t\t\t\tthis._colorNames[\"mediumturquoise\"] = 0x48D1CC;\n\t\t\t\tthis._colorNames[\"lightseagreen\"] = 0x20B2AA;\n\t\t\t\tthis._colorNames[\"darkcyan\"] = 0x008B8B;\n\t\t\t\tthis._colorNames[\"teal\"] = 0x008080;\n\t\t\t\tthis._colorNames[\"cadetblue\"] = 0x5F9EA0;\n\t\t\t\tthis._colorNames[\"darkturquoise\"] = 0x00CED1;\n\t\t\t\tthis._colorNames[\"aqua\"] = 0x00FFFF;\n\t\t\t\tthis._colorNames[\"cyan\"] = 0x00FFFF;\n\t\t\t\tthis._colorNames[\"turquoise\"] = 0x40E0D0;\n\t\t\t\tthis._colorNames[\"aquamarine\"] = 0x7FFFD4;\n\t\t\t\tthis._colorNames[\"mediumaquamarine\"] = 0x66CDAA;\n\t\t\t\tthis._colorNames[\"darkseagreen\"] = 0x8FBC8F;\n\t\t\t\tthis._colorNames[\"mediumseagreen\"] = 0x3CB371;\n\t\t\t\tthis._colorNames[\"seagreen\"] = 0x2E8B57;\n\t\t\t\tthis._colorNames[\"darkgreen\"] = 0x006400;\n\t\t\t\tthis._colorNames[\"green\"] = 0x008000;\n\t\t\t\tthis._colorNames[\"forestgreen\"] = 0x228B22;\n\t\t\t\tthis._colorNames[\"limegreen\"] = 0x32CD32;\n\t\t\t\tthis._colorNames[\"lime\"] = 0x00FF00;\n\t\t\t\tthis._colorNames[\"chartreuse\"] = 0x7FFF00;\n\t\t\t\tthis._colorNames[\"lawngreen\"] = 0x7CFC00;\n\t\t\t\tthis._colorNames[\"greenyellow\"] = 0xADFF2F;\n\t\t\t\tthis._colorNames[\"yellowgreen\"] = 0x9ACD32;\n\t\t\t\tthis._colorNames[\"palegreen\"] = 0x98FB98;\n\t\t\t\tthis._colorNames[\"lightgreen\"] = 0x90EE90;\n\t\t\t\tthis._colorNames[\"springgreen\"] = 0x00FF7F;\n\t\t\t\tthis._colorNames[\"mediumspringgreen\"] = 0x00FA9A;\n\t\t\t\tthis._colorNames[\"darkolivegreen\"] = 0x556B2F;\n\t\t\t\tthis._colorNames[\"olivedrab\"] = 0x6B8E23;\n\t\t\t\tthis._colorNames[\"olive\"] = 0x808000;\n\t\t\t\tthis._colorNames[\"darkkhaki\"] = 0xBDB76B;\n\t\t\t\tthis._colorNames[\"darkgoldenrod\"] = 0xB8860B;\n\t\t\t\tthis._colorNames[\"goldenrod\"] = 0xDAA520;\n\t\t\t\tthis._colorNames[\"gold\"] = 0xFFD700;\n\t\t\t\tthis._colorNames[\"yellow\"] = 0xFFFF00;\n\t\t\t\tthis._colorNames[\"khaki\"] = 0xF0E68C;\n\t\t\t\tthis._colorNames[\"palegoldenrod\"] = 0xEEE8AA;\n\t\t\t\tthis._colorNames[\"blanchedalmond\"] = 0xFFEBCD;\n\t\t\t\tthis._colorNames[\"moccasin\"] = 0xFFE4B5;\n\t\t\t\tthis._colorNames[\"wheat\"] = 0xF5DEB3;\n\t\t\t\tthis._colorNames[\"navajowhite\"] = 0xFFDEAD;\n\t\t\t\tthis._colorNames[\"burlywood\"] = 0xDEB887;\n\t\t\t\tthis._colorNames[\"tan\"] = 0xD2B48C;\n\t\t\t\tthis._colorNames[\"rosybrown\"] = 0xBC8F8F;\n\t\t\t\tthis._colorNames[\"sienna\"] = 0xA0522D;\n\t\t\t\tthis._colorNames[\"saddlebrown\"] = 0x8B4513;\n\t\t\t\tthis._colorNames[\"chocolate\"] = 0xD2691E;\n\t\t\t\tthis._colorNames[\"peru\"] = 0xCD853F;\n\t\t\t\tthis._colorNames[\"sandybrown\"] = 0xF4A460;\n\t\t\t\tthis._colorNames[\"darkred\"] = 0x8B0000;\n\t\t\t\tthis._colorNames[\"maroon\"] = 0x800000;\n\t\t\t\tthis._colorNames[\"brown\"] = 0xA52A2A;\n\t\t\t\tthis._colorNames[\"firebrick\"] = 0xB22222;\n\t\t\t\tthis._colorNames[\"indianred\"] = 0xCD5C5C;\n\t\t\t\tthis._colorNames[\"lightcoral\"] = 0xF08080;\n\t\t\t\tthis._colorNames[\"salmon\"] = 0xFA8072;\n\t\t\t\tthis._colorNames[\"darksalmon\"] = 0xE9967A;\n\t\t\t\tthis._colorNames[\"lightsalmon\"] = 0xFFA07A;\n\t\t\t\tthis._colorNames[\"coral\"] = 0xFF7F50;\n\t\t\t\tthis._colorNames[\"tomato\"] = 0xFF6347;\n\t\t\t\tthis._colorNames[\"darkorange\"] = 0xFF8C00;\n\t\t\t\tthis._colorNames[\"orange\"] = 0xFFA500;\n\t\t\t\tthis._colorNames[\"orangered\"] = 0xFF4500;\n\t\t\t\tthis._colorNames[\"crimson\"] = 0xDC143C;\n\t\t\t\tthis._colorNames[\"red\"] = 0xFF0000;\n\t\t\t\tthis._colorNames[\"deeppink\"] = 0xFF1493;\n\t\t\t\tthis._colorNames[\"fuchsia\"] = 0xFF00FF;\n\t\t\t\tthis._colorNames[\"magenta\"] = 0xFF00FF;\n\t\t\t\tthis._colorNames[\"hotpink\"] = 0xFF69B4;\n\t\t\t\tthis._colorNames[\"lightpink\"] = 0xFFB6C1;\n\t\t\t\tthis._colorNames[\"pink\"] = 0xFFC0CB;\n\t\t\t\tthis._colorNames[\"palevioletred\"] = 0xDB7093;\n\t\t\t\tthis._colorNames[\"mediumvioletred\"] = 0xC71585;\n\t\t\t\tthis._colorNames[\"purple\"] = 0x800080;\n\t\t\t\tthis._colorNames[\"darkmagenta\"] = 0x8B008B;\n\t\t\t\tthis._colorNames[\"mediumpurple\"] = 0x9370DB;\n\t\t\t\tthis._colorNames[\"blueviolet\"] = 0x8A2BE2;\n\t\t\t\tthis._colorNames[\"indigo\"] = 0x4B0082;\n\t\t\t\tthis._colorNames[\"darkviolet\"] = 0x9400D3;\n\t\t\t\tthis._colorNames[\"darkorchid\"] = 0x9932CC;\n\t\t\t\tthis._colorNames[\"mediumorchid\"] = 0xBA55D3;\n\t\t\t\tthis._colorNames[\"orchid\"] = 0xDA70D6;\n\t\t\t\tthis._colorNames[\"violet\"] = 0xEE82EE;\n\t\t\t\tthis._colorNames[\"plum\"] = 0xDDA0DD;\n\t\t\t\tthis._colorNames[\"thistle\"] = 0xD8BFD8;\n\t\t\t\tthis._colorNames[\"lavender\"] = 0xE6E6FA;\n\t\t\t\tthis._colorNames[\"ghostwhite\"] = 0xF8F8FF;\n\t\t\t\tthis._colorNames[\"aliceblue\"] = 0xF0F8FF;\n\t\t\t\tthis._colorNames[\"mintcream\"] = 0xF5FFFA;\n\t\t\t\tthis._colorNames[\"honeydew\"] = 0xF0FFF0;\n\t\t\t\tthis._colorNames[\"lightgoldenrodyellow\"] = 0xFAFAD2;\n\t\t\t\tthis._colorNames[\"lemonchiffon\"] = 0xFFFACD;\n\t\t\t\tthis._colorNames[\"cornsilk\"] = 0xFFF8DC;\n\t\t\t\tthis._colorNames[\"lightyellow\"] = 0xFFFFE0;\n\t\t\t\tthis._colorNames[\"ivory\"] = 0xFFFFF0;\n\t\t\t\tthis._colorNames[\"floralwhite\"] = 0xFFFAF0;\n\t\t\t\tthis._colorNames[\"linen\"] = 0xFAF0E6;\n\t\t\t\tthis._colorNames[\"oldlace\"] = 0xFDF5E6;\n\t\t\t\tthis._colorNames[\"antiquewhite\"] = 0xFAEBD7;\n\t\t\t\tthis._colorNames[\"bisque\"] = 0xFFE4C4;\n\t\t\t\tthis._colorNames[\"peachpuff\"] = 0xFFDAB9;\n\t\t\t\tthis._colorNames[\"papayawhip\"] = 0xFFEFD5;\n\t\t\t\tthis._colorNames[\"beige\"] = 0xF5F5DC;\n\t\t\t\tthis._colorNames[\"seashell\"] = 0xFFF5EE;\n\t\t\t\tthis._colorNames[\"lavenderblush\"] = 0xFFF0F5;\n\t\t\t\tthis._colorNames[\"mistyrose\"] = 0xFFE4E1;\n\t\t\t\tthis._colorNames[\"snow\"] = 0xFFFAFA;\n\t\t\t\tthis._colorNames[\"white\"] = 0xFFFFFF;\n\t\t\t\tthis._colorNames[\"whitesmoke\"] = 0xF5F5F5;\n\t\t\t\tthis._colorNames[\"gainsboro\"] = 0xDCDCDC;\n\t\t\t\tthis._colorNames[\"lightgrey\"] = 0xD3D3D3;\n\t\t\t\tthis._colorNames[\"silver\"] = 0xC0C0C0;\n\t\t\t\tthis._colorNames[\"darkgrey\"] = 0xA9A9A9;\n\t\t\t\tthis._colorNames[\"grey\"] = 0x808080;\n\t\t\t\tthis._colorNames[\"lightslategrey\"] = 0x778899;\n\t\t\t\tthis._colorNames[\"slategrey\"] = 0x708090;\n\t\t\t\tthis._colorNames[\"dimgrey\"] = 0x696969;\n\t\t\t\tthis._colorNames[\"darkslategrey\"] = 0x2F4F4F;\n\t\t\t\tthis._colorNames[\"black\"] = 0x000000;\n\t\t\t\tthis._colorNames[\"transparent\"] = 0xFF000000;\n\t\t\t}\n\n\t\t\tif (this._colorNames[data] != null)\n\t\t\t\treturn this._colorNames[data];\n\n\t\t\tif ((( data).length == 6) && this.isHex(data))\n\t\t\t\treturn parseInt(\"0x\" + data);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tpublic static color(data:any):number /*uint*/\n\t{\n\t\tvar result:number /*uint*/ = this.tryColor(data);\n\n\t\tif (result == null)\n\t\t\tthrow new CastError(\"Can't cast to color: \" + data);\n\n\t\treturn result;\n\t}\n\n\tpublic static tryClass(name:string):any\n\t{\n\t\tif (this._notClasses[name])\n\t\t\treturn name;\n\n\t\tvar result:any = this._classes[name];\n\n\t\tif (result != null)\n\t\t\treturn result;\n\n\t\ttry {\n\t\t\tresult = window[name];\n\t\t\tthis._classes[name] = result;\n\t\t\treturn result;\n\t\t} catch (e /*ReferenceError*/) {\n\t\t}\n\n\t\tthis._notClasses[name] = true;\n\n\t\treturn name;\n\t}\n\n\tpublic static bitmapData(data:any):BitmapData\n\t{\n\t\tif (data == null)\n\t\t\treturn null;\n\n\t\tif (typeof(data) == 'string')\n\t\t\tdata = this.tryClass(data);\n\n\t\tif (typeof(data) == 'function') {\n\t\t\ttry {\n\t\t\t\tdata = new data();\n\t\t\t} catch (e /*ArgumentError*/) {\n\t\t\t\tdata = new data(0, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (data instanceof BitmapData)\n\t\t\treturn data;\n\n\t\tif (data instanceof ImageTexture)\n\t\t\tdata = ( data).htmlImageElement;\n\n\t\tif (data instanceof HTMLImageElement) {\n\t\t\tvar imageElement:HTMLImageElement = data;\n\t\t\tvar bitmapData:BitmapData = new BitmapData(imageElement.width, imageElement.height, true, 0x0);\n\t\t\tbitmapData.draw(imageElement)\n\t\t\treturn bitmapData;\n\t\t}\n\n\t\t// if (data is DisplayObject) {\n\t\t// var ds:DisplayObject = data as DisplayObject;\n\t\t// var bmd:BitmapData = new BitmapData(ds.width, ds.height, true, 0x00FFFFFF);\n\t\t// var mat:Matrix = ds.transform.matrix.clone();\n\t\t// mat.tx = 0;\n\t\t// mat.ty = 0;\n\t\t// bmd.draw(ds, mat, ds.transform.colorTransform, ds.blendMode, bmd.rect, true);\n\t\t// return bmd;\n\t\t// }\n\n\t\tthrow new CastError(\"Can't cast to BitmapData: \" + data);\n\t}\n\n\tpublic static bitmapTexture(data:any):BitmapTexture\n\t{\n\t\tif (data == null)\n\t\t\treturn null;\n\n\t\tif (typeof(data) == 'string')\n\t\t\tdata = this.tryClass(data);\n\n\t\tif (typeof(data) == 'function') {\n\t\t\ttry {\n\t\t\t\tdata = new data();\n\t\t\t} catch (e /*ArgumentError*/) {\n\t\t\t\tdata = new data(0, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (data instanceof BitmapTexture)\n\t\t\treturn data;\n\n\t\ttry {\n\t\t\tvar bmd:BitmapData = Cast.bitmapData(data);\n\t\t\treturn new BitmapTexture(bmd);\n\t\t} catch (e /*CastError*/) {\n\t\t}\n\n\t\tthrow new CastError(\"Can't cast to BitmapTexture: \" + data);\n\t}\n}\n\nexport = Cast;"],"sourceRoot":"./"} \ No newline at end of file +{"version":3,"sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","awayjs-display/lib/animators/nodes/animationnodebase.ts","awayjs-display/lib/base/alignmentmode.ts","awayjs-display/lib/base/blendmode.ts","awayjs-display/lib/base/capsstyle.ts","awayjs-display/lib/base/displayobject.ts","awayjs-display/lib/base/geometry.ts","awayjs-display/lib/base/gradienttype.ts","awayjs-display/lib/base/graphicspathwinding.ts","awayjs-display/lib/base/graphics.ts","awayjs-display/lib/base/interpolationmethod.ts","awayjs-display/lib/base/jointstyle.ts","awayjs-display/lib/base/lightbase.ts","awayjs-display/lib/base/linescalemode.ts","awayjs-display/lib/base/linesubgeometry.ts","awayjs-display/lib/base/linesubmesh.ts","awayjs-display/lib/base/loaderinfo.ts","awayjs-display/lib/base/orientationmode.ts","awayjs-display/lib/base/pixelsnapping.ts","awayjs-display/lib/base/spreadmethod.ts","awayjs-display/lib/base/subgeometrybase.ts","awayjs-display/lib/base/submeshbase.ts","awayjs-display/lib/base/transform.ts","awayjs-display/lib/base/triangleculling.ts","awayjs-display/lib/base/trianglesubgeometry.ts","awayjs-display/lib/base/trianglesubmesh.ts","awayjs-display/lib/containers/displayobjectcontainer.ts","awayjs-display/lib/containers/loader.ts","awayjs-display/lib/containers/scene.ts","awayjs-display/lib/containers/view.ts","awayjs-display/lib/controllers/controllerbase.ts","awayjs-display/lib/controllers/firstpersoncontroller.ts","awayjs-display/lib/controllers/followcontroller.ts","awayjs-display/lib/controllers/hovercontroller.ts","awayjs-display/lib/controllers/lookatcontroller.ts","awayjs-display/lib/controllers/springcontroller.ts","awayjs-display/lib/display/contextmode.ts","awayjs-display/lib/entities/billboard.ts","awayjs-display/lib/entities/camera.ts","awayjs-display/lib/entities/directionallight.ts","awayjs-display/lib/entities/lightprobe.ts","awayjs-display/lib/entities/linesegment.ts","awayjs-display/lib/entities/mesh.ts","awayjs-display/lib/entities/pointlight.ts","awayjs-display/lib/entities/shape.ts","awayjs-display/lib/entities/skybox.ts","awayjs-display/lib/entities/textfield.ts","awayjs-display/lib/entities/timeline.ts","awayjs-display/lib/entities/timelinedata/commandpropsbase.ts","awayjs-display/lib/entities/timelinedata/commandpropsdisplayobject.ts","awayjs-display/lib/entities/timelinedata/framecommand.ts","awayjs-display/lib/entities/timelinedata/interpolationobject.ts","awayjs-display/lib/entities/timelinedata/timelineframe.ts","awayjs-display/lib/entities/timelinedata/timelineobject.ts","awayjs-display/lib/errors/casterror.ts","awayjs-display/lib/events/cameraevent.ts","awayjs-display/lib/events/displayobjectevent.ts","awayjs-display/lib/events/geometryevent.ts","awayjs-display/lib/events/lightevent.ts","awayjs-display/lib/events/materialevent.ts","awayjs-display/lib/events/mouseevent.ts","awayjs-display/lib/events/renderableownerevent.ts","awayjs-display/lib/events/rendererevent.ts","awayjs-display/lib/events/resizeevent.ts","awayjs-display/lib/events/sceneevent.ts","awayjs-display/lib/events/stageevent.ts","awayjs-display/lib/events/subgeometryevent.ts","awayjs-display/lib/managers/defaultmaterialmanager.ts","awayjs-display/lib/managers/mousemanager.ts","awayjs-display/lib/materials/basicmaterial.ts","awayjs-display/lib/materials/cssmaterialbase.ts","awayjs-display/lib/materials/lightsources.ts","awayjs-display/lib/materials/materialbase.ts","awayjs-display/lib/materials/lightpickers/lightpickerbase.ts","awayjs-display/lib/materials/lightpickers/staticlightpicker.ts","awayjs-display/lib/materials/shadowmappers/cascadeshadowmapper.ts","awayjs-display/lib/materials/shadowmappers/cubemapshadowmapper.ts","awayjs-display/lib/materials/shadowmappers/directionalshadowmapper.ts","awayjs-display/lib/materials/shadowmappers/neardirectionalshadowmapper.ts","awayjs-display/lib/materials/shadowmappers/shadowmapperbase.ts","awayjs-display/lib/partition/cameranode.ts","awayjs-display/lib/partition/directionallightnode.ts","awayjs-display/lib/partition/entitynode.ts","awayjs-display/lib/partition/lightprobenode.ts","awayjs-display/lib/partition/nodebase.ts","awayjs-display/lib/partition/nullnode.ts","awayjs-display/lib/partition/partition.ts","awayjs-display/lib/partition/pointlightnode.ts","awayjs-display/lib/partition/skyboxnode.ts","awayjs-display/lib/pick/pickingcollisionvo.ts","awayjs-display/lib/pick/raycastpicker.ts","awayjs-display/lib/pool/cssbillboardrenderable.ts","awayjs-display/lib/pool/csslinesegmentrenderable.ts","awayjs-display/lib/pool/cssrenderablebase.ts","awayjs-display/lib/pool/cssskyboxrenderable.ts","awayjs-display/lib/pool/entitylistitempool.ts","awayjs-display/lib/pool/entitylistitem.ts","awayjs-display/lib/prefabs/prefabbase.ts","awayjs-display/lib/prefabs/primitivecapsuleprefab.ts","awayjs-display/lib/prefabs/primitiveconeprefab.ts","awayjs-display/lib/prefabs/primitivecubeprefab.ts","awayjs-display/lib/prefabs/primitivecylinderprefab.ts","awayjs-display/lib/prefabs/primitiveplaneprefab.ts","awayjs-display/lib/prefabs/primitivepolygonprefab.ts","awayjs-display/lib/prefabs/primitiveprefabbase.ts","awayjs-display/lib/prefabs/primitivesphereprefab.ts","awayjs-display/lib/prefabs/primitivetorusprefab.ts","awayjs-display/lib/render/cssdefaultrenderer.ts","awayjs-display/lib/render/cssrendererbase.ts","awayjs-display/lib/sort/renderablemergesort.ts","awayjs-display/lib/text/antialiastype.ts","awayjs-display/lib/text/gridfittype.ts","awayjs-display/lib/text/textfieldautosize.ts","awayjs-display/lib/text/textfieldtype.ts","awayjs-display/lib/text/textformatalign.ts","awayjs-display/lib/text/textformat.ts","awayjs-display/lib/text/textinteractionmode.ts","awayjs-display/lib/text/textlinemetrics.ts","awayjs-display/lib/traverse/cssentitycollector.ts","awayjs-display/lib/traverse/collectorbase.ts","awayjs-display/lib/traverse/entitycollector.ts","awayjs-display/lib/traverse/raycastcollector.ts","awayjs-display/lib/traverse/shadowcastercollector.ts","awayjs-display/lib/utils/cast.ts"],"names":[],"mappings":"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","file":"awayjs-display.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;oAnimationNodeBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.ANIMATION_NODE;\n\t}\n}\n\nexport = AnimationNodeBase;","/**\n *\n */\nclass AlignmentMode\n{\n\t/**\n\t *\n\t */\n\tpublic static REGISTRATION_POINT:string = \"registrationPoint\";\n\n\t/**\n\t *\n\t */\n\tpublic static PIVOT_POINT:string = \"pivot\";\n}\n\nexport = AlignmentMode;","/**\n * A class that provides constant values for visual blend mode effects. These\n * constants are used in the following:\n *
    \n *
  • The blendMode property of the\n * flash.display.DisplayObject class.
  • \n *
  • The blendMode parameter of the draw()\n * method of the flash.display.BitmapData class
  • \n *
\n */\nclass BlendMode\n{\n\t/**\n\t * Adds the values of the constituent colors of the display object to the\n\t * colors of its background, applying a ceiling of 0xFF. This setting is\n\t * commonly used for animating a lightening dissolve between two objects.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the\n\t * resulting RGB value for the displayed pixel is 0xFFC833(because 0xAA +\n\t * 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).

\n\t */\n\tpublic static ADD:string = \"add\";\n\n\t/**\n\t * Applies the alpha value of each pixel of the display object to the\n\t * background. This requires the blendMode property of the\n\t * parent display object be set to\n\t * away.base.BlendMode.LAYER.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static ALPHA:string = \"alpha\";\n\n\t/**\n\t * Selects the darker of the constituent colors of the display object and the\n\t * colors of the background(the colors with the smaller values). This\n\t * setting is commonly used for superimposing type.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0xDDCC00(because 0xFF >\n\t * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static DARKEN:string = \"darken\";\n\n\t/**\n\t * Compares the constituent colors of the display object with the colors of\n\t * its background, and subtracts the darker of the values of the two\n\t * constituent colors from the lighter value. This setting is commonly used\n\t * for more vibrant colors.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0x222C33(because 0xFF -\n\t * 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33).

\n\t */\n\tpublic static DIFFERENCE:string = \"difference\";\n\n\t/**\n\t * Erases the background based on the alpha value of the display object. This\n\t * process requires that the blendMode property of the parent\n\t * display object be set to flash.display.BlendMode.LAYER.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static ERASE:string = \"erase\";\n\n\t/**\n\t * Adjusts the color of each pixel based on the darkness of the display\n\t * object. If the display object is lighter than 50% gray, the display object\n\t * and background colors are screened, which results in a lighter color. If\n\t * the display object is darker than 50% gray, the colors are multiplied,\n\t * which results in a darker color. This setting is commonly used for shading\n\t * effects.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static HARDLIGHT:string = \"hardlight\";\n\n\t/**\n\t * Inverts the background.\n\t */\n\tpublic static INVERT:string = \"invert\";\n\n\t/**\n\t * Forces the creation of a transparency group for the display object. This\n\t * means that the display object is precomposed in a temporary buffer before\n\t * it is processed further. The precomposition is done automatically if the\n\t * display object is precached by means of bitmap caching or if the display\n\t * object is a display object container that has at least one child object\n\t * with a blendMode setting other than \"normal\".\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static LAYER:string = \"layer\";\n\n\t/**\n\t * Selects the lighter of the constituent colors of the display object and\n\t * the colors of the background(the colors with the larger values). This\n\t * setting is commonly used for superimposing type.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the\n\t * resulting RGB value for the displayed pixel is 0xFFF833(because 0xFF >\n\t * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static LIGHTEN:string = \"lighten\";\n\n\t/**\n\t * Multiplies the values of the display object constituent colors by the\n\t * constituent colors of the background color, and normalizes by dividing by\n\t * 0xFF, resulting in darker colors. This setting is commonly used for\n\t * shadows and depth effects.\n\t *\n\t *

For example, if a constituent color(such as red) of one pixel in the\n\t * display object and the corresponding color of the pixel in the background\n\t * both have the value 0x88, the multiplied result is 0x4840. Dividing by\n\t * 0xFF yields a value of 0x48 for that constituent color, which is a darker\n\t * shade than the color of the display object or the color of the\n\t * background.

\n\t */\n\tpublic static MULTIPLY:string = \"multiply\";\n\n\t/**\n\t * The display object appears in front of the background. Pixel values of the\n\t * display object override the pixel values of the background. Where the\n\t * display object is transparent, the background is visible.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * Adjusts the color of each pixel based on the darkness of the background.\n\t * If the background is lighter than 50% gray, the display object and\n\t * background colors are screened, which results in a lighter color. If the\n\t * background is darker than 50% gray, the colors are multiplied, which\n\t * results in a darker color. This setting is commonly used for shading\n\t * effects.\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static OVERLAY:string = \"overlay\";\n\n\t/**\n\t * Multiplies the complement(inverse) of the display object color by the\n\t * complement of the background color, resulting in a bleaching effect. This\n\t * setting is commonly used for highlights or to remove black areas of the\n\t * display object.\n\t */\n\tpublic static SCREEN:string = \"screen\";\n\n\t/**\n\t * Uses a shader to define the blend between objects.\n\t *\n\t *

Setting the blendShader property to a Shader instance\n\t * automatically sets the display object's blendMode property to\n\t * BlendMode.SHADER. If the blendMode property is\n\t * set to BlendMode.SHADER without first setting the\n\t * blendShader property, the blendMode property is\n\t * set to BlendMode.NORMAL instead. If the\n\t * blendShader property is set(which sets the\n\t * blendMode property to BlendMode.SHADER), then\n\t * later the value of the blendMode property is changed, the\n\t * blend mode can be reset to use the blend shader simply by setting the\n\t * blendMode property to BlendMode.SHADER. The\n\t * blendShader property does not need to be set again except to\n\t * change the shader that's used to define the blend mode.

\n\t *\n\t *

Not supported under GPU rendering.

\n\t */\n\tpublic static SHADER:string = \"shader\";\n\n\t/**\n\t * Subtracts the values of the constituent colors in the display object from\n\t * the values of the background color, applying a floor of 0. This setting is\n\t * commonly used for animating a darkening dissolve between two objects.\n\t *\n\t *

For example, if the display object has a pixel with an RGB value of\n\t * 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the\n\t * resulting RGB value for the displayed pixel is 0x338400(because 0xDD -\n\t * 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00).

\n\t */\n\tpublic static SUBTRACT:string = \"subtract\";\n}\n\nexport = BlendMode;","/**\n * The CapsStyle class is an enumeration of constant values that specify the\n * caps style to use in drawing lines. The constants are provided for use as\n * values in the caps parameter of the\n * flash.display.Graphics.lineStyle() method. You can specify the\n * following three types of caps:\n */\nclass CapsStyle\n{\n\t/**\n\t * Used to specify round caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static ROUND:string = \"round\";\n\n\t/**\n\t * Used to specify no caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Used to specify square caps in the caps parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static SQUARE:string = \"square\";\n}\n\nexport = CapsStyle;","import AxisAlignedBoundingBox\t= require(\"awayjs-core/lib/bounds/AxisAlignedBoundingBox\");\nimport BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Point\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Scene\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport AlignmentMode\t\t\t= require(\"awayjs-display/lib/base/AlignmentMode\");\nimport BlendMode\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport LoaderInfo\t\t\t\t= require(\"awayjs-display/lib/base/LoaderInfo\");\nimport OrientationMode\t\t\t= require(\"awayjs-display/lib/base/OrientationMode\");\nimport IBitmapDrawable\t\t\t= require(\"awayjs-display/lib/base/IBitmapDrawable\");\nimport Transform\t\t\t\t= require(\"awayjs-display/lib/base/Transform\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport Partition\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport IPickingCollider\t\t\t= require(\"awayjs-display/lib/pick/IPickingCollider\");\nimport PickingCollisionVO\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport IRenderable\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DisplayObjectEvent\t\t= require(\"awayjs-display/lib/events/DisplayObjectEvent\");\nimport SceneEvent\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport PrefabBase\t\t\t\t= require(\"awayjs-display/lib/prefabs/PrefabBase\");\n\n/**\n * The DisplayObject class is the base class for all objects that can be\n * placed on the display list. The display list manages all objects displayed\n * in flash. Use the DisplayObjectContainer class to arrange the\n * display objects in the display list. DisplayObjectContainer objects can\n * have child display objects, while other display objects, such as Shape and\n * TextField objects, are \"leaf\" nodes that have only parents and siblings, no\n * children.\n *\n *

The DisplayObject class supports basic functionality like the x\n * and y position of an object, as well as more advanced properties of\n * the object such as its transformation matrix.

\n *\n *

DisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject() throws an\n * ArgumentError exception.

\n *\n *

All display objects inherit from the DisplayObject class.

\n *\n *

The DisplayObject class itself does not include any APIs for rendering\n * content onscreen. For that reason, if you want create a custom subclass of\n * the DisplayObject class, you will want to extend one of its subclasses that\n * do have APIs for rendering content onscreen, such as the Shape, Sprite,\n * Bitmap, SimpleButton, TextField, or MovieClip class.

\n *\n *

The DisplayObject class contains several broadcast events. Normally, the\n * target of any particular event is a specific DisplayObject instance. For\n * example, the target of an added event is the specific\n * DisplayObject instance that was added to the display list. Having a single\n * target restricts the placement of event listeners to that target and in\n * some cases the target's ancestors on the display list. With broadcast\n * events, however, the target is not a specific DisplayObject instance, but\n * rather all DisplayObject instances, including those that are not on the\n * display list. This means that you can add a listener to any DisplayObject\n * instance to listen for broadcast events. In addition to the broadcast\n * events listed in the DisplayObject class's Events table, the DisplayObject\n * class also inherits two broadcast events from the EventDispatcher class:\n * activate and deactivate.

\n *\n *

Some properties previously used in the ActionScript 1.0 and 2.0\n * MovieClip, TextField, and Button classes(such as _alpha,\n * _height, _name, _width,\n * _x, _y, and others) have equivalents in the\n * ActionScript 3.0 DisplayObject class that are renamed so that they no\n * longer begin with the underscore(_) character.

\n *\n *

For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.

\n * \n * @event added Dispatched when a display object is added to the\n * display list. The following methods trigger this\n * event:\n * DisplayObjectContainer.addChild(),\n * DisplayObjectContainer.addChildAt().\n * @event addedToStage Dispatched when a display object is added to the on\n * stage display list, either directly or through the\n * addition of a sub tree in which the display object\n * is contained. The following methods trigger this\n * event:\n * DisplayObjectContainer.addChild(),\n * DisplayObjectContainer.addChildAt().\n * @event enterFrame [broadcast event] Dispatched when the playhead is\n * entering a new frame. If the playhead is not\n * moving, or if there is only one frame, this event\n * is dispatched continuously in conjunction with the\n * frame rate. This event is a broadcast event, which\n * means that it is dispatched by all display objects\n * with a listener registered for this event.\n * @event exitFrame [broadcast event] Dispatched when the playhead is\n * exiting the current frame. All frame scripts have\n * been run. If the playhead is not moving, or if\n * there is only one frame, this event is dispatched\n * continuously in conjunction with the frame rate.\n * This event is a broadcast event, which means that\n * it is dispatched by all display objects with a\n * listener registered for this event.\n * @event frameConstructed [broadcast event] Dispatched after the constructors\n * of frame display objects have run but before frame\n * scripts have run. If the playhead is not moving, or\n * if there is only one frame, this event is\n * dispatched continuously in conjunction with the\n * frame rate. This event is a broadcast event, which\n * means that it is dispatched by all display objects\n * with a listener registered for this event.\n * @event removed Dispatched when a display object is about to be\n * removed from the display list. Two methods of the\n * DisplayObjectContainer class generate this event:\n * removeChild() and\n * removeChildAt().\n *\n *

The following methods of a\n * DisplayObjectContainer object also generate this\n * event if an object must be removed to make room for\n * the new object: addChild(),\n * addChildAt(), and\n * setChildIndex().

\n * @event removedFromStage Dispatched when a display object is about to be\n * removed from the display list, either directly or\n * through the removal of a sub tree in which the\n * display object is contained. Two methods of the\n * DisplayObjectContainer class generate this event:\n * removeChild() and\n * removeChildAt().\n *\n *

The following methods of a\n * DisplayObjectContainer object also generate this\n * event if an object must be removed to make room for\n * the new object: addChild(),\n * addChildAt(), and\n * setChildIndex().

\n * @event render [broadcast event] Dispatched when the display list\n * is about to be updated and rendered. This event\n * provides the last opportunity for objects listening\n * for this event to make changes before the display\n * list is rendered. You must call the\n * invalidate() method of the Stage\n * object each time you want a render\n * event to be dispatched. Render events\n * are dispatched to an object only if there is mutual\n * trust between it and the object that called\n * Stage.invalidate(). This event is a\n * broadcast event, which means that it is dispatched\n * by all display objects with a listener registered\n * for this event.\n *\n *

Note: This event is not dispatched if the\n * display is not rendering. This is the case when the\n * content is either minimized or obscured.

\n */\nclass DisplayObject extends NamedAssetBase implements IBitmapDrawable\n{\n\tprivate _loaderInfo:LoaderInfo;\n\tprivate _mouseX:number;\n\tprivate _mouseY:number;\n\tprivate _root:DisplayObjectContainer;\n\tprivate _bounds:Rectangle;\n\tprivate _boundsVisible:boolean;\n\tprivate _depth:number;\n\tprivate _height:number;\n\tprivate _width:number;\n\n\tpublic _pScene:Scene;\n\tpublic _pParent:DisplayObjectContainer;\n\tpublic _pSceneTransform:Matrix3D = new Matrix3D();\n\tpublic _pSceneTransformDirty:boolean = true;\n\tpublic _pIsEntity:boolean;\n\n\tprivate _explicitPartition:Partition;\n\tpublic _pImplicitPartition:Partition;\n\tprivate _partitionNode:EntityNode;\n\n\tprivate _sceneTransformChanged:DisplayObjectEvent;\n\tprivate _scenechanged:DisplayObjectEvent;\n\tprivate _transform:Transform;\n\tprivate _matrix3D:Matrix3D = new Matrix3D();\n\tprivate _matrix3DDirty:boolean = true;\n\n\tprivate _inverseSceneTransform:Matrix3D = new Matrix3D();\n\tprivate _inverseSceneTransformDirty:boolean = true;\n\tprivate _scenePosition:Vector3D = new Vector3D();\n\tprivate _scenePositionDirty:boolean = true;\n\tprivate _explicitVisibility:boolean = true;\n\tpublic _pImplicitVisibility:boolean = true;\n\tprivate _explicitMouseEnabled:boolean = true;\n\tpublic _pImplicitMouseEnabled:boolean = true;\n\tprivate _listenToSceneTransformChanged:boolean;\n\tprivate _listenToSceneChanged:boolean;\n\n\tprivate _positionDirty:boolean = true;\n\tprivate _rotationDirty:boolean = true;\n\tprivate _scaleDirty:boolean = true;\n\n\tprivate _positionChanged:DisplayObjectEvent;\n\tprivate _rotationChanged:DisplayObjectEvent;\n\tprivate _scaleChanged:DisplayObjectEvent;\n\n\tprivate _rotationX:number = 0;\n\tprivate _rotationY:number = 0;\n\tprivate _rotationZ:number = 0;\n\tprivate _eulers:Vector3D = new Vector3D();\n\tprivate _flipY:Matrix3D = new Matrix3D();\n\n\tprivate _listenToPositionChanged:boolean;\n\tprivate _listenToRotationChanged:boolean;\n\tprivate _listenToScaleChanged:boolean;\n\tprivate _zOffset:number = 0;\n\n\tpublic _pScaleX:number = 1;\n\tpublic _pScaleY:number = 1;\n\tpublic _pScaleZ:number = 1;\n\tprivate _x:number = 0;\n\tprivate _y:number = 0;\n\tprivate _z:number = 0;\n\tprivate _pivot:Vector3D = new Vector3D();\n\tprivate _orientationMatrix:Matrix3D = new Matrix3D();\n\tprivate _pivotZero:boolean = true;\n\tprivate _pivotDirty:boolean = true;\n\tprivate _pos:Vector3D = new Vector3D();\n\tprivate _rot:Vector3D = new Vector3D();\n\tprivate _sca:Vector3D = new Vector3D();\n\tprivate _transformComponents:Array;\n\n\tpublic _pIgnoreTransform:boolean = false;\n\n\tprivate _shaderPickingDetails:boolean;\n\n\tpublic _pPickingCollisionVO:PickingCollisionVO;\n\n\tpublic _pBounds:BoundingVolumeBase;\n\tpublic _pBoundsInvalid:boolean = true;\n\tprivate _worldBounds:BoundingVolumeBase;\n\tprivate _worldBoundsInvalid:boolean = true;\n\n\tpublic _pPickingCollider:IPickingCollider;\n\n\tpublic _pRenderables:Array = new Array();\n\n\tpublic _iSourcePrefab:PrefabBase;\n\n\t/**\n\t *\n\t */\n\tpublic alignmentMode:string = AlignmentMode.REGISTRATION_POINT;\n\n\t/**\n\t * Indicates the alpha transparency value of the object specified. Valid\n\t * values are 0(fully transparent) to 1(fully opaque). The default value is\n\t * 1. Display objects with alpha set to 0 are active,\n\t * even though they are invisible.\n\t */\n\tpublic alpha:number;\n\n\t/**\n\t * A value from the BlendMode class that specifies which blend mode to use. A\n\t * bitmap can be drawn internally in two ways. If you have a blend mode\n\t * enabled or an external clipping mask, the bitmap is drawn by adding a\n\t * bitmap-filled square shape to the vector render. If you attempt to set\n\t * this property to an invalid value, Flash runtimes set the value to\n\t * BlendMode.NORMAL.\n\t *\n\t *

The blendMode property affects each pixel of the display\n\t * object. Each pixel is composed of three constituent colors(red, green,\n\t * and blue), and each constituent color has a value between 0x00 and 0xFF.\n\t * Flash Player or Adobe AIR compares each constituent color of one pixel in\n\t * the movie clip with the corresponding color of the pixel in the\n\t * background. For example, if blendMode is set to\n\t * BlendMode.LIGHTEN, Flash Player or Adobe AIR compares the red\n\t * value of the display object with the red value of the background, and uses\n\t * the lighter of the two as the value for the red component of the displayed\n\t * color.

\n\t *\n\t *

The following table describes the blendMode settings. The\n\t * BlendMode class defines string values you can use. The illustrations in\n\t * the table show blendMode values applied to a circular display\n\t * object(2) superimposed on another display object(1).

\n\t */\n\tpublic blendMode:BlendMode;\n\n\t/**\n\t *\n\t */\n\tpublic get bounds():BoundingVolumeBase\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._pBounds;\n\t}\n\n\tpublic set bounds(value:BoundingVolumeBase)\n\t{\n\t\tif (this._pBounds == value)\n\t\t\treturn;\n\n\t\tthis._pBounds = value;\n\n\t\tthis._worldBounds = value.clone();\n\n\t\tthis.pInvalidateBounds();\n\n\t\tif (this._boundsVisible)\n\t\t\tthis._partitionNode._iUpdateEntityBounds();\n\t}\n\n\t/**\n\t * If set to true, NME will use the software renderer to cache\n\t * an internal bitmap representation of the display object. For native targets,\n\t * this is often much slower than the default hardware renderer. When you\n\t * are using the Flash target, this caching may increase performance for display\n\t * objects that contain complex vector content.\n\t *\n\t *

All vector data for a display object that has a cached bitmap is drawn\n\t * to the bitmap instead of the main display. If\n\t * cacheAsBitmapMatrix is null or unsupported, the bitmap is\n\t * then copied to the main display as unstretched, unrotated pixels snapped\n\t * to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent\n\t * object. If the bounds of the bitmap change, the bitmap is recreated\n\t * instead of being stretched.

\n\t *\n\t *

If cacheAsBitmapMatrix is non-null and supported, the\n\t * object is drawn to the off-screen bitmap using that matrix and the\n\t * stretched and/or rotated results of that rendering are used to draw the\n\t * object to the main display.

\n\t *\n\t *

No internal bitmap is created unless the cacheAsBitmap\n\t * property is set to true.

\n\t *\n\t *

After you set the cacheAsBitmap property to\n\t * true, the rendering does not change, however the display\n\t * object performs pixel snapping automatically. The animation speed can be\n\t * significantly faster depending on the complexity of the vector content.\n\t *

\n\t *\n\t *

The cacheAsBitmap property is automatically set to\n\t * true whenever you apply a filter to a display object(when\n\t * its filter array is not empty), and if a display object has a\n\t * filter applied to it, cacheAsBitmap is reported as\n\t * true for that display object, even if you set the property to\n\t * false. If you clear all filters for a display object, the\n\t * cacheAsBitmap setting changes to what it was last set to.

\n\t *\n\t *

A display object does not use a bitmap even if the\n\t * cacheAsBitmap property is set to true and\n\t * instead renders from vector data in the following cases:

\n\t *\n\t *
    \n\t *
  • The bitmap is too large. In AIR 1.5 and Flash Player 10, the maximum\n\t * size for a bitmap image is 8,191 pixels in width or height, and the total\n\t * number of pixels cannot exceed 16,777,215 pixels.(So, if a bitmap image\n\t * is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9\n\t * and earlier, the limitation is is 2880 pixels in height and 2,880 pixels\n\t * in width.
  • \n\t *
  • The bitmap fails to allocate(out of memory error).
  • \n\t *
\n\t *\n\t *

The cacheAsBitmap property is best used with movie clips\n\t * that have mostly static content and that do not scale and rotate\n\t * frequently. With such movie clips, cacheAsBitmap can lead to\n\t * performance increases when the movie clip is translated(when its x\n\t * and y position is changed).

\n\t */\n\tpublic cacheAsBitmap:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic castsShadows:boolean = true;\n\n\t/**\n\t * Indicates the depth of the display object, in pixels. The depth is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the depth property, the scaleZ property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content (such as an empty sprite) has a depth of 0, even if you try to\n\t * set depth to a different value.

\n\t */\n\tpublic get depth():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._depth;\n\t}\n\n\tpublic set depth(val:number)\n\t{\n\t\tif (this._depth == val)\n\t\t\treturn;\n\n\t\tthis._depth == val;\n\n\t\tthis._pScaleZ = val/this.bounds.aabb.depth;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Defines the rotation of the 3d object as a Vector3D object containing euler angles for rotation around x, y and z axis.\n\t */\n\tpublic get eulers():Vector3D\n\t{\n\t\tthis._eulers.x = this._rotationX*MathConsts.RADIANS_TO_DEGREES;\n\t\tthis._eulers.y = this._rotationY*MathConsts.RADIANS_TO_DEGREES;\n\t\tthis._eulers.z = this._rotationZ*MathConsts.RADIANS_TO_DEGREES;\n\n\t\treturn this._eulers;\n\t}\n\n\tpublic set eulers(value:Vector3D)\n\t{\n\t\tthis._rotationX = value.x*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationY = value.y*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationZ = value.z*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * An object that can contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * An indexed array that contains each filter object currently associated\n\t * with the display object. The flash.filters package contains several\n\t * classes that define specific filters you can use.\n\t *\n\t *

Filters can be applied in Flash Professional at design time, or at run\n\t * time by using ActionScript code. To apply a filter by using ActionScript,\n\t * you must make a temporary copy of the entire filters array,\n\t * modify the temporary array, then assign the value of the temporary array\n\t * back to the filters array. You cannot directly add a new\n\t * filter object to the filters array.

\n\t *\n\t *

To add a filter by using ActionScript, perform the following steps\n\t * (assume that the target display object is named\n\t * myDisplayObject):

\n\t *\n\t *
    \n\t *
  1. Create a new filter object by using the constructor method of your\n\t * chosen filter class.
  2. \n\t *
  3. Assign the value of the myDisplayObject.filters array\n\t * to a temporary array, such as one named myFilters.
  4. \n\t *
  5. Add the new filter object to the myFilters temporary\n\t * array.
  6. \n\t *
  7. Assign the value of the temporary array to the\n\t * myDisplayObject.filters array.
  8. \n\t *
\n\t *\n\t *

If the filters array is undefined, you do not need to use\n\t * a temporary array. Instead, you can directly assign an array literal that\n\t * contains one or more filter objects that you create. The first example in\n\t * the Examples section adds a drop shadow filter by using code that handles\n\t * both defined and undefined filters arrays.

\n\t *\n\t *

To modify an existing filter object, you must use the technique of\n\t * modifying a copy of the filters array:

\n\t *\n\t *
    \n\t *
  1. Assign the value of the filters array to a temporary\n\t * array, such as one named myFilters.
  2. \n\t *
  3. Modify the property by using the temporary array,\n\t * myFilters. For example, to set the quality property of the\n\t * first filter in the array, you could use the following code:\n\t * myFilters[0].quality = 1;
  4. \n\t *
  5. Assign the value of the temporary array to the filters\n\t * array.
  6. \n\t *
\n\t *\n\t *

At load time, if a display object has an associated filter, it is\n\t * marked to cache itself as a transparent bitmap. From this point forward,\n\t * as long as the display object has a valid filter list, the player caches\n\t * the display object as a bitmap. This source bitmap is used as a source\n\t * image for the filter effects. Each display object usually has two bitmaps:\n\t * one with the original unfiltered source display object and another for the\n\t * final image after filtering. The final image is used when rendering. As\n\t * long as the display object does not change, the final image does not need\n\t * updating.

\n\t *\n\t *

The flash.filters package includes classes for filters. For example, to\n\t * create a DropShadow filter, you would write:

\n\t *\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader output type is not compatible with\n\t * this operation(the shader must specify a\n\t * pixel4 output).\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader doesn't specify any image input or\n\t * the first input is not an image4 input.\n\t * @throws ArgumentError When filters includes a ShaderFilter\n\t * and the shader specifies an image input that isn't\n\t * provided.\n\t * @throws ArgumentError When filters includes a ShaderFilter, a\n\t * ByteArray or Vector. instance as a shader\n\t * input, and the width and\n\t * height properties aren't specified for\n\t * the ShaderInput object, or the specified values\n\t * don't match the amount of data in the input data.\n\t * See the ShaderInput.input property for\n\t * more information.\n\t */\n//\t\tpublic filters:Array;\n\n\t/**\n\t * Indicates the height of the display object, in pixels. The height is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the height property, the scaleY property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content (such as an empty sprite) has a height of 0, even if you try to\n\t * set height to a different value.

\n\t */\n\tpublic get height():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._height;\n\t}\n\n\tpublic set height(val:number)\n\t{\n\t\tif (this._height == val)\n\t\t\treturn;\n\n\t\tthis._height == val;\n\n\t\tthis._pScaleY = val/this.bounds.aabb.height;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the instance container index of the DisplayObject. The object can be\n\t * identified in the child list of its parent display object container by\n\t * calling the getChildByIndex() method of the display object\n\t * container.\n\t *\n\t *

If the DisplayObject has no parent container, index defaults to 0.

\n\t */\n\tpublic get index():number\n\t{\n\t\tif (this._pParent)\n\t\t\treturn this._pParent.getChildIndex(this);\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get inverseSceneTransform():Matrix3D\n\t{\n\t\tif (this._inverseSceneTransformDirty) {\n\t\t\tthis._inverseSceneTransform.copyFrom(this.sceneTransform);\n\t\t\tthis._inverseSceneTransform.invert();\n\t\t\tthis._inverseSceneTransformDirty = false;\n\t\t}\n\t\treturn this._inverseSceneTransform;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get ignoreTransform():boolean\n\t{\n\t\treturn this._pIgnoreTransform;\n\t}\n\n\tpublic set ignoreTransform(value:boolean)\n\t{\n\t\tif (this._pIgnoreTransform == value)\n\t\t\treturn;\n\n\t\tthis._pIgnoreTransform = value;\n\n\t\tif (value) {\n\t\t\tthis._pSceneTransform.identity();\n\t\t\tthis._scenePosition.setTo(0, 0, 0);\n\t\t}\n\n\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get isEntity()\n\t{\n\t\treturn this._pIsEntity;\n\t}\n\t/**\n\t * Returns a LoaderInfo object containing information about loading the file\n\t * to which this display object belongs. The loaderInfo property\n\t * is defined only for the root display object of a SWF file or for a loaded\n\t * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the\n\t * loaderInfo object associated with the SWF file that contains\n\t * a display object named myDisplayObject, use\n\t * myDisplayObject.root.loaderInfo.\n\t *\n\t *

A large SWF file can monitor its download by calling\n\t * this.root.loaderInfo.addEventListener(Event.COMPLETE,\n\t * func).

\n\t */\n\tpublic get loaderInfo():LoaderInfo\n\t{\n\t\treturn this._loaderInfo;\n\t}\n\n\t/**\n\t * The calling display object is masked by the specified mask\n\t * object. To ensure that masking works when the Stage is scaled, the\n\t * mask display object must be in an active part of the display\n\t * list. The mask object itself is not drawn. Set\n\t * mask to null to remove the mask.\n\t *\n\t *

To be able to scale a mask object, it must be on the display list. To\n\t * be able to drag a mask Sprite object(by calling its\n\t * startDrag() method), it must be on the display list. To call\n\t * the startDrag() method for a mask sprite based on a\n\t * mouseDown event being dispatched by the sprite, set the\n\t * sprite's buttonMode property to true.

\n\t *\n\t *

When display objects are cached by setting the\n\t * cacheAsBitmap property to true an the\n\t * cacheAsBitmapMatrix property to a Matrix object, both the\n\t * mask and the display object being masked must be part of the same cached\n\t * bitmap. Thus, if the display object is cached, then the mask must be a\n\t * child of the display object. If an ancestor of the display object on the\n\t * display list is cached, then the mask must be a child of that ancestor or\n\t * one of its descendents. If more than one ancestor of the masked object is\n\t * cached, then the mask must be a descendent of the cached container closest\n\t * to the masked object in the display list.

\n\t *\n\t *

Note: A single mask object cannot be used to mask\n\t * more than one calling display object. When the mask is\n\t * assigned to a second display object, it is removed as the mask of the\n\t * first object, and that object's mask property becomes\n\t * null.

\n\t */\n\tpublic mask:DisplayObject;\n\n\t/**\n\t * Specifies whether this object receives mouse, or other user input,\n\t * messages. The default value is true, which means that by\n\t * default any InteractiveObject instance that is on the display list\n\t * receives mouse events or other user input events. If\n\t * mouseEnabled is set to false, the instance does\n\t * not receive any mouse events(or other user input events like keyboard\n\t * events). Any children of this instance on the display list are not\n\t * affected. To change the mouseEnabled behavior for all\n\t * children of an object on the display list, use\n\t * flash.display.DisplayObjectContainer.mouseChildren.\n\t *\n\t *

No event is dispatched by setting this property. You must use the\n\t * addEventListener() method to create interactive\n\t * functionality.

\n\t */\n\tpublic get mouseEnabled():boolean\n\t{\n\t\treturn this._explicitMouseEnabled;\n\t}\n\n\tpublic set mouseEnabled(value:boolean)\n\t{\n\t\tif (this._explicitMouseEnabled == value)\n\t\t\treturn;\n\n\t\tthis._explicitMouseEnabled = value;\n\n\t\tthis._pUpdateImplicitMouseEnabled(this._pParent? this._pParent.mouseChildren : true);\n\t}\n\n\n\t/**\n\t * Indicates the x coordinate of the mouse or user input device position, in\n\t * pixels.\n\t *\n\t *

Note: For a DisplayObject that has been rotated, the returned x\n\t * coordinate will reflect the non-rotated object.

\n\t */\n\tpublic get mouseX():number\n\t{\n\t\treturn this._mouseX;\n\t}\n\n\t/**\n\t * Indicates the y coordinate of the mouse or user input device position, in\n\t * pixels.\n\t *\n\t *

Note: For a DisplayObject that has been rotated, the returned y\n\t * coordinate will reflect the non-rotated object.

\n\t */\n\tpublic get mouseY():number\n\t{\n\t\treturn this._mouseY;\n\t}\n\n\t/**\n\t * Indicates the instance name of the DisplayObject. The object can be\n\t * identified in the child list of its parent display object container by\n\t * calling the getChildByName() method of the display object\n\t * container.\n\t *\n\t * @throws IllegalOperationError If you are attempting to set this property\n\t * on an object that was placed on the timeline\n\t * in the Flash authoring tool.\n\t */\n\tpublic name:string;\n\n\t/**\n\t *\n\t */\n\tpublic orientationMode:string = OrientationMode.DEFAULT;\n\n\t/**\n\t * Indicates the DisplayObjectContainer object that contains this display\n\t * object. Use the parent property to specify a relative path to\n\t * display objects that are above the current display object in the display\n\t * list hierarchy.\n\t *\n\t *

You can use parent to move up multiple levels in the\n\t * display list as in the following:

\n\t *\n\t * @throws SecurityError The parent display object belongs to a security\n\t * sandbox to which you do not have access. You can\n\t * avoid this situation by having the parent movie call\n\t * the Security.allowDomain() method.\n\t */\n\tpublic get parent():DisplayObjectContainer\n\t{\n\t\treturn this._pParent;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get partition():Partition\n\t{\n\t\treturn this._explicitPartition;\n\t}\n\n\tpublic set partition(value:Partition)\n\t{\n\t\tif (this._explicitPartition == value)\n\t\t\treturn;\n\n\t\tif (this._pScene && this._explicitPartition)\n\t\t\tthis._pScene.iUnregisterPartition(this._explicitPartition);\n\n\t\tthis._explicitPartition = value;\n\n\t\tif (this._pScene && value)\n\t\t\tthis._pScene.iRegisterPartition(value);\n\n\t\tthis._pUpdateImplicitPartition(this._pParent? this._pParent._iAssignedPartition : null);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get partitionNode():EntityNode\n\t{\n\t\tif (!this._partitionNode)\n\t\t\tthis._partitionNode = this.pCreateEntityPartitionNode();\n\n\t\treturn this._partitionNode;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get pickingCollider():IPickingCollider\n\t{\n\t\treturn this._pPickingCollider;\n\t}\n\n\tpublic set pickingCollider(value:IPickingCollider)\n\t{\n\t\tthis._pPickingCollider = value;\n\t}\n\n\t/**\n\t * Defines the local point around which the object rotates.\n\t */\n\tpublic get pivot():Vector3D\n\t{\n\t\treturn this._pivot;\n\t}\n\n\n\tpublic set pivot(pivot:Vector3D)\n\t{\n\t\tthis._pivot = pivot.clone();\n\n\t\tthis.invalidatePivot();\n\t}\n\n\t/**\n\t * For a display object in a loaded SWF file, the root property\n\t * is the top-most display object in the portion of the display list's tree\n\t * structure represented by that SWF file. For a Bitmap object representing a\n\t * loaded image file, the root property is the Bitmap object\n\t * itself. For the instance of the main class of the first SWF file loaded,\n\t * the root property is the display object itself. The\n\t * root property of the Stage object is the Stage object itself.\n\t * The root property is set to null for any display\n\t * object that has not been added to the display list, unless it has been\n\t * added to a display object container that is off the display list but that\n\t * is a child of the top-most display object in a loaded SWF file.\n\t *\n\t *

For example, if you create a new Sprite object by calling the\n\t * Sprite() constructor method, its root property\n\t * is null until you add it to the display list(or to a display\n\t * object container that is off the display list but that is a child of the\n\t * top-most display object in a SWF file).

\n\t *\n\t *

For a loaded SWF file, even though the Loader object used to load the\n\t * file may not be on the display list, the top-most display object in the\n\t * SWF file has its root property set to itself. The Loader\n\t * object does not have its root property set until it is added\n\t * as a child of a display object for which the root property is\n\t * set.

\n\t */\n\tpublic get root():DisplayObjectContainer\n\t{\n\t\treturn this._root;\n\t}\n\n\t/**\n\t * Indicates the rotation of the DisplayObject instance, in degrees, from its\n\t * original orientation. Values from 0 to 180 represent clockwise rotation;\n\t * values from 0 to -180 represent counterclockwise rotation. Values outside\n\t * this range are added to or subtracted from 360 to obtain a value within\n\t * the range. For example, the statement my_video.rotation = 450\n\t * is the same as my_video.rotation = 90.\n\t */\n\tpublic rotation:number; //TODO\n\n\t/**\n\t * Indicates the x-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationX():number\n\t{\n\t\treturn this._rotationX*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationX(val:number)\n\t{\n\t\tif (this.rotationX == val)\n\t\t\treturn;\n\n\t\tthis._rotationX = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Indicates the y-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationY():number\n\t{\n\t\treturn this._rotationY*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationY(val:number)\n\t{\n\t\tif (this.rotationY == val)\n\t\t\treturn;\n\n\t\tthis._rotationY = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Indicates the z-axis rotation of the DisplayObject instance, in degrees,\n\t * from its original orientation relative to the 3D parent container. Values\n\t * from 0 to 180 represent clockwise rotation; values from 0 to -180\n\t * represent counterclockwise rotation. Values outside this range are added\n\t * to or subtracted from 360 to obtain a value within the range.\n\t */\n\tpublic get rotationZ():number\n\t{\n\t\treturn this._rotationZ*MathConsts.RADIANS_TO_DEGREES;\n\t}\n\n\tpublic set rotationZ(val:number)\n\t{\n\t\tif (this.rotationZ == val)\n\t\t\treturn;\n\n\t\tthis._rotationZ = val*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * The current scaling grid that is in effect. If set to null,\n\t * the entire display object is scaled normally when any scale transformation\n\t * is applied.\n\t *\n\t *

When you define the scale9Grid property, the display\n\t * object is divided into a grid with nine regions based on the\n\t * scale9Grid rectangle, which defines the center region of the\n\t * grid. The eight other regions of the grid are the following areas:

\n\t *\n\t *
    \n\t *
  • The upper-left corner outside of the rectangle
  • \n\t *
  • The area above the rectangle
  • \n\t *
  • The upper-right corner outside of the rectangle
  • \n\t *
  • The area to the left of the rectangle
  • \n\t *
  • The area to the right of the rectangle
  • \n\t *
  • The lower-left corner outside of the rectangle
  • \n\t *
  • The area below the rectangle
  • \n\t *
  • The lower-right corner outside of the rectangle
  • \n\t *
\n\t *\n\t *

You can think of the eight regions outside of the center(defined by\n\t * the rectangle) as being like a picture frame that has special rules\n\t * applied to it when scaled.

\n\t *\n\t *

When the scale9Grid property is set and a display object\n\t * is scaled, all text and gradients are scaled normally; however, for other\n\t * types of objects the following rules apply:

\n\t *\n\t *
    \n\t *
  • Content in the center region is scaled normally.
  • \n\t *
  • Content in the corners is not scaled.
  • \n\t *
  • Content in the top and bottom regions is scaled horizontally only.\n\t * Content in the left and right regions is scaled vertically only.
  • \n\t *
  • All fills(including bitmaps, video, and gradients) are stretched to\n\t * fit their shapes.
  • \n\t *
\n\t *\n\t *

If a display object is rotated, all subsequent scaling is normal(and\n\t * the scale9Grid property is ignored).

\n\t *\n\t *

For example, consider the following display object and a rectangle that\n\t * is applied as the display object's scale9Grid:

\n\t *\n\t *

A common use for setting scale9Grid is to set up a display\n\t * object to be used as a component, in which edge regions retain the same\n\t * width when the component is scaled.

\n\t *\n\t * @throws ArgumentError If you pass an invalid argument to the method.\n\t */\n\tpublic scale9Grid:Rectangle;\n\n\t/**\n\t * Indicates the horizontal scale(percentage) of the object as applied from\n\t * the registration point. The default registration point is(0,0). 1.0\n\t * equals 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x and\n\t * y property values, which are defined in whole pixels.

\n\t */\n\tpublic get scaleX():number\n\t{\n\t\treturn this._pScaleX;\n\t}\n\n\tpublic set scaleX(val:number)\n\t{\n\t\tif (this._pScaleX == val)\n\t\t\treturn;\n\n\t\tthis._pScaleX = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the vertical scale(percentage) of an object as applied from the\n\t * registration point of the object. The default registration point is(0,0).\n\t * 1.0 is 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x and\n\t * y property values, which are defined in whole pixels.

\n\t */\n\tpublic get scaleY():number\n\t{\n\t\treturn this._pScaleY;\n\t}\n\n\tpublic set scaleY(val:number)\n\t{\n\t\tif (this._pScaleY == val)\n\t\t\treturn;\n\n\t\tthis._pScaleY = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t * Indicates the depth scale(percentage) of an object as applied from the\n\t * registration point of the object. The default registration point is(0,0).\n\t * 1.0 is 100% scale.\n\t *\n\t *

Scaling the local coordinate system changes the x,\n\t * y and z property values, which are defined in\n\t * whole pixels.

\n\t */\n\tpublic get scaleZ():number\n\t{\n\t\treturn this._pScaleZ;\n\t}\n\n\tpublic set scaleZ(val:number)\n\t{\n\t\tif (this._pScaleZ == val)\n\t\t\treturn;\n\n\t\tthis._pScaleZ = val;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scene():Scene\n\t{\n\t\treturn this._pScene;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scenePosition():Vector3D\n\t{\n\t\tif (this._scenePositionDirty) {\n\t\t\tif (!this._pivotZero && this.alignmentMode == AlignmentMode.PIVOT_POINT) {\n\t\t\t\tvar pivotScale:Vector3D = new Vector3D(this._pivot.x/this._pScaleX, this._pivot.y/this._pScaleY, this._pivot.z/this._pScaleZ)\n\t\t\t\t\tthis._scenePosition = this.sceneTransform.transformVector(pivotScale);\n\t\t\t\t//this._scenePosition.decrementBy(new Vector3D(this._pivot.x*this._pScaleX, this._pivot.y*this._pScaleY, this._pivot.z*this._pScaleZ));\n\t\t\t} else {\n\t\t\t\tthis.sceneTransform.copyColumnTo(3, this._scenePosition);\n\t\t\t}\n\n\t\t\tthis._scenePositionDirty = false;\n\t\t}\n\t\treturn this._scenePosition;\n\t}\n\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._pSceneTransform;\n\t}\n\n\t/**\n\t * The scroll rectangle bounds of the display object. The display object is\n\t * cropped to the size defined by the rectangle, and it scrolls within the\n\t * rectangle when you change the x and y properties\n\t * of the scrollRect object.\n\t *\n\t *

The properties of the scrollRect Rectangle object use the\n\t * display object's coordinate space and are scaled just like the overall\n\t * display object. The corner bounds of the cropped window on the scrolling\n\t * display object are the origin of the display object(0,0) and the point\n\t * defined by the width and height of the rectangle. They are not centered\n\t * around the origin, but use the origin to define the upper-left corner of\n\t * the area. A scrolled display object always scrolls in whole pixel\n\t * increments.

\n\t *\n\t *

You can scroll an object left and right by setting the x\n\t * property of the scrollRect Rectangle object. You can scroll\n\t * an object up and down by setting the y property of the\n\t * scrollRect Rectangle object. If the display object is rotated\n\t * 90° and you scroll it left and right, the display object actually scrolls\n\t * up and down.

\n\t */\n\tpublic scrollRect:Rectangle;\n\n\t/**\n\t *\n\t */\n\tpublic get shaderPickingDetails():boolean\n\t{\n\t\treturn this._shaderPickingDetails;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get boundsVisible():boolean\n\t{\n\t\treturn this._boundsVisible;\n\t}\n\n\tpublic set boundsVisible(value:boolean)\n\t{\n\t\tif (value == this._boundsVisible)\n\t\t\treturn;\n\n\t\tthis._boundsVisible = value;\n\n\t\tthis._partitionNode.boundsVisible = value;\n\t}\n\n\t/**\n\t * An object with properties pertaining to a display object's matrix, color\n\t * transform, and pixel bounds. The specific properties - matrix,\n\t * colorTransform, and three read-only properties\n\t * (concatenatedMatrix, concatenatedColorTransform,\n\t * and pixelBounds) - are described in the entry for the\n\t * Transform class.\n\t *\n\t *

Each of the transform object's properties is itself an object. This\n\t * concept is important because the only way to set new values for the matrix\n\t * or colorTransform objects is to create a new object and copy that object\n\t * into the transform.matrix or transform.colorTransform property.

\n\t *\n\t *

For example, to increase the tx value of a display\n\t * object's matrix, you must make a copy of the entire matrix object, then\n\t * copy the new object into the matrix property of the transform object:

\n\t *
 public myMatrix:Matrix =\n\t * myDisplayObject.transform.matrix; myMatrix.tx += 10;\n\t * myDisplayObject.transform.matrix = myMatrix; 
\n\t *\n\t *

You cannot directly set the tx property. The following\n\t * code has no effect on myDisplayObject:

\n\t *
 myDisplayObject.transform.matrix.tx +=\n\t * 10; 
\n\t *\n\t *

You can also copy an entire transform object and assign it to another\n\t * display object's transform property. For example, the following code\n\t * copies the entire transform object from myOldDisplayObj to\n\t * myNewDisplayObj:

\n\t * myNewDisplayObj.transform = myOldDisplayObj.transform;\n\t *\n\t *

The resulting display object, myNewDisplayObj, now has the\n\t * same values for its matrix, color transform, and pixel bounds as the old\n\t * display object, myOldDisplayObj.

\n\t *\n\t *

Note that AIR for TV devices use hardware acceleration, if it is\n\t * available, for color transforms.

\n\t */\n\tpublic get transform():Transform\n\t{\n\t\treturn this._transform;\n\t}\n\n\t/**\n\t * Whether or not the display object is visible. Display objects that are not\n\t * visible are disabled. For example, if visible=false for an\n\t * InteractiveObject instance, it cannot be clicked.\n\t */\n\tpublic get visible():boolean\n\t{\n\t\treturn this._explicitVisibility;\n\t}\n\n\tpublic set visible(value:boolean)\n\t{\n\t\tif (this._explicitVisibility == value)\n\t\t\treturn;\n\n\t\tthis._explicitVisibility = value;\n\n\t\tthis._pUpdateImplicitVisibility(this._pParent? this._pParent._iIsVisible() : true);\n\t}\n\n\t/**\n\t * Indicates the width of the display object, in pixels. The width is\n\t * calculated based on the bounds of the content of the display object. When\n\t * you set the width property, the scaleX property\n\t * is adjusted accordingly, as shown in the following code:\n\t *\n\t *

Except for TextField and Video objects, a display object with no\n\t * content(such as an empty sprite) has a width of 0, even if you try to set\n\t * width to a different value.

\n\t */\n\tpublic get width():number\n\t{\n\t\tif (this._pBoundsInvalid)\n\t\t\tthis.pUpdateBounds();\n\n\t\treturn this._width;\n\t}\n\n\tpublic set width(val:number)\n\t{\n\t\tif (this._width == val)\n\t\t\treturn;\n\n\t\tthis._width == val;\n\n\t\tthis._pScaleX = val/this.bounds.aabb.width;\n\n\t\tthis.invalidateScale();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get worldBounds():BoundingVolumeBase\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the bounds of the entity, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tif (this._worldBoundsInvalid) {\n\t\t\tthis._worldBoundsInvalid = false;\n\t\t\tthis._worldBounds.transformFrom(this.bounds, this.sceneTransform);\n\t\t}\n\n\t\treturn this._worldBounds;\n\t}\n\n\t/**\n\t * Indicates the x coordinate of the DisplayObject instance relative\n\t * to the local coordinates of the parent DisplayObjectContainer. If the\n\t * object is inside a DisplayObjectContainer that has transformations, it is\n\t * in the local coordinate system of the enclosing DisplayObjectContainer.\n\t * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\n\t * DisplayObjectContainer's children inherit a coordinate system that is\n\t * rotated 90° counterclockwise. The object's coordinates refer to the\n\t * registration point position.\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._x;\n\t}\n\n\tpublic set x(val:number)\n\t{\n\t\tif (this._x == val)\n\t\t\treturn;\n\n\t\tthis._x = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Indicates the y coordinate of the DisplayObject instance relative\n\t * to the local coordinates of the parent DisplayObjectContainer. If the\n\t * object is inside a DisplayObjectContainer that has transformations, it is\n\t * in the local coordinate system of the enclosing DisplayObjectContainer.\n\t * Thus, for a DisplayObjectContainer rotated 90° counterclockwise, the\n\t * DisplayObjectContainer's children inherit a coordinate system that is\n\t * rotated 90° counterclockwise. The object's coordinates refer to the\n\t * registration point position.\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._y;\n\t}\n\n\tpublic set y(val:number)\n\t{\n\t\tif (this._y == val)\n\t\t\treturn;\n\n\t\tthis._y = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Indicates the z coordinate position along the z-axis of the DisplayObject\n\t * instance relative to the 3D parent container. The z property is used for\n\t * 3D coordinates, not screen or pixel coordinates.\n\t *\n\t *

When you set a z property for a display object to\n\t * something other than the default value of 0, a corresponding\n\t * Matrix3D object is automatically created. for adjusting a display object's\n\t * position and orientation in three dimensions. When working with the\n\t * z-axis, the existing behavior of x and y properties changes from screen or\n\t * pixel coordinates to positions relative to the 3D parent container.

\n\t *\n\t *

For example, a child of the _root at position x = 100, y =\n\t * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn\n\t * wherever the 3D projection calculation puts it. The calculation is:

\n\t *\n\t *

(x~~cameraFocalLength/cameraRelativeZPosition,\n\t * y~~cameraFocalLength/cameraRelativeZPosition)

\n\t */\n\tpublic get z():number\n\t{\n\t\treturn this._z;\n\t}\n\n\tpublic set z(val:number)\n\t{\n\t\tif (this._z == val)\n\t\t\treturn;\n\n\t\tthis._z = val;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get zOffset():number\n\t{\n\t\treturn this._zOffset;\n\t}\n\n\tpublic set zOffset(value:number)\n\t{\n\t\tthis._zOffset = value;\n\t}\n\n\t/**\n\t * Creates a new DisplayObject instance.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t// Cached vector of transformation components used when\n\t\t// recomposing the transform matrix in updateTransform()\n\n\t\tthis._transformComponents = new Array(3);//_transformComponents = new Vector.(3, true);\n\n\t\tthis._transformComponents[0] = this._pos;\n\t\tthis._transformComponents[1] = this._rot;\n\t\tthis._transformComponents[2] = this._sca;\n\n\t\t//creation of associated transform object\n\t\tthis._transform = new Transform(this);\n\n\t\tthis._matrix3D.identity();\n\n\t\tthis._flipY.appendScale(1, -1, 1);\n\n\t\tthis._pBounds = this.pCreateDefaultBoundingVolume();\n\n\t\tthis._worldBounds = this.pCreateDefaultBoundingVolume();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic addEventListener(type:string, listener:Function)\n\t{\n\t\tsuper.addEventListener(type, listener);\n\n\t\tswitch (type) {\n\t\t\tcase DisplayObjectEvent.POSITION_CHANGED:\n\t\t\t\tthis._listenToPositionChanged = true;\n\t\t\t\tbreak;\n\t\t\tcase DisplayObjectEvent.ROTATION_CHANGED:\n\t\t\t\tthis._listenToRotationChanged = true;\n\t\t\t\tbreak;\n\t\t\tcase DisplayObjectEvent.SCALE_CHANGED:\n\t\t\t\tthis._listenToScaleChanged = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:DisplayObject = new DisplayObject();\n\t\tclone.pivot = this.pivot;\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.name = name;\n\n\t\t// todo: implement for all subtypes\n\t\treturn clone;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tif (this.parent)\n\t\t\tthis.parent.removeChild(this);\n\n\t\twhile (this._pRenderables.length)\n\t\t\tthis._pRenderables[0].dispose();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic disposeAsset()\n\t{\n\t\tthis.dispose();\n\t}\n\n\t/**\n\t * Returns a rectangle that defines the area of the display object relative\n\t * to the coordinate system of the targetCoordinateSpace object.\n\t * Consider the following code, which shows how the rectangle returned can\n\t * vary depending on the targetCoordinateSpace parameter that\n\t * you pass to the method:\n\t *\n\t *

Note: Use the localToGlobal() and\n\t * globalToLocal() methods to convert the display object's local\n\t * coordinates to display coordinates, or display coordinates to local\n\t * coordinates, respectively.

\n\t *\n\t *

The getBounds() method is similar to the\n\t * getRect() method; however, the Rectangle returned by the\n\t * getBounds() method includes any strokes on shapes, whereas\n\t * the Rectangle returned by the getRect() method does not. For\n\t * an example, see the description of the getRect() method.

\n\t *\n\t * @param targetCoordinateSpace The display object that defines the\n\t * coordinate system to use.\n\t * @return The rectangle that defines the area of the display object relative\n\t * to the targetCoordinateSpace object's coordinate\n\t * system.\n\t */\n\tpublic getBounds(targetCoordinateSpace:DisplayObject):Rectangle\n\t{\n\t\treturn this._bounds; //TODO\n\t}\n\n\t/**\n\t * Returns a rectangle that defines the boundary of the display object, based\n\t * on the coordinate system defined by the targetCoordinateSpace\n\t * parameter, excluding any strokes on shapes. The values that the\n\t * getRect() method returns are the same or smaller than those\n\t * returned by the getBounds() method.\n\t *\n\t *

Note: Use localToGlobal() and\n\t * globalToLocal() methods to convert the display object's local\n\t * coordinates to Stage coordinates, or Stage coordinates to local\n\t * coordinates, respectively.

\n\t *\n\t * @param targetCoordinateSpace The display object that defines the\n\t * coordinate system to use.\n\t * @return The rectangle that defines the area of the display object relative\n\t * to the targetCoordinateSpace object's coordinate\n\t * system.\n\t */\n\tpublic getRect(targetCoordinateSpace:DisplayObject):Rectangle\n\t{\n\t\treturn this._bounds; //TODO\n\t}\n\n\t/**\n\t * Converts the point object from the Stage(global) coordinates\n\t * to the display object's(local) coordinates.\n\t *\n\t *

To use this method, first create an instance of the Point class. The\n\t * x and y values that you assign represent global coordinates\n\t * because they relate to the origin(0,0) of the main display area. Then\n\t * pass the Point instance as the parameter to the\n\t * globalToLocal() method. The method returns a new Point object\n\t * with x and y values that relate to the origin of the display\n\t * object instead of the origin of the Stage.

\n\t *\n\t * @param point An object created with the Point class. The Point object\n\t * specifies the x and y coordinates as\n\t * properties.\n\t * @return A Point object with coordinates relative to the display object.\n\t */\n\tpublic globalToLocal(point:Point):Point\n\t{\n\t\treturn point; //TODO\n\t}\n\n\t/**\n\t * Converts a two-dimensional point from the Stage(global) coordinates to a\n\t * three-dimensional display object's(local) coordinates.\n\t *\n\t *

To use this method, first create an instance of the Point class. The x\n\t * and y values that you assign to the Point object represent global\n\t * coordinates because they are relative to the origin(0,0) of the main\n\t * display area. Then pass the Point object to the\n\t * globalToLocal3D() method as the point parameter.\n\t * The method returns three-dimensional coordinates as a Vector3D object\n\t * containing x, y, and z values that\n\t * are relative to the origin of the three-dimensional display object.

\n\t *\n\t * @param point A two dimensional Point object representing global x and y\n\t * coordinates.\n\t * @return A Vector3D object with coordinates relative to the\n\t * three-dimensional display object.\n\t */\n\tpublic globalToLocal3D(point:Point):Vector3D\n\t{\n\t\treturn new Vector3D(); //TODO\n\t}\n\n\t/**\n\t * Evaluates the bounding box of the display object to see if it overlaps or\n\t * intersects with the bounding box of the obj display object.\n\t *\n\t * @param obj The display object to test against.\n\t * @return true if the bounding boxes of the display objects\n\t * intersect; false if not.\n\t */\n\tpublic hitTestObject(obj:DisplayObject):boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * Evaluates the display object to see if it overlaps or intersects with the\n\t * point specified by the x and y parameters. The\n\t * x and y parameters specify a point in the\n\t * coordinate space of the Stage, not the display object container that\n\t * contains the display object(unless that display object container is the\n\t * Stage).\n\t *\n\t * @param x The x coordinate to test against this object.\n\t * @param y The y coordinate to test against this object.\n\t * @param shapeFlag Whether to check against the actual pixels of the object\n\t * (true) or the bounding box\n\t * (false).\n\t * @return true if the display object overlaps or intersects\n\t * with the specified point; false otherwise.\n\t */\n\tpublic hitTestPoint(x:number, y:number, shapeFlag:boolean = false):boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\tvar localRayPosition:Vector3D = this.inverseSceneTransform.transformVector(rayPosition);\n\t\tvar localRayDirection:Vector3D = this.inverseSceneTransform.deltaTransformVector(rayDirection);\n\t\tvar pickingCollisionVO:PickingCollisionVO = this._iPickingCollisionVO;\n\n\t\tif (!pickingCollisionVO.localNormal)\n\t\t\tpickingCollisionVO.localNormal = new Vector3D();\n\n\t\tvar rayEntryDistance:number = this.bounds.rayIntersection(localRayPosition, localRayDirection, pickingCollisionVO.localNormal);\n\n\t\tif (rayEntryDistance < 0)\n\t\t\treturn false;\n\n\t\tpickingCollisionVO.rayEntryDistance = rayEntryDistance;\n\t\tpickingCollisionVO.localRayPosition = localRayPosition;\n\t\tpickingCollisionVO.localRayDirection = localRayDirection;\n\t\tpickingCollisionVO.rayPosition = rayPosition;\n\t\tpickingCollisionVO.rayDirection = rayDirection;\n\t\tpickingCollisionVO.rayOriginIsInsideBounds = rayEntryDistance == 0;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Converts a three-dimensional point of the three-dimensional display\n\t * object's(local) coordinates to a two-dimensional point in the Stage\n\t * (global) coordinates.\n\t *\n\t *

For example, you can only use two-dimensional coordinates(x,y) to draw\n\t * with the display.Graphics methods. To draw a\n\t * three-dimensional object, you need to map the three-dimensional\n\t * coordinates of a display object to two-dimensional coordinates. First,\n\t * create an instance of the Vector3D class that holds the x-, y-, and z-\n\t * coordinates of the three-dimensional display object. Then pass the\n\t * Vector3D object to the local3DToGlobal() method as the\n\t * point3d parameter. The method returns a two-dimensional Point\n\t * object that can be used with the Graphics API to draw the\n\t * three-dimensional object.

\n\t *\n\t * @param point3d A Vector3D object containing either a three-dimensional\n\t * point or the coordinates of the three-dimensional display\n\t * object.\n\t * @return A two-dimensional point representing a three-dimensional point in\n\t * two-dimensional space.\n\t */\n\tpublic local3DToGlobal(point3d:Vector3D):Point\n\t{\n\t\treturn new Point(); //TODO\n\t}\n\n\t/**\n\t * Rotates the 3d object around to face a point defined relative to the local coordinates of the parent ObjectContainer3D.\n\t *\n\t * @param target The vector defining the point to be looked at\n\t * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred\n\t */\n\tpublic lookAt(target:Vector3D, upAxis:Vector3D = null)\n\t{\n\n\t\tvar yAxis:Vector3D;\n\t\tvar zAxis:Vector3D;\n\t\tvar xAxis:Vector3D;\n\t\tvar raw:Array;\n\n\t\tif (upAxis == null)\n\t\t\tupAxis = Vector3D.Y_AXIS;\n\t\telse\n\t\t\tupAxis.normalize();\n\n\t\tzAxis = target.subtract(this._iMatrix3D.position);\n\t\tzAxis.normalize();\n\n\t\txAxis = upAxis.crossProduct(zAxis);\n\t\txAxis.normalize();\n\n\t\tif (xAxis.length < 0.05) {\n\t\t\txAxis.x = upAxis.y;\n\t\t\txAxis.y = upAxis.x;\n\t\t\txAxis.z = 0;\n\t\t\txAxis.normalize();\n\t\t}\n\n\t\tyAxis = zAxis.crossProduct(xAxis);\n\n\t\traw = Matrix3DUtils.RAW_DATA_CONTAINER;\n\n\t\traw[0] = xAxis.x;\n\t\traw[1] = xAxis.y;\n\t\traw[2] = xAxis.z;\n\t\traw[3] = 0;\n\n\t\traw[4] = yAxis.x;\n\t\traw[5] = yAxis.y;\n\t\traw[6] = yAxis.z;\n\t\traw[7] = 0;\n\n\t\traw[8] = zAxis.x;\n\t\traw[9] = zAxis.y;\n\t\traw[10] = zAxis.z;\n\t\traw[11] = 0;\n\n\t\tvar m:Matrix3D = new Matrix3D();\n\t\tm.copyRawDataFrom(raw);\n\n\t\tvar vec:Vector3D = m.decompose()[1];\n\n\t\tthis._rotationX = vec.x;\n\t\tthis._rotationY = vec.y;\n\t\tthis._rotationZ = vec.z;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Converts the point object from the display object's(local)\n\t * coordinates to the Stage(global) coordinates.\n\t *\n\t *

This method allows you to convert any given x and y\n\t * coordinates from values that are relative to the origin(0,0) of a\n\t * specific display object(local coordinates) to values that are relative to\n\t * the origin of the Stage(global coordinates).

\n\t *\n\t *

To use this method, first create an instance of the Point class. The\n\t * x and y values that you assign represent local coordinates\n\t * because they relate to the origin of the display object.

\n\t *\n\t *

You then pass the Point instance that you created as the parameter to\n\t * the localToGlobal() method. The method returns a new Point\n\t * object with x and y values that relate to the origin of the\n\t * Stage instead of the origin of the display object.

\n\t *\n\t * @param point The name or identifier of a point created with the Point\n\t * class, specifying the x and y coordinates as\n\t * properties.\n\t * @return A Point object with coordinates relative to the Stage.\n\t */\n\tpublic localToGlobal(point:Point):Point\n\t{\n\t\treturn new Point(); //TODO\n\t}\n\n\t/**\n\t * Moves the 3d object directly to a point in space\n\t *\n\t * @param dx The amount of movement along the local x axis.\n\t * @param dy The amount of movement along the local y axis.\n\t * @param dz The amount of movement along the local z axis.\n\t */\n\n\tpublic moveTo(dx:number, dy:number, dz:number)\n\t{\n\t\tif (this._x == dx && this._y == dy && this._z == dz)\n\t\t\treturn;\n\n\t\tthis._x = dx;\n\t\tthis._y = dy;\n\t\tthis._z = dz;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Moves the local point around which the object rotates.\n\t *\n\t * @param dx The amount of movement along the local x axis.\n\t * @param dy The amount of movement along the local y axis.\n\t * @param dz The amount of movement along the local z axis.\n\t */\n\tpublic movePivot(dx:number, dy:number, dz:number)\n\t{\n\t\tif (this._pivot == null)\n\t\t\tthis._pivot = new Vector3D();\n\n\t\tthis._pivot.x += dx;\n\t\tthis._pivot.y += dy;\n\t\tthis._pivot.z += dz;\n\n\t\tthis.invalidatePivot();\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local x-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic pitch(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.X_AXIS, angle);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\tif (this.orientationMode == OrientationMode.CAMERA_PLANE) {\n\t\t\tvar comps:Array = camera.sceneTransform.decompose();\n\t\t\tvar scale:Vector3D = comps[2];\n\t\t\tcomps[0] = this.scenePosition;\n\t\t\tscale.x = this._pScaleX;\n\t\t\tscale.y = this._pScaleY;\n\t\t\tscale.z = this._pScaleZ;\n\t\t\tthis._orientationMatrix.recompose(comps);\n\n\t\t\t//add in case of pivot\n\t\t\tif (!this._pivotZero && this.alignmentMode == AlignmentMode.PIVOT_POINT)\n\t\t\t\tthis._orientationMatrix.prependTranslation(-this._pivot.x/this._pScaleX, -this._pivot.y/this._pScaleY, -this._pivot.z/this._pScaleZ);\n\n\t\t\treturn this._orientationMatrix;\n\t\t}\n\n\t\treturn this.sceneTransform;\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local z-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic roll(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.Z_AXIS, angle);\n\t}\n\n\t/**\n\t * Rotates the 3d object around an axis by a defined angle\n\t *\n\t * @param axis The vector defining the axis of rotation\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic rotate(axis:Vector3D, angle:number)\n\t{\n\t\tvar m:Matrix3D = new Matrix3D();\n\t\tm.prependRotation(angle, axis);\n\n\t\tvar vec:Vector3D = m.decompose()[1];\n\n\t\tthis._rotationX += vec.x;\n\t\tthis._rotationY += vec.y;\n\t\tthis._rotationZ += vec.z;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t * Rotates the 3d object directly to a euler angle\n\t *\n\t * @param ax The angle in degrees of the rotation around the x axis.\n\t * @param ay The angle in degrees of the rotation around the y axis.\n\t * @param az The angle in degrees of the rotation around the z axis.\n\t */\n\tpublic rotateTo(ax:number, ay:number, az:number)\n\t{\n\t\tthis._rotationX = ax*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationY = ay*MathConsts.DEGREES_TO_RADIANS;\n\t\tthis._rotationZ = az*MathConsts.DEGREES_TO_RADIANS;\n\n\t\tthis.invalidateRotation();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic removeEventListener(type:string, listener:Function)\n\t{\n\t\tsuper.removeEventListener(type, listener);\n\n\t\tif (this.hasEventListener(type, listener))\n\t\t\treturn;\n\n\t\tswitch (type) {\n\t\t\tcase DisplayObjectEvent.POSITION_CHANGED:\n\t\t\t\tthis._listenToPositionChanged = false;\n\t\t\t\tbreak;\n\n\t\t\tcase DisplayObjectEvent.ROTATION_CHANGED:\n\t\t\t\tthis._listenToRotationChanged = false;\n\t\t\t\tbreak;\n\n\t\t\tcase DisplayObjectEvent.SCALE_CHANGED:\n\t\t\t\tthis._listenToScaleChanged = false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Moves the 3d object along a vector by a defined length\n\t *\n\t * @param axis The vector defining the axis of movement\n\t * @param distance The length of the movement\n\t */\n\tpublic translate(axis:Vector3D, distance:number)\n\t{\n\t\tvar x:number = axis.x, y:number = axis.y, z:number = axis.z;\n\t\tvar len:number = distance/Math.sqrt(x*x + y*y + z*z);\n\n\t\tthis._x += x*len;\n\t\tthis._y += y*len;\n\t\tthis._z += z*len;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Moves the 3d object along a vector by a defined length\n\t *\n\t * @param axis The vector defining the axis of movement\n\t * @param distance The length of the movement\n\t */\n\tpublic translateLocal(axis:Vector3D, distance:number)\n\t{\n\t\tvar x:number = axis.x, y:number = axis.y, z:number = axis.z;\n\t\tvar len:number = distance/Math.sqrt(x*x + y*y + z*z);\n\n\t\tthis._iMatrix3D.prependTranslation(x*len, y*len, z*len);\n\n\t\tthis._matrix3D.copyColumnTo(3, this._pos);\n\n\t\tthis._x = this._pos.x;\n\t\tthis._y = this._pos.y;\n\t\tthis._z = this._pos.z;\n\n\t\tthis.invalidatePosition();\n\t}\n\n\t/**\n\t * Rotates the 3d object around it's local y-axis\n\t *\n\t * @param angle The amount of rotation in degrees\n\t */\n\tpublic yaw(angle:number)\n\t{\n\t\tthis.rotate(Vector3D.Y_AXIS, angle);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iController:ControllerBase;\n\n\t/**\n\t * @internal\n\t */\n\tpublic get _iAssignedPartition():Partition\n\t{\n\t\treturn this._pImplicitPartition;\n\t}\n\n\t/**\n\t * The transformation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t *\n\t * @internal\n\t */\n\tpublic get _iMatrix3D():Matrix3D\n\t{\n\t\tif (this._matrix3DDirty)\n\t\t\tthis._pUpdateMatrix3D();\n\n\t\treturn this._matrix3D;\n\t}\n\n\tpublic set _iMatrix3D(val:Matrix3D)\n\t{\n\n\t\t// TODO: From AS3 - Do we still need this in JS ?\n\t\t//ridiculous matrix error\n\t\t/*\n\t\tif (!val.rawData[0]) {\n\n\t\t\tvar raw:number[] = Matrix3DUtils.RAW_DATA_CONTAINER;\n\t\t\tval.copyRawDataTo(raw);\n\t\t\traw[0] = this._smallestNumber;\n\t\t\tval.copyRawDataFrom(raw);\n\t\t}\n\t\t//*/\n\t\tvar elements:Array = val.decompose();\n\t\tvar vec:Vector3D;\n\n\t\tvec = elements[0];\n\n\t\tif (this._x != vec.x || this._y != vec.y || this._z != vec.z) {\n\t\t\tthis._x = vec.x;\n\t\t\tthis._y = vec.y;\n\t\t\tthis._z = vec.z;\n\n\t\t\tthis.invalidatePosition();\n\t\t}\n\n\t\tvec = elements[1];\n\n\t\tif (this._rotationX != vec.x || this._rotationY != vec.y || this._rotationZ != vec.z) {\n\t\t\tthis._rotationX = vec.x;\n\t\t\tthis._rotationY = vec.y;\n\t\t\tthis._rotationZ = vec.z;\n\n\t\t\tthis.invalidateRotation();\n\t\t}\n\n\t\tvec = elements[2];\n\n\t\tif (this._pScaleX != vec.x || this._pScaleY != vec.y || this._pScaleZ != vec.z) {\n\t\t\tthis._pScaleX = vec.x;\n\t\t\tthis._pScaleY = vec.y;\n\t\t\tthis._pScaleZ = vec.z;\n\n\t\t\tthis.invalidateScale();\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic get _iPickingCollisionVO():PickingCollisionVO\n\t{\n\t\tif (!this._pPickingCollisionVO)\n\t\t\tthis._pPickingCollisionVO = new PickingCollisionVO(this);\n\n\t\treturn this._pPickingCollisionVO;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iSetParent(value:DisplayObjectContainer)\n\t{\n\t\tthis._pParent = value;\n\n\t\tif (value) {\n\t\t\tthis._pUpdateImplicitMouseEnabled(value.mouseChildren);\n\t\t\tthis._pUpdateImplicitVisibility(value._iIsVisible());\n\t\t\tthis._pUpdateImplicitPartition(value._iAssignedPartition);\n\t\t\tthis._iSetScene(value._pScene);\n\t\t} else {\n\t\t\tthis._pUpdateImplicitMouseEnabled(true);\n\t\t\tthis._pUpdateImplicitVisibility(true);\n\t\t\tthis._pUpdateImplicitPartition(null);\n\n\t\t\tthis._iSetScene(null);\n\t\t}\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t// point lights should be using sphere bounds\n\t\t// directional lights should be using null bounds\n\t\treturn new AxisAlignedBoundingBox();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tthis._pBoundsInvalid = true;\n\t\tthis._worldBoundsInvalid = true;\n\n\n\t\tif (this.isEntity)\n\t\t\tthis.invalidatePartition();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tthis._pSceneTransformDirty = !this._pIgnoreTransform;\n\t\tthis._inverseSceneTransformDirty = !this._pIgnoreTransform;\n\t\tthis._scenePositionDirty = !this._pIgnoreTransform;\n\n\t\tthis._worldBoundsInvalid = !this._pIgnoreTransform;\n\n\t\tif (this.isEntity)\n\t\t\tthis.invalidatePartition();\n\n\t\tif (this._listenToSceneTransformChanged)\n\t\t\tthis.notifySceneTransformChange();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._width = this._pBounds.aabb.width*this._pScaleX;\n\t\tthis._height = this._pBounds.aabb.height*this._pScaleY;\n\t\tthis._depth = this._pBounds.aabb.depth*this._pScaleZ;\n\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tthis._pImplicitMouseEnabled = this._explicitMouseEnabled && value;\n\n\t\t// If there is a parent and this child does not have a picking collider, use its parent's picking collider.\n\t\tif (this._pImplicitMouseEnabled && this._pParent && !this._pPickingCollider)\n\t\t\tthis._pPickingCollider = this._pParent._pPickingCollider;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\t// assign parent implicit partition if no explicit one is given\n\t\tthis._pImplicitPartition = this._explicitPartition || value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tthis._pImplicitVisibility = this._explicitVisibility && value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateMatrix3D()\n\t{\n\n\t\tthis._pos.x = this._x;\n\t\tthis._pos.y = this._y;\n\t\tthis._pos.z = this._z;\n\n\t\tthis._rot.x = this._rotationX;\n\t\tthis._rot.y = this._rotationY;\n\t\tthis._rot.z = this._rotationZ;\n\n\t\tthis._sca.x = this._pScaleX;\n\t\tthis._sca.y = this._pScaleY;\n\t\tthis._sca.z = this._pScaleZ;\n\n\t\tthis._matrix3D.recompose(this._transformComponents);\n\n\t\tif (!this._pivotZero) {\n\t\t\tthis._matrix3D.prependTranslation(-this._pivot.x/this._pScaleX, -this._pivot.y/this._pScaleY, -this._pivot.z/this._pScaleZ);\n\t\t\tif (this.alignmentMode != AlignmentMode.PIVOT_POINT)\n\t\t\t\tthis._matrix3D.appendTranslation(this._pivot.x, this._pivot.y, this._pivot.z);\n\t\t}\n\n\t\tthis._matrix3DDirty = false;\n\t\tthis._positionDirty = false;\n\t\tthis._rotationDirty = false;\n\t\tthis._scaleDirty = false;\n\t\tthis._pivotDirty = false;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tif (this._pParent && !this._pParent._iIsRoot) {\n\t\t\tthis._pSceneTransform.copyFrom(this._pParent.sceneTransform);\n\t\t\tthis._pSceneTransform.prepend(this._iMatrix3D);\n\t\t} else {\n\t\t\tthis._pSceneTransform.copyFrom(this._iMatrix3D);\n\t\t}\n\n\t\tthis._pSceneTransformDirty = false;\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._pRenderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._pRenderables.indexOf(renderable);\n\n\t\tthis._pRenderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic _iInternalUpdate()\n\t{\n\t\tif (this._iController)\n\t\t\tthis._iController.update();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsVisible():boolean\n\t{\n\t\treturn this._pImplicitVisibility;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsMouseEnabled():boolean\n\t{\n\t\treturn this._pImplicitMouseEnabled;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iSetScene(value:Scene)\n\t{\n\t\t// test to see if we're switching roots while we're already using a scene partition\n\t\t/*\n\t\tif (value == null)\n\t\t\tthis._oldScene = this._pScene;\n\n\t\tif (this._explicitPartition && this._oldScene && this._oldScene != this._pScene)\n\t\t\tthis.partition = null;\n\n\t\tif (value)\n\t\t\tthis._oldScene = null;\n\n\t\t// end of stupid partition test code\n\t\t//*/\n\n\t\tif (this._pScene == value)\n\t\t\treturn;\n\n\t\tthis._pUpdateScene(value);\n\n\t\tif (!this._pSceneTransformDirty && !this._pIgnoreTransform)\n\t\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tif (this._pScene) {\n\t\t\tthis._pScene.dispatchEvent(new SceneEvent(SceneEvent.REMOVED_FROM_SCENE, this));\n\n\t\t\t//unregister entity from current scene\n\t\t\tthis._pScene.iUnregisterEntity(this);\n\t\t}\n\n\t\tthis._pScene = value;\n\n\t\tif (value) {\n\t\t\tvalue.dispatchEvent(new SceneEvent(SceneEvent.ADDED_TO_SCENE, this));\n\n\t\t\t//register entity with new scene\n\t\t\tvalue.iRegisterEntity(this);\n\t\t}\n\n\t\tthis.notifySceneChange();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyPositionChanged()\n\t{\n\t\tif (!this._positionChanged)\n\t\t\tthis._positionChanged = new DisplayObjectEvent(DisplayObjectEvent.POSITION_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._positionChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRotationChanged()\n\t{\n\t\tif (!this._rotationChanged)\n\t\t\tthis._rotationChanged = new DisplayObjectEvent(DisplayObjectEvent.ROTATION_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._rotationChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyScaleChanged()\n\t{\n\t\tif (!this._scaleChanged)\n\t\t\tthis._scaleChanged = new DisplayObjectEvent(DisplayObjectEvent.SCALE_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._scaleChanged);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifySceneChange()\n\t{\n\t\tif (this._listenToSceneChanged) {\n\t\t\tif (!this._scenechanged)\n\t\t\t\tthis._scenechanged = new DisplayObjectEvent(DisplayObjectEvent.SCENE_CHANGED, this);\n\n\t\t\tthis.dispatchEvent(this._scenechanged);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifySceneTransformChange()\n\t{\n\t\tif (!this._sceneTransformChanged)\n\t\t\tthis._sceneTransformChanged = new DisplayObjectEvent(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this);\n\n\t\tthis.dispatchEvent(this._sceneTransformChanged);\n\t}\n\n\t/**\n\t * Invalidates the 3D transformation matrix, causing it to be updated upon the next request\n\t *\n\t * @private\n\t */\n\tprivate invalidateMatrix3D():void\n\t{\n\t\tif (this._matrix3DDirty)\n\t\t\treturn;\n\n\t\tthis._matrix3DDirty = true;\n\n\t\tif (!this._pSceneTransformDirty && !this._pIgnoreTransform)\n\t\t\tthis.pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePartition()\n\t{\n\t\tif (this._iAssignedPartition)\n\t\t\tthis._iAssignedPartition.iMarkForUpdate(this);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePivot()\n\t{\n\t\tthis._pivotZero = (this._pivot.x == 0) && (this._pivot.y == 0) && (this._pivot.z == 0);\n\n\t\tif (this._pivotDirty)\n\t\t\treturn;\n\n\t\tthis._pivotDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidatePosition()\n\t{\n\t\tif (this._positionDirty)\n\t\t\treturn;\n\n\t\tthis._positionDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToPositionChanged)\n\t\t\tthis.notifyPositionChanged();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidateRotation()\n\t{\n\t\tif (this._rotationDirty)\n\t\t\treturn;\n\n\t\tthis._rotationDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToRotationChanged)\n\t\t\tthis.notifyRotationChanged();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate invalidateScale()\n\t{\n\t\tif (this._scaleDirty)\n\t\t\treturn;\n\n\t\tthis._scaleDirty = true;\n\n\t\tthis.invalidateMatrix3D();\n\n\t\tif (this._listenToScaleChanged)\n\t\t\tthis.notifyScaleChanged();\n\t}\n}\n\nexport = DisplayObject;","import Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport GeometryEvent\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\n\n/**\n *\n * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices,\n * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.\n * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns\n * the SubGeometries to its respective TriangleSubMesh objects.\n *\n *\n *\n * @see away.core.base.SubGeometry\n * @see away.entities.Mesh\n *\n * @class Geometry\n */\nclass Geometry extends NamedAssetBase implements IAsset\n{\n\tprivate _subGeometries:Array;\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.GEOMETRY;\n\t}\n\n\t/**\n\t * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc.\n\t */\n\tpublic get subGeometries():Array\n\t{\n\t\treturn this._subGeometries;\n\t}\n\n\tpublic getSubGeometries():Array\n\t{\n\t\treturn this._subGeometries;\n\t}\n\n\t/**\n\t * Creates a new Geometry object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._subGeometries = new Array();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\t\tvar len:number = this._subGeometries.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subGeometries[i].applyTransformation(transform);\n\t}\n\n\t/**\n\t * Adds a new TriangleSubGeometry object to the list.\n\t * @param subGeometry The TriangleSubGeometry object to be added.\n\t */\n\tpublic addSubGeometry(subGeometry:SubGeometryBase)\n\t{\n\t\tthis._subGeometries.push(subGeometry);\n\n\t\tsubGeometry.parentGeometry = this;\n\n\t\tif (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_ADDED))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_ADDED, subGeometry));\n\n\t\tthis.iInvalidateBounds(subGeometry);\n\t}\n\n\t/**\n\t * Removes a new TriangleSubGeometry object from the list.\n\t * @param subGeometry The TriangleSubGeometry object to be removed.\n\t */\n\tpublic removeSubGeometry(subGeometry:SubGeometryBase)\n\t{\n\t\tthis._subGeometries.splice(this._subGeometries.indexOf(subGeometry), 1);\n\n\t\tsubGeometry.parentGeometry = null;\n\n\t\tif (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_REMOVED, subGeometry));\n\n\t\tthis.iInvalidateBounds(subGeometry);\n\t}\n\n\t/**\n\t * Clones the geometry.\n\t * @return An exact duplicate of the current Geometry object.\n\t */\n\tpublic clone():Geometry\n\t{\n\t\tvar clone:Geometry = new Geometry();\n\t\tvar len:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone.addSubGeometry(this._subGeometries[i].clone());\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i)\n\t\t\tthis._subGeometries[i].scale(scale);\n\t}\n\n\t/**\n\t * Clears all resources used by the Geometry object, including SubGeometries.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i) {\n\t\t\tvar subGeom:SubGeometryBase = this._subGeometries[0];\n\t\t\tthis.removeSubGeometry(subGeom);\n\t\t\tsubGeom.dispose();\n\t\t}\n\t}\n\n\t/**\n\t * Scales the uv coordinates (tiling)\n\t * @param scaleU The amount by which to scale on the u axis. Default is 1;\n\t * @param scaleV The amount by which to scale on the v axis. Default is 1;\n\t */\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\t\tvar numSubGeoms:number = this._subGeometries.length;\n\n\t\tfor (var i:number = 0; i < numSubGeoms; ++i)\n\t\t\tthis._subGeometries[i].scaleUV(scaleU, scaleV);\n\t}\n\n\tpublic iInvalidateBounds(subGeom:SubGeometryBase)\n\t{\n\t\tif (this.hasEventListener(GeometryEvent.BOUNDS_INVALID))\n\t\t\tthis.dispatchEvent(new GeometryEvent(GeometryEvent.BOUNDS_INVALID, subGeom));\n\t}\n}\n\nexport = Geometry;","/**\n * The GradientType class provides values for the type parameter\n * in the beginGradientFill() and\n * lineGradientStyle() methods of the flash.display.Graphics\n * class.\n */\nclass GradientType\n{\n\t/**\n\t * Value used to specify a linear gradient fill.\n\t */\n\tpublic static LINEAR:string = \"linear\";\n\n\t/**\n\t * Value used to specify a radial gradient fill.\n\t */\n\tpublic static RADIAL:string = \"radial\";\n}\n\nexport = GradientType;","/**\n * The GraphicsPathWinding class provides values for the\n * flash.display.GraphicsPath.winding property and the\n * flash.display.Graphics.drawPath() method to determine the\n * direction to draw a path. A clockwise path is positively wound, and a\n * counter-clockwise path is negatively wound:\n *\n *

When paths intersect or overlap, the winding direction determines the\n * rules for filling the areas created by the intersection or overlap:

\n */\nclass GraphicsPathWinding\n{\n\tpublic static EVEN_ODD:string = \"evenOdd\";\n\tpublic static NON_ZERO:string = \"nonZero\";\n}\n\nexport = GraphicsPathWinding;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\n\nimport CapsStyle\t\t\t\t= require(\"awayjs-display/lib/base/CapsStyle\");\nimport GradientType\t\t\t\t= require(\"awayjs-display/lib/base/GradientType\");\nimport GraphicsPathWinding\t\t= require(\"awayjs-display/lib/base/GraphicsPathWinding\");\nimport IGraphicsData\t\t\t= require(\"awayjs-display/lib/base/IGraphicsData\");\nimport InterpolationMethod\t\t= require(\"awayjs-display/lib/base/InterpolationMethod\");\nimport JointStyle\t\t\t\t= require(\"awayjs-display/lib/base/JointStyle\");\nimport LineScaleMode\t\t\t= require(\"awayjs-display/lib/base/LineScaleMode\");\nimport TriangleCulling\t\t\t= require(\"awayjs-display/lib/base/TriangleCulling\");\nimport SpreadMethod\t\t\t\t= require(\"awayjs-display/lib/base/SpreadMethod\");\n\n/**\n * The Graphics class contains a set of methods that you can use to create a\n * vector shape. Display objects that support drawing include Sprite and Shape\n * objects. Each of these classes includes a graphics property\n * that is a Graphics object. The following are among those helper functions\n * provided for ease of use: drawRect(),\n * drawRoundRect(), drawCircle(), and\n * drawEllipse().\n *\n *

You cannot create a Graphics object directly from ActionScript code. If\n * you call new Graphics(), an exception is thrown.

\n *\n *

The Graphics class is final; it cannot be subclassed.

\n */\nclass Graphics\n{\n\t/**\n\t * Fills a drawing area with a bitmap image. The bitmap can be repeated or\n\t * tiled to fill the area. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param bitmap A transparent or opaque bitmap image that contains the bits\n\t * to be displayed.\n\t * @param matrix A matrix object(of the flash.geom.Matrix class), which you\n\t * can use to define transformations on the bitmap. For\n\t * example, you can use the following matrix to rotate a bitmap\n\t * by 45 degrees(pi/4 radians):\n\t * @param repeat If true, the bitmap image repeats in a tiled\n\t * pattern. If false, the bitmap image does not\n\t * repeat, and the edges of the bitmap are used for any fill\n\t * area that extends beyond the bitmap.\n\t *\n\t *

For example, consider the following bitmap(a 20 x\n\t * 20-pixel checkerboard pattern):

\n\t *\n\t *

When repeat is set to true(as\n\t * in the following example), the bitmap fill repeats the\n\t * bitmap:

\n\t *\n\t *

When repeat is set to false,\n\t * the bitmap fill uses the edge pixels for the fill area\n\t * outside the bitmap:

\n\t * @param smooth If false, upscaled bitmap images are rendered\n\t * by using a nearest-neighbor algorithm and look pixelated. If\n\t * true, upscaled bitmap images are rendered by\n\t * using a bilinear algorithm. Rendering by using the nearest\n\t * neighbor algorithm is faster.\n\t */\n\tpublic beginBitmapFill(bitmap:BitmapData, matrix:Matrix = null, repeat:boolean = true, smooth:boolean = false)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a simple one-color fill that subsequent calls to other Graphics\n\t * methods(such as lineTo() or drawCircle()) use\n\t * when drawing. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param color The color of the fill(0xRRGGBB).\n\t * @param alpha The alpha value of the fill(0.0 to 1.0).\n\t */\n\tpublic beginFill(color:number /*int*/, alpha:number = 1)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a gradient fill used by subsequent calls to other Graphics\n\t * methods(such as lineTo() or drawCircle()) for\n\t * the object. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t * @param type A value from the GradientType class that\n\t * specifies which gradient type to use:\n\t * GradientType.LINEAR or\n\t * GradientType.RADIAL.\n\t * @param colors An array of RGB hexadecimal color values used\n\t * in the gradient; for example, red is 0xFF0000,\n\t * blue is 0x0000FF, and so on. You can specify\n\t * up to 15 colors. For each color, specify a\n\t * corresponding value in the alphas and ratios\n\t * parameters.\n\t * @param alphas An array of alpha values for the corresponding\n\t * colors in the colors array; valid values are 0\n\t * to 1. If the value is less than 0, the default\n\t * is 0. If the value is greater than 1, the\n\t * default is 1.\n\t * @param ratios An array of color distribution ratios; valid\n\t * values are 0-255. This value defines the\n\t * percentage of the width where the color is\n\t * sampled at 100%. The value 0 represents the\n\t * left position in the gradient box, and 255\n\t * represents the right position in the gradient\n\t * box.\n\t * @param matrix A transformation matrix as defined by the\n\t * flash.geom.Matrix class. The flash.geom.Matrix\n\t * class includes a\n\t * createGradientBox() method, which\n\t * lets you conveniently set up the matrix for use\n\t * with the beginGradientFill()\n\t * method.\n\t * @param spreadMethod A value from the SpreadMethod class that\n\t * specifies which spread method to use, either:\n\t * SpreadMethod.PAD,\n\t * SpreadMethod.REFLECT, or\n\t * SpreadMethod.REPEAT.\n\t *\n\t *

For example, consider a simple linear\n\t * gradient between two colors:

\n\t *\n\t *

This example uses\n\t * SpreadMethod.PAD for the spread\n\t * method, and the gradient fill looks like the\n\t * following:

\n\t *\n\t *

If you use SpreadMethod.REFLECT\n\t * for the spread method, the gradient fill looks\n\t * like the following:

\n\t *\n\t *

If you use SpreadMethod.REPEAT\n\t * for the spread method, the gradient fill looks\n\t * like the following:

\n\t * @param interpolationMethod A value from the InterpolationMethod class that\n\t * specifies which value to use:\n\t * InterpolationMethod.LINEAR_RGB or\n\t * InterpolationMethod.RGB\n\t *\n\t *

For example, consider a simple linear\n\t * gradient between two colors(with the\n\t * spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The\n\t * different interpolation methods affect the\n\t * appearance as follows:

\n\t * @param focalPointRatio A number that controls the location of the\n\t * focal point of the gradient. 0 means that the\n\t * focal point is in the center. 1 means that the\n\t * focal point is at one border of the gradient\n\t * circle. -1 means that the focal point is at the\n\t * other border of the gradient circle. A value\n\t * less than -1 or greater than 1 is rounded to -1\n\t * or 1. For example, the following example shows\n\t * a focalPointRatio set to 0.75:\n\t * @throws ArgumentError If the type parameter is not valid.\n\t */\n\tpublic beginGradientFill(type:GradientType, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:string = \"pad\", interpolationMethod:string = \"rgb\", focalPointRatio:number = 0)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a shader fill used by subsequent calls to other Graphics methods\n\t * (such as lineTo() or drawCircle()) for the\n\t * object. The fill remains in effect until you call the\n\t * beginFill(), beginBitmapFill(),\n\t * beginGradientFill(), or beginShaderFill()\n\t * method. Calling the clear() method clears the fill.\n\t *\n\t *

The application renders the fill whenever three or more points are\n\t * drawn, or when the endFill() method is called.

\n\t *\n\t *

Shader fills are not supported under GPU rendering; filled areas will\n\t * be colored cyan.

\n\t *\n\t * @param shader The shader to use for the fill. This Shader instance is not\n\t * required to specify an image input. However, if an image\n\t * input is specified in the shader, the input must be provided\n\t * manually. To specify the input, set the input\n\t * property of the corresponding ShaderInput property of the\n\t * Shader.data property.\n\t *\n\t *

When you pass a Shader instance as an argument the shader\n\t * is copied internally. The drawing fill operation uses that\n\t * internal copy, not a reference to the original shader. Any\n\t * changes made to the shader, such as changing a parameter\n\t * value, input, or bytecode, are not applied to the copied\n\t * shader that's used for the fill.

\n\t * @param matrix A matrix object(of the flash.geom.Matrix class), which you\n\t * can use to define transformations on the shader. For\n\t * example, you can use the following matrix to rotate a shader\n\t * by 45 degrees(pi/4 radians):\n\t *\n\t *

The coordinates received in the shader are based on the\n\t * matrix that is specified for the matrix\n\t * parameter. For a default(null) matrix, the\n\t * coordinates in the shader are local pixel coordinates which\n\t * can be used to sample an input.

\n\t * @throws ArgumentError When the shader output type is not compatible with\n\t * this operation(the shader must specify a\n\t * pixel3 or pixel4 output).\n\t * @throws ArgumentError When the shader specifies an image input that isn't\n\t * provided.\n\t * @throws ArgumentError When a ByteArray or Vector. instance is used\n\t * as an input and the width and\n\t * height properties aren't specified for\n\t * the ShaderInput, or the specified values don't match\n\t * the amount of data in the input object. See the\n\t * ShaderInput.input property for more\n\t * information.\n\t */\n//\t\tpublic beginShaderFill(shader:Shader, matrix:Matrix = null)\n//\t\t{\n//\n//\t\t}\n\n\t/**\n\t * Clears the graphics that were drawn to this Graphics object, and resets\n\t * fill and line style settings.\n\t *\n\t */\n\tpublic clear()\n\t{\n\n\t}\n\n\t/**\n\t * Copies all of drawing commands from the source Graphics object into the\n\t * calling Graphics object.\n\t *\n\t * @param sourceGraphics The Graphics object from which to copy the drawing\n\t * commands.\n\t */\n\tpublic copyFrom(sourceGraphics:Graphics)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a cubic Bezier curve from the current drawing position to the\n\t * specified anchor point. Cubic Bezier curves consist of two anchor points\n\t * and two control points. The curve interpolates the two anchor points and\n\t * curves toward the two control points.\n\t *\n\t * The four points you use to draw a cubic Bezier curve with the\n\t * cubicCurveTo() method are as follows:\n\t *\n\t *
    \n\t *
  • The current drawing position is the first anchor point.
  • \n\t *
  • The anchorX and anchorY parameters specify the second anchor point.\n\t *
  • \n\t *
  • The controlX1 and controlY1 parameters\n\t * specify the first control point.
  • \n\t *
  • The controlX2 and controlY2 parameters\n\t * specify the second control point.
  • \n\t *
\n\t *\n\t * If you call the cubicCurveTo() method before calling the\n\t * moveTo() method, your curve starts at position (0, 0).\n\t *\n\t * If the cubicCurveTo() method succeeds, the Flash runtime sets\n\t * the current drawing position to (anchorX,\n\t * anchorY). If the cubicCurveTo() method fails,\n\t * the current drawing position remains unchanged.\n\t *\n\t * If your movie clip contains content created with the Flash drawing tools,\n\t * the results of calls to the cubicCurveTo() method are drawn\n\t * underneath that content.\n\t *\n\t * @param controlX1 Specifies the horizontal position of the first control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlY1 Specifies the vertical position of the first control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlX2 Specifies the horizontal position of the second control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param controlY2 Specifies the vertical position of the second control\n\t * point relative to the registration point of the parent\n\t * display object.\n\t * @param anchorX Specifies the horizontal position of the anchor point\n\t * relative to the registration point of the parent display\n\t * object.\n\t * @param anchorY Specifies the vertical position of the anchor point\n\t * relative to the registration point of the parent display\n\t * object.\n\t */\n\tpublic cubicCurveTo(controlX1:number, controlY1:number, controlX2:number, controlY2:number, anchorX:number, anchorY:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a curve using the current line style from the current drawing\n\t * position to(anchorX, anchorY) and using the control point that\n\t * (controlX, controlY) specifies. The current\n\t * drawing position is then set to(anchorX,\n\t * anchorY). If the movie clip in which you are drawing contains\n\t * content created with the Flash drawing tools, calls to the\n\t * curveTo() method are drawn underneath this content. If you\n\t * call the curveTo() method before any calls to the\n\t * moveTo() method, the default of the current drawing position\n\t * is(0, 0). If any of the parameters are missing, this method fails and the\n\t * current drawing position is not changed.\n\t *\n\t *

The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves\n\t * consist of two anchor points and one control point. The curve interpolates\n\t * the two anchor points and curves toward the control point.

\n\t *\n\t * @param controlX A number that specifies the horizontal position of the\n\t * control point relative to the registration point of the\n\t * parent display object.\n\t * @param controlY A number that specifies the vertical position of the\n\t * control point relative to the registration point of the\n\t * parent display object.\n\t * @param anchorX A number that specifies the horizontal position of the\n\t * next anchor point relative to the registration point of\n\t * the parent display object.\n\t * @param anchorY A number that specifies the vertical position of the next\n\t * anchor point relative to the registration point of the\n\t * parent display object.\n\t */\n\tpublic curveTo(controlX:number, controlY:number, anchorX:number, anchorY:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a circle. Set the line style, fill, or both before you call the\n\t * drawCircle() method, by calling the linestyle(),\n\t * lineGradientStyle(), beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method.\n\t *\n\t * @param x The x location of the center of the circle relative\n\t * to the registration point of the parent display object(in\n\t * pixels).\n\t * @param y The y location of the center of the circle relative\n\t * to the registration point of the parent display object(in\n\t * pixels).\n\t * @param radius The radius of the circle(in pixels).\n\t */\n\tpublic drawCircle(x:number, y:number, radius:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws an ellipse. Set the line style, fill, or both before you call the\n\t * drawEllipse() method, by calling the\n\t * linestyle(), lineGradientStyle(),\n\t * beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method.\n\t *\n\t * @param x The x location of the top-left of the bounding-box of\n\t * the ellipse relative to the registration point of the parent\n\t * display object(in pixels).\n\t * @param y The y location of the top left of the bounding-box of\n\t * the ellipse relative to the registration point of the parent\n\t * display object(in pixels).\n\t * @param width The width of the ellipse(in pixels).\n\t * @param height The height of the ellipse(in pixels).\n\t */\n\tpublic drawEllipse(x:number, y:number, width:number, height:number)\n\t{\n\n\t}\n\n\t/**\n\t * Submits a series of IGraphicsData instances for drawing. This method\n\t * accepts a Vector containing objects including paths, fills, and strokes\n\t * that implement the IGraphicsData interface. A Vector of IGraphicsData\n\t * instances can refer to a part of a shape, or a complex fully defined set\n\t * of data for rendering a complete shape.\n\t *\n\t *

Graphics paths can contain other graphics paths. If the\n\t * graphicsData Vector includes a path, that path and all its\n\t * sub-paths are rendered during this operation.

\n\t *\n\t */\n\tpublic drawGraphicsData(graphicsData:Array)\n\t{\n\n\t}\n\n\t/**\n\t * Submits a series of commands for drawing. The drawPath()\n\t * method uses vector arrays to consolidate individual moveTo(),\n\t * lineTo(), and curveTo() drawing commands into a\n\t * single call. The drawPath() method parameters combine drawing\n\t * commands with x- and y-coordinate value pairs and a drawing direction. The\n\t * drawing commands are values from the GraphicsPathCommand class. The x- and\n\t * y-coordinate value pairs are Numbers in an array where each pair defines a\n\t * coordinate location. The drawing direction is a value from the\n\t * GraphicsPathWinding class.\n\t *\n\t *

Generally, drawings render faster with drawPath() than\n\t * with a series of individual lineTo() and\n\t * curveTo() methods.

\n\t *\n\t *

The drawPath() method uses a uses a floating computation\n\t * so rotation and scaling of shapes is more accurate and gives better\n\t * results. However, curves submitted using the drawPath()\n\t * method can have small sub-pixel alignment errors when used in conjunction\n\t * with the lineTo() and curveTo() methods.

\n\t *\n\t *

The drawPath() method also uses slightly different rules\n\t * for filling and drawing lines. They are:

\n\t *\n\t *
    \n\t *
  • When a fill is applied to rendering a path:\n\t *
      \n\t *
    • A sub-path of less than 3 points is not rendered.(But note that the\n\t * stroke rendering will still occur, consistent with the rules for strokes\n\t * below.)
    • \n\t *
    • A sub-path that isn't closed(the end point is not equal to the\n\t * begin point) is implicitly closed.
    • \n\t *
    \n\t *
  • \n\t *
  • When a stroke is applied to rendering a path:\n\t *
      \n\t *
    • The sub-paths can be composed of any number of points.
    • \n\t *
    • The sub-path is never implicitly closed.
    • \n\t *
    \n\t *
  • \n\t *
\n\t *\n\t * @param winding Specifies the winding rule using a value defined in the\n\t * GraphicsPathWinding class.\n\t */\n\tpublic drawPath(commands:Array, data:Array, winding:GraphicsPathWinding)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a rectangle. Set the line style, fill, or both before you call the\n\t * drawRect() method, by calling the linestyle(),\n\t * lineGradientStyle(), beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method.\n\t *\n\t * @param x A number indicating the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number indicating the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param width The width of the rectangle(in pixels).\n\t * @param height The height of the rectangle(in pixels).\n\t * @throws ArgumentError If the width or height\n\t * parameters are not a number\n\t * (Number.NaN).\n\t */\n\tpublic drawRect(x:number, y:number, width:number, height:number)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a rounded rectangle. Set the line style, fill, or both before you\n\t * call the drawRoundRect() method, by calling the\n\t * linestyle(), lineGradientStyle(),\n\t * beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method.\n\t *\n\t * @param x A number indicating the horizontal position relative\n\t * to the registration point of the parent display\n\t * object(in pixels).\n\t * @param y A number indicating the vertical position relative to\n\t * the registration point of the parent display object\n\t * (in pixels).\n\t * @param width The width of the round rectangle(in pixels).\n\t * @param height The height of the round rectangle(in pixels).\n\t * @param ellipseWidth The width of the ellipse used to draw the rounded\n\t * corners(in pixels).\n\t * @param ellipseHeight The height of the ellipse used to draw the rounded\n\t * corners(in pixels). Optional; if no value is\n\t * specified, the default value matches that provided\n\t * for the ellipseWidth parameter.\n\t * @throws ArgumentError If the width, height,\n\t * ellipseWidth or\n\t * ellipseHeight parameters are not a\n\t * number(Number.NaN).\n\t */\n\tpublic drawRoundRect(x:number, y:number, width:number, height:number, ellipseWidth:number, ellipseHeight:number = NaN)\n\t{\n\n\t}\n\n\t//public drawRoundRectComplex(x:Float, y:Float, width:Float, height:Float, topLeftRadius:Float, topRightRadius:Float, bottomLeftRadius:Float, bottomRightRadius:Float):Void;\n\n\t/**\n\t * Renders a set of triangles, typically to distort bitmaps and give them a\n\t * three-dimensional appearance. The drawTriangles() method maps\n\t * either the current fill, or a bitmap fill, to the triangle faces using a\n\t * set of(u,v) coordinates.\n\t *\n\t *

Any type of fill can be used, but if the fill has a transform matrix\n\t * that transform matrix is ignored.

\n\t *\n\t *

A uvtData parameter improves texture mapping when a\n\t * bitmap fill is used.

\n\t *\n\t * @param culling Specifies whether to render triangles that face in a\n\t * specified direction. This parameter prevents the rendering\n\t * of triangles that cannot be seen in the current view. This\n\t * parameter can be set to any value defined by the\n\t * TriangleCulling class.\n\t */\n\tpublic drawTriangles(vertices:Array, indices:Array = null, uvtData:Array = null, culling:TriangleCulling = null)\n\t{\n\n\t}\n\n\t/**\n\t * Applies a fill to the lines and curves that were added since the last call\n\t * to the beginFill(), beginGradientFill(), or\n\t * beginBitmapFill() method. Flash uses the fill that was\n\t * specified in the previous call to the beginFill(),\n\t * beginGradientFill(), or beginBitmapFill()\n\t * method. If the current drawing position does not equal the previous\n\t * position specified in a moveTo() method and a fill is\n\t * defined, the path is closed with a line and then filled.\n\t *\n\t */\n\tpublic endFill()\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a bitmap to use for the line stroke when drawing lines.\n\t *\n\t *

The bitmap line style is used for subsequent calls to Graphics methods\n\t * such as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineStyle() or lineGradientStyle() methods, or\n\t * the lineBitmapStyle() method again with different parameters.\n\t *

\n\t *\n\t *

You can call the lineBitmapStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineBitmapStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param bitmap The bitmap to use for the line stroke.\n\t * @param matrix An optional transformation matrix as defined by the\n\t * flash.geom.Matrix class. The matrix can be used to scale or\n\t * otherwise manipulate the bitmap before applying it to the\n\t * line style.\n\t * @param repeat Whether to repeat the bitmap in a tiled fashion.\n\t * @param smooth Whether smoothing should be applied to the bitmap.\n\t */\n\tpublic lineBitmapStyle(bitmap:BitmapData, matrix:Matrix = null, repeat:boolean = true, smooth:boolean = false)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a gradient to use for the stroke when drawing lines.\n\t *\n\t *

The gradient line style is used for subsequent calls to Graphics\n\t * methods such as the lineTo() methods or the\n\t * drawCircle() method. The line style remains in effect until\n\t * you call the lineStyle() or lineBitmapStyle()\n\t * methods, or the lineGradientStyle() method again with\n\t * different parameters.

\n\t *\n\t *

You can call the lineGradientStyle() method in the middle\n\t * of drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineGradientStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param type A value from the GradientType class that\n\t * specifies which gradient type to use, either\n\t * GradientType.LINEAR or GradientType.RADIAL.\n\t * @param colors An array of RGB hexadecimal color values used\n\t * in the gradient; for example, red is 0xFF0000,\n\t * blue is 0x0000FF, and so on. You can specify\n\t * up to 15 colors. For each color, specify a\n\t * corresponding value in the alphas and ratios\n\t * parameters.\n\t * @param alphas An array of alpha values for the corresponding\n\t * colors in the colors array; valid values are 0\n\t * to 1. If the value is less than 0, the default\n\t * is 0. If the value is greater than 1, the\n\t * default is 1.\n\t * @param ratios An array of color distribution ratios; valid\n\t * values are 0-255. This value defines the\n\t * percentage of the width where the color is\n\t * sampled at 100%. The value 0 represents the\n\t * left position in the gradient box, and 255\n\t * represents the right position in the gradient\n\t * box.\n\t * @param matrix A transformation matrix as defined by the\n\t * flash.geom.Matrix class. The flash.geom.Matrix\n\t * class includes a\n\t * createGradientBox() method, which\n\t * lets you conveniently set up the matrix for use\n\t * with the lineGradientStyle()\n\t * method.\n\t * @param spreadMethod A value from the SpreadMethod class that\n\t * specifies which spread method to use:\n\t * @param interpolationMethod A value from the InterpolationMethod class that\n\t * specifies which value to use. For example,\n\t * consider a simple linear gradient between two\n\t * colors(with the spreadMethod\n\t * parameter set to\n\t * SpreadMethod.REFLECT). The\n\t * different interpolation methods affect the\n\t * appearance as follows:\n\t * @param focalPointRatio A number that controls the location of the\n\t * focal point of the gradient. The value 0 means\n\t * the focal point is in the center. The value 1\n\t * means the focal point is at one border of the\n\t * gradient circle. The value -1 means that the\n\t * focal point is at the other border of the\n\t * gradient circle. Values less than -1 or greater\n\t * than 1 are rounded to -1 or 1. The following\n\t * image shows a gradient with a\n\t * focalPointRatio of -0.75:\n\t */\n\tpublic lineGradientStyle(type:GradientType, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:SpreadMethod = null, interpolationMethod:InterpolationMethod = null, focalPointRatio:number = 0)\n\t{\n\n\t}\n\n\t/**\n\t * Specifies a shader to use for the line stroke when drawing lines.\n\t *\n\t *

The shader line style is used for subsequent calls to Graphics methods\n\t * such as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineStyle() or lineGradientStyle() methods, or\n\t * the lineBitmapStyle() method again with different parameters.\n\t *

\n\t *\n\t *

You can call the lineShaderStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within a path.

\n\t *\n\t *

Call the lineStyle() method before you call the\n\t * lineShaderStyle() method to enable a stroke, or else the\n\t * value of the line style is undefined.

\n\t *\n\t *

Calls to the clear() method set the line style back to\n\t * undefined.

\n\t *\n\t * @param shader The shader to use for the line stroke.\n\t * @param matrix An optional transformation matrix as defined by the\n\t * flash.geom.Matrix class. The matrix can be used to scale or\n\t * otherwise manipulate the bitmap before applying it to the\n\t * line style.\n\t */\n//\t\tpublic lineShaderStyle(shader:Shader, matrix:Matrix = null)\n//\t\t{\n//\n//\t\t}\n\n\t/**\n\t * Specifies a line style used for subsequent calls to Graphics methods such\n\t * as the lineTo() method or the drawCircle()\n\t * method. The line style remains in effect until you call the\n\t * lineGradientStyle() method, the\n\t * lineBitmapStyle() method, or the lineStyle()\n\t * method with different parameters.\n\t *\n\t *

You can call the lineStyle() method in the middle of\n\t * drawing a path to specify different styles for different line segments\n\t * within the path.

\n\t *\n\t *

Note: Calls to the clear() method set the line\n\t * style back to undefined.

\n\t *\n\t *

Note: Flash Lite 4 supports only the first three parameters\n\t * (thickness, color, and alpha).

\n\t *\n\t * @param thickness An integer that indicates the thickness of the line in\n\t * points; valid values are 0-255. If a number is not\n\t * specified, or if the parameter is undefined, a line is\n\t * not drawn. If a value of less than 0 is passed, the\n\t * default is 0. The value 0 indicates hairline\n\t * thickness; the maximum thickness is 255. If a value\n\t * greater than 255 is passed, the default is 255.\n\t * @param color A hexadecimal color value of the line; for example,\n\t * red is 0xFF0000, blue is 0x0000FF, and so on. If a\n\t * value is not indicated, the default is 0x000000\n\t * (black). Optional.\n\t * @param alpha A number that indicates the alpha value of the color\n\t * of the line; valid values are 0 to 1. If a value is\n\t * not indicated, the default is 1(solid). If the value\n\t * is less than 0, the default is 0. If the value is\n\t * greater than 1, the default is 1.\n\t * @param pixelHinting(Not supported in Flash Lite 4) A Boolean value that\n\t * specifies whether to hint strokes to full pixels. This\n\t * affects both the position of anchors of a curve and\n\t * the line stroke size itself. With\n\t * pixelHinting set to true,\n\t * line widths are adjusted to full pixel widths. With\n\t * pixelHinting set to false,\n\t * disjoints can appear for curves and straight lines.\n\t * For example, the following illustrations show how\n\t * Flash Player or Adobe AIR renders two rounded\n\t * rectangles that are identical, except that the\n\t * pixelHinting parameter used in the\n\t * lineStyle() method is set differently\n\t * (the images are scaled by 200%, to emphasize the\n\t * difference):\n\t *\n\t *

If a value is not supplied, the line does not use\n\t * pixel hinting.

\n\t * @param scaleMode (Not supported in Flash Lite 4) A value from the\n\t * LineScaleMode class that specifies which scale mode to\n\t * use:\n\t *
    \n\t *
  • LineScaleMode.NORMAL - Always\n\t * scale the line thickness when the object is scaled\n\t * (the default).
  • \n\t *
  • LineScaleMode.NONE - Never scale\n\t * the line thickness.
  • \n\t *
  • LineScaleMode.VERTICAL - Do not\n\t * scale the line thickness if the object is scaled\n\t * vertically only. For example, consider the\n\t * following circles, drawn with a one-pixel line, and\n\t * each with the scaleMode parameter set to\n\t * LineScaleMode.VERTICAL. The circle on the\n\t * left is scaled vertically only, and the circle on the\n\t * right is scaled both vertically and horizontally:\n\t *
  • \n\t *
  • LineScaleMode.HORIZONTAL - Do not\n\t * scale the line thickness if the object is scaled\n\t * horizontally only. For example, consider the\n\t * following circles, drawn with a one-pixel line, and\n\t * each with the scaleMode parameter set to\n\t * LineScaleMode.HORIZONTAL. The circle on\n\t * the left is scaled horizontally only, and the circle\n\t * on the right is scaled both vertically and\n\t * horizontally:
  • \n\t *
\n\t * @param caps (Not supported in Flash Lite 4) A value from the\n\t * CapsStyle class that specifies the type of caps at the\n\t * end of lines. Valid values are:\n\t * CapsStyle.NONE,\n\t * CapsStyle.ROUND, and\n\t * CapsStyle.SQUARE. If a value is not\n\t * indicated, Flash uses round caps.\n\t *\n\t *

For example, the following illustrations show the\n\t * different capsStyle settings. For each\n\t * setting, the illustration shows a blue line with a\n\t * thickness of 30(for which the capsStyle\n\t * applies), and a superimposed black line with a\n\t * thickness of 1(for which no capsStyle\n\t * applies):

\n\t * @param joints (Not supported in Flash Lite 4) A value from the\n\t * JointStyle class that specifies the type of joint\n\t * appearance used at angles. Valid values are:\n\t * JointStyle.BEVEL,\n\t * JointStyle.MITER, and\n\t * JointStyle.ROUND. If a value is not\n\t * indicated, Flash uses round joints.\n\t *\n\t *

For example, the following illustrations show the\n\t * different joints settings. For each\n\t * setting, the illustration shows an angled blue line\n\t * with a thickness of 30(for which the\n\t * jointStyle applies), and a superimposed\n\t * angled black line with a thickness of 1(for which no\n\t * jointStyle applies):

\n\t *\n\t *

Note: For joints set to\n\t * JointStyle.MITER, you can use the\n\t * miterLimit parameter to limit the length\n\t * of the miter.

\n\t * @param miterLimit (Not supported in Flash Lite 4) A number that\n\t * indicates the limit at which a miter is cut off. Valid\n\t * values range from 1 to 255(and values outside that\n\t * range are rounded to 1 or 255). This value is only\n\t * used if the jointStyle is set to\n\t * \"miter\". The miterLimit\n\t * value represents the length that a miter can extend\n\t * beyond the point at which the lines meet to form a\n\t * joint. The value expresses a factor of the line\n\t * thickness. For example, with a\n\t * miterLimit factor of 2.5 and a\n\t * thickness of 10 pixels, the miter is cut\n\t * off at 25 pixels.\n\t *\n\t *

For example, consider the following angled lines,\n\t * each drawn with a thickness of 20, but\n\t * with miterLimit set to 1, 2, and 4.\n\t * Superimposed are black reference lines showing the\n\t * meeting points of the joints:

\n\t *\n\t *

Notice that a given miterLimit value\n\t * has a specific maximum angle for which the miter is\n\t * cut off. The following table lists some examples:

\n\t */\n\tpublic lineStyle(thickness:number = 0, color:number /*int*/ = 0, alpha:number = 1, pixelHinting:boolean = false, scaleMode:LineScaleMode = null, caps:CapsStyle = null, joints:JointStyle = null, miterLimit:number = 3)\n\t{\n\n\t}\n\n\t/**\n\t * Draws a line using the current line style from the current drawing\n\t * position to(x, y); the current drawing position\n\t * is then set to(x, y). If the display object in\n\t * which you are drawing contains content that was created with the Flash\n\t * drawing tools, calls to the lineTo() method are drawn\n\t * underneath the content. If you call lineTo() before any calls\n\t * to the moveTo() method, the default position for the current\n\t * drawing is(0, 0). If any of the parameters are missing, this\n\t * method fails and the current drawing position is not changed.\n\t *\n\t * @param x A number that indicates the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number that indicates the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t */\n\tpublic lineTo(x:number, y:number)\n\t{\n\n\t}\n\n\t/**\n\t * Moves the current drawing position to(x, y). If\n\t * any of the parameters are missing, this method fails and the current\n\t * drawing position is not changed.\n\t *\n\t * @param x A number that indicates the horizontal position relative to the\n\t * registration point of the parent display object(in pixels).\n\t * @param y A number that indicates the vertical position relative to the\n\t * registration point of the parent display object(in pixels).\n\t */\n\tpublic moveTo(x:number, y:number)\n\t{\n\n\t}\n}\n\nexport = Graphics;","/**\n * The InterpolationMethod class provides values for the\n * interpolationMethod parameter in the\n * Graphics.beginGradientFill() and\n * Graphics.lineGradientStyle() methods. This parameter\n * determines the RGB space to use when rendering the gradient.\n */\nclass InterpolationMethod\n{\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static LINEAR_RGB:string = \"linearRGB\";\n\n\t/**\n\t * Specifies that the RGB interpolation method should be used. This means\n\t * that the gradient is rendered with exponential sRGB(standard RGB) space.\n\t * The sRGB space is a W3C-endorsed standard that defines a non-linear\n\t * conversion between red, green, and blue component values and the actual\n\t * intensity of the visible component color.\n\t *\n\t *

For example, consider a simple linear gradient between two colors(with\n\t * the spreadMethod parameter set to\n\t * SpreadMethod.REFLECT). The different interpolation methods\n\t * affect the appearance as follows:

\n\t */\n\tpublic static RGB:string = \"rgb\";\n}\n\nexport = InterpolationMethod;","/**\n * The JointStyle class is an enumeration of constant values that specify the\n * joint style to use in drawing lines. These constants are provided for use\n * as values in the joints parameter of the\n * flash.display.Graphics.lineStyle() method. The method supports\n * three types of joints: miter, round, and bevel, as the following example\n * shows:\n */\nclass JointStyle\n{\n\t/**\n\t * Specifies beveled joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static BEVEL:string = \"bevel\";\n\n\t/**\n\t * Specifies mitered joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static MITER:string = \"miter\";\n\n\t/**\n\t * Specifies round joints in the joints parameter of the\n\t * flash.display.Graphics.lineStyle() method.\n\t */\n\tpublic static ROUND:string = \"round\";\n}\n\nexport = JointStyle;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightEvent\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport ShadowMapperBase\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\n\nclass LightBase extends DisplayObjectContainer\n{\n\tprivate _color:number = 0xffffff;\n\tprivate _colorR:number = 1;\n\tprivate _colorG:number = 1;\n\tprivate _colorB:number = 1;\n\n\tprivate _ambientColor:number = 0xffffff;\n\tprivate _ambient:number = 0;\n\tpublic _iAmbientR:number = 0;\n\tpublic _iAmbientG:number = 0;\n\tpublic _iAmbientB:number = 0;\n\n\tprivate _specular:number = 1;\n\tpublic _iSpecularR:number = 1;\n\tpublic _iSpecularG:number = 1;\n\tpublic _iSpecularB:number = 1;\n\n\tprivate _diffuse:number = 1;\n\tpublic _iDiffuseR:number = 1;\n\tpublic _iDiffuseG:number = 1;\n\tpublic _iDiffuseB:number = 1;\n\n\tprivate _castsShadows:boolean = false;\n\n\tprivate _shadowMapper:ShadowMapperBase;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tif (this._castsShadows == value)\n\t\t\treturn;\n\n\t\tthis._castsShadows = value;\n\n\t\tif (value) {\n\t\t\tif (this._shadowMapper == null)\n\t\t\t\tthis._shadowMapper = this.pCreateShadowMapper();\n\n\t\t\tthis._shadowMapper.light = this;\n\t\t} else {\n\t\t\tthis._shadowMapper.dispose();\n\t\t\tthis._shadowMapper = null;\n\t\t}\n\t\t//*/\n\t\tthis.dispatchEvent(new LightEvent(LightEvent.CASTS_SHADOW_CHANGE));\n\t}\n\n\tpublic pCreateShadowMapper():ShadowMapperBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get specular():number\n\t{\n\t\treturn this._specular;\n\t}\n\n\tpublic set specular(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._specular = value;\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get diffuse():number\n\t{\n\t\treturn this._diffuse;\n\t}\n\n\tpublic set diffuse(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._diffuse = value;\n\t\tthis.updateDiffuse();\n\t}\n\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tthis._color = value;\n\t\tthis._colorR = ((this._color >> 16) & 0xff)/0xff;\n\t\tthis._colorG = ((this._color >> 8) & 0xff)/0xff;\n\t\tthis._colorB = (this._color & 0xff)/0xff;\n\n\t\tthis.updateDiffuse();\n\t\tthis.updateSpecular();\n\t}\n\n\tpublic get ambient():number\n\t{\n\t\treturn this._ambient;\n\t}\n\n\tpublic set ambient(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tthis._ambient = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tpublic get ambientColor():number\n\t{\n\t\treturn this._ambientColor;\n\t}\n\n\tpublic set ambientColor(value:number)\n\t{\n\t\tthis._ambientColor = value;\n\t\tthis.updateAmbient();\n\t}\n\n\tprivate updateAmbient()\n\t{\n\t\tthis._iAmbientR = ((this._ambientColor >> 16) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientG = ((this._ambientColor >> 8) & 0xff)/0xff*this._ambient;\n\t\tthis._iAmbientB = (this._ambientColor & 0xff)/0xff*this._ambient;\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT;\n\t}\n\n\tprivate updateSpecular()\n\t{\n\t\tthis._iSpecularR = this._colorR*this._specular;\n\t\tthis._iSpecularG = this._colorG*this._specular;\n\t\tthis._iSpecularB = this._colorB*this._specular;\n\t}\n\n\tprivate updateDiffuse()\n\t{\n\t\tthis._iDiffuseR = this._colorR*this._diffuse;\n\t\tthis._iDiffuseG = this._colorG*this._diffuse;\n\t\tthis._iDiffuseB = this._colorB*this._diffuse;\n\t}\n\n\tpublic get shadowMapper():ShadowMapperBase\n\t{\n\t\treturn this._shadowMapper;\n\t}\n\n\tpublic set shadowMapper(value:ShadowMapperBase)\n\t{\n\t\tthis._shadowMapper = value;\n\t\tthis._shadowMapper.light = this;\n\t}\n}\n\nexport = LightBase;","/**\n * The LineScaleMode class provides values for the scaleMode\n * parameter in the Graphics.lineStyle() method.\n */\nclass LineScaleMode\n{\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only vertically. For example, consider the following circles, drawn\n\t * with a one-pixel line, and each with the scaleMode parameter\n\t * set to LineScaleMode.VERTICAL. The circle on the left is\n\t * scaled only vertically, and the circle on the right is scaled both\n\t * vertically and horizontally.\n\t */\n\tpublic static HORIZONTAL:string = \"horizontal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line never scales.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line always scales\n\t * when the object is scaled(the default).\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * With this setting used as the scaleMode parameter of the\n\t * lineStyle() method, the thickness of the line scales\n\t * only horizontally. For example, consider the following circles,\n\t * drawn with a one-pixel line, and each with the scaleMode\n\t * parameter set to LineScaleMode.HORIZONTAL. The circle on the\n\t * left is scaled only horizontally, and the circle on the right is scaled\n\t * both vertically and horizontally.\n\t */\n\tpublic static VERTICAL:string = \"vertical\";\n}\n\nexport = LineScaleMode;","import DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport LineSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class LineSubGeometry\n */\nclass LineSubGeometry extends SubGeometryBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\tpublic static START_POSITION_DATA:string = \"startPositions\";\n\tpublic static END_POSITION_DATA:string = \"endPositions\";\n\tpublic static THICKNESS_DATA:string = \"thickness\";\n\tpublic static COLOR_DATA:string = \"colors\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static COLOR_FORMAT:string = \"float4\";\n\tpublic static THICKNESS_FORMAT:string = \"float1\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _boundingPositionDirty = true;\n\tprivate _thicknessDirty:boolean = true;\n\tprivate _colorsDirty:boolean = true;\n\n\tprivate _startPositions:Array;\n\tprivate _endPositions:Array;\n\tprivate _boundingPositions:Array\n\tprivate _thickness:Array;\n\tprivate _startColors:Array;\n\tprivate _endColors:Array;\n\n\tprivate _numSegments:number;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _thicknessUpdated:SubGeometryEvent;\n\tprivate _colorUpdated:SubGeometryEvent;\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthis._pOffset[LineSubGeometry.VERTEX_DATA] = 0;\n\n\t\tvar stride:number = 0;\n\t\tthis._pOffset[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tstride += 3;\n\n\t\tthis._pOffset[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tstride += 1;\n\n\t\tthis._pOffset[LineSubGeometry.COLOR_DATA] = stride;\n\t\tstride += 4;\n\n\t\tthis._pStride[LineSubGeometry.VERTEX_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.START_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.END_POSITION_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.THICKNESS_DATA] = stride;\n\t\tthis._pStride[LineSubGeometry.COLOR_DATA] = stride;\n\n\t\tvar len:number = this._pNumVertices*stride;\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(len);\n\t\telse if (this._pVertices.length != len)\n\t\t\tthis._pVertices.length = len;\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._startPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._startPositions, this._endPositions);\n\n\t\treturn this._endPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():Array\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\tthis.updateThickness(this._thickness);\n\n\t\treturn this._thickness;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._startColors;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endColors():Array\n\t{\n\t\tif (this._colorsDirty)\n\t\t\tthis.updateColors(this._startColors, this._endColors);\n\n\t\treturn this._endColors;\n\t}\n\n\t/**\n\t * The total amount of segments in the TriangleSubGeometry.\n\t */\n\tpublic get numSegments():number\n\t{\n\t\treturn this._numSegments;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tsuper(true);\n\n\t\tthis._pSubMeshClass = LineSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._boundingPositionDirty)\n\t\t\tthis._boundingPositions = this.startPositions.concat(this.endPositions);\n\n\t\treturn this._boundingPositions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\t\tvar indices:Array;\n\n\t\tthis._startPositions = startValues;\n\n\t\tif (this._startPositions == null)\n\t\t\tthis._startPositions = new Array();\n\n\t\tthis._endPositions = endValues;\n\n\t\tif (this._endPositions == null)\n\t\t\tthis._endPositions = new Array();\n\n\t\tthis._boundingPositionDirty = true;\n\n\t\tthis._numSegments = this._startPositions.length/3;\n\n\t\tthis._pNumVertices = this._numSegments*4;\n\n\t\tvar lenV:number = this._pNumVertices*this.getStride(LineSubGeometry.VERTEX_DATA);\n\n\t\tif (this._pVertices == null)\n\t\t\tthis._pVertices = new Array(lenV);\n\t\telse if (this._pVertices.length != lenV)\n\t\t\tthis._pVertices.length = lenV;\n\n\t\ti = 0;\n\t\tj = 0;\n\t\tindex = this.getOffset(LineSubGeometry.START_POSITION_DATA);\n\t\tstride = this.getStride(LineSubGeometry.START_POSITION_DATA);\n\t\tpositions = this._pVertices;\n\t\tindices = new Array();\n\n\t\twhile (i < startValues.length) {\n\t\t\tvalues = (index/stride & 1)? endValues : startValues;\n\t\t\tpositions[index] = values[i];\n\t\t\tpositions[index + 1] = values[i + 1];\n\t\t\tpositions[index + 2] = values[i + 2];\n\n\t\t\tvalues = (index/stride & 1)? startValues : endValues;\n\t\t\tpositions[index + 3] = values[i];\n\t\t\tpositions[index + 4] = values[i + 1];\n\t\t\tpositions[index + 5] = values[i + 2];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tvar o:number = index/stride - 3;\n\t\t\t\tindices.push(o, o + 1, o + 2, o + 3, o + 2, o + 1);\n\t\t\t\tj = 0;\n\t\t\t\ti += 3;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.updateIndices(indices);\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the thickness.\n\t */\n\tpublic updateThickness(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar thickness:Array;\n\n\t\tthis._thickness = values;\n\n\t\tif (values != null) {\n\t\t\ti = 0;\n\t\t\tj = 0;\n\t\t\toffset = this.getOffset(LineSubGeometry.THICKNESS_DATA);\n\t\t\tstride = this.getStride(LineSubGeometry.THICKNESS_DATA);\n\t\t\tthickness = this._pVertices;\n\n\t\t\tindex = offset\n\t\t\twhile (i < values.length) {\n\t\t\t\tthickness[index] = (Math.floor(0.5*(index - offset)/stride + 0.5) & 1)? -values[i] : values[i];\n\n\t\t\t\tif (++j == 4) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyThicknessUpdate();\n\n\t\tthis._thicknessDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateColors(startValues:Array, endValues:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar values:Array\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar colors:Array;\n\n\t\tthis._startColors = startValues;\n\n\t\tthis._endColors = endValues;\n\n\t\t//default to white\n\t\tif (this._startColors == null) {\n\t\t\tthis._startColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._startColors.length)\n\t\t\t\tthis._startColors[i++] = 1;\n\t\t}\n\n\t\tif (this._endColors == null) {\n\t\t\tthis._endColors = new Array(this._numSegments*4);\n\n\t\t\ti = 0;\n\t\t\twhile (i < this._endColors.length)\n\t\t\t\tthis._endColors[i++] = 1;\n\t\t}\n\n\t\ti = 0;\n\t\tj = 0;\n\t\toffset = this.getOffset(LineSubGeometry.COLOR_DATA);\n\t\tstride = this.getStride(LineSubGeometry.COLOR_DATA);\n\t\tcolors = this._pVertices;\n\n\t\tindex = offset;\n\n\t\twhile (i < this._startColors.length) {\n\t\t\tvalues = ((index - offset)/stride & 1)? this._endColors : this._startColors;\n\t\t\tcolors[index] = values[i];\n\t\t\tcolors[index + 1] = values[i + 1];\n\t\t\tcolors[index + 2] = values[i + 2];\n\t\t\tcolors[index + 3] = values[i + 3];\n\n\t\t\tif (++j == 4) {\n\t\t\t\tj = 0;\n\t\t\t\ti += 4;\n\t\t\t}\n\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyColorsUpdate();\n\n\t\tthis._colorsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._startPositions = null;\n\t\tthis._endPositions = null;\n\t\tthis._thickness = null;\n\t\tthis._startColors = null;\n\t\tthis._endColors = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():LineSubGeometry\n\t{\n\t\tvar clone:LineSubGeometry = new LineSubGeometry();\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\t\tclone.updateThickness(this._thickness.concat());\n\t\tclone.updatePositions(this._startPositions.concat(), this._endPositions.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyThicknessUpdate();\n\t\tthis.notifyColorsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyThicknessUpdate()\n\t{\n\t\tif (this._thicknessDirty)\n\t\t\treturn;\n\n\t\tthis._thicknessDirty = true;\n\n\t\tif (!this._thicknessUpdated)\n\t\t\tthis._thicknessUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.THICKNESS_DATA);\n\n\t\tthis.dispatchEvent(this._thicknessUpdated);\n\t}\n\n\tprivate notifyColorsUpdate()\n\t{\n\t\tif (this._colorsDirty)\n\t\t\treturn;\n\n\t\tthis._colorsDirty = true;\n\n\t\tif (!this._colorUpdated)\n\t\t\tthis._colorUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.COLOR_DATA);\n\n\t\tthis.dispatchEvent(this._colorUpdated);\n\t}\n}\n\nexport = LineSubGeometry;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.LineSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.LineSubMesh\n */\nclass LineSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:LineSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SUB_MESH;\n\t}\n\n\t/**\n\t * The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t */\n\tpublic get subGeometry():LineSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new LineSubMesh object\n\t * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.\n\t * @param parentMesh The Mesh object to which this LineSubMesh belongs.\n\t * @param material An optional material used to render this LineSubMesh.\n\t */\n\tconstructor(subGeometry:LineSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyLineSubMesh(this);\n\t}\n}\n\nexport = LineSubMesh;","import EventDispatcher\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport ByteArray\t\t\t\t= require(\"awayjs-core/lib/utils/ByteArray\");\n\nimport Loader\t\t\t\t\t= require(\"awayjs-display/lib/containers/Loader\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The LoaderInfo class provides information about a loaded SWF file or a\n * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for\n * any display object. The information provided includes load progress, the\n * URLs of the loader and loaded content, the number of bytes total for the\n * media, and the nominal height and width of the media.\n *\n *

You can access LoaderInfo objects in two ways:

\n *\n *
    \n *
  • The contentLoaderInfo property of a flash.display.Loader\n * object - The contentLoaderInfo property is always available\n * for any Loader object. For a Loader object that has not called the\n * load() or loadBytes() method, or that has not\n * sufficiently loaded, attempting to access many of the properties of the\n * contentLoaderInfo property throws an error.
  • \n *
  • The loaderInfo property of a display object.
  • \n *
\n *\n *

The contentLoaderInfo property of a Loader object provides\n * information about the content that the Loader object is loading, whereas\n * the loaderInfo property of a DisplayObject provides\n * information about the root SWF file for that display object.

\n *\n *

When you use a Loader object to load a display object(such as a SWF\n * file or a bitmap), the loaderInfo property of the display\n * object is the same as the contentLoaderInfo property of the\n * Loader object(DisplayObject.loaderInfo =\n * Loader.contentLoaderInfo). Because the instance of the main class of\n * the SWF file has no Loader object, the loaderInfo property is\n * the only way to access the LoaderInfo for the instance of the main class of\n * the SWF file.

\n *\n *

The following diagram shows the different uses of the LoaderInfo\n * object - for the instance of the main class of the SWF file, for the\n * contentLoaderInfo property of a Loader object, and for the\n * loaderInfo property of a loaded object:

\n *\n *

When a loading operation is not complete, some properties of the\n * contentLoaderInfo property of a Loader object are not\n * available. You can obtain some properties, such as\n * bytesLoaded, bytesTotal, url,\n * loaderURL, and applicationDomain. When the\n * loaderInfo object dispatches the init event, you\n * can access all properties of the loaderInfo object and the\n * loaded image or SWF file.

\n *\n *

Note: All properties of LoaderInfo objects are read-only.

\n *\n *

The EventDispatcher.dispatchEvent() method is not\n * applicable to LoaderInfo objects. If you call dispatchEvent()\n * on a LoaderInfo object, an IllegalOperationError exception is thrown.

\n * \n * @event complete Dispatched when data has loaded successfully. In other\n * words, it is dispatched when all the content has been\n * downloaded and the loading has finished. The\n * complete event is always dispatched after\n * the init event. The init event\n * is dispatched when the object is ready to access, though\n * the content may still be downloading.\n * @event httpStatus Dispatched when a network request is made over HTTP and\n * an HTTP status code can be detected.\n * @event init Dispatched when the properties and methods of a loaded\n * SWF file are accessible and ready for use. The content,\n * however, can still be downloading. A LoaderInfo object\n * dispatches the init event when the following\n * conditions exist:\n *
    \n *
  • All properties and methods associated with the\n * loaded object and those associated with the LoaderInfo\n * object are accessible.
  • \n *
  • The constructors for all child objects have\n * completed.
  • \n *
  • All ActionScript code in the first frame of the\n * loaded SWF's main timeline has been executed.
  • \n *
\n *\n *

For example, an Event.INIT is dispatched\n * when the first frame of a movie or animation is loaded.\n * The movie is then accessible and can be added to the\n * display list. The complete movie, however, can take\n * longer to download. The Event.COMPLETE is\n * only dispatched once the full movie is loaded.

\n *\n *

The init event always precedes the\n * complete event.

\n * @event ioError Dispatched when an input or output error occurs that\n * causes a load operation to fail.\n * @event open Dispatched when a load operation starts.\n * @event progress Dispatched when data is received as the download\n * operation progresses.\n * @event unload Dispatched by a LoaderInfo object whenever a loaded\n * object is removed by using the unload()\n * method of the Loader object, or when a second load is\n * performed by the same Loader object and the original\n * content is removed prior to the load beginning.\n */\nclass LoaderInfo extends EventDispatcher\n{\n\tprivate _bytes:ByteArray;\n\tprivate _bytesLoaded:number;\n\tprivate _bytesTotal:number;\n\tprivate _content:DisplayObject;\n\tprivate _contentType:string;\n\tprivate _loader:Loader;\n\tprivate _url:string;\n\t/**\n\t * The bytes associated with a LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get bytes():ByteArray\n\t{\n\t\treturn this._bytes;\n\t}\n\n\t/**\n\t * The number of bytes that are loaded for the media. When this number equals\n\t * the value of bytesTotal, all of the bytes are loaded.\n\t */\n\tpublic get bytesLoaded():number /*int*/\n\t{\n\t\treturn this._bytesLoaded;\n\t}\n\n\t/**\n\t * The number of compressed bytes in the entire media file.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, bytesTotal\n\t * is 0. After the first progress event from the Loader object,\n\t * bytesTotal reflects the actual number of bytes to be\n\t * downloaded.

\n\t */\n\tpublic get bytesTotal():number /*int*/\n\t{\n\t\treturn this._bytesTotal;\n\t}\n\n\t/**\n\t * The loaded object associated with this LoaderInfo object.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the loaded object due to security\n\t * restrictions. This situation can occur, for\n\t * instance, when a Loader object attempts to access\n\t * the contentLoaderInfo.content property\n\t * and it is not granted security permission to access\n\t * the loaded content.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * The MIME type of the loaded file. The value is null if not\n\t * enough of the file has loaded in order to determine the type. The\n\t * following list gives the possible values:\n\t *
    \n\t *
  • \"application/x-shockwave-flash\"
  • \n\t *
  • \"image/jpeg\"
  • \n\t *
  • \"image/gif\"
  • \n\t *
  • \"image/png\"
  • \n\t *
\n\t */\n\tpublic get contentType():string\n\t{\n\t\treturn this._contentType;\n\t}\n\n\t/**\n\t * The Loader object associated with this LoaderInfo object. If this\n\t * LoaderInfo object is the loaderInfo property of the instance\n\t * of the main class of the SWF file, no Loader object is associated.\n\t * \n\t * @throws SecurityError If the object accessing this API is prevented from\n\t * accessing the Loader object because of security\n\t * restrictions. This can occur, for instance, when a\n\t * loaded SWF file attempts to access its\n\t * loaderInfo.loader property and it is\n\t * not granted security permission to access the\n\t * loading SWF file.\n\t *\n\t *

For more information related to security, see the\n\t * Flash Player Developer Center Topic: Security.

\n\t */\n\tpublic get loader():Loader\n\t{\n\t\treturn this._loader;\n\t}\n\n\t/**\n\t * The URL of the media being loaded.\n\t *\n\t *

Before the first progress event is dispatched by this\n\t * LoaderInfo object's corresponding Loader object, the value of the\n\t * url property might reflect only the initial URL specified in\n\t * the call to the load() method of the Loader object. After the\n\t * first progress event, the url property reflects\n\t * the media's final URL, after any redirects and relative URLs are\n\t * resolved.

\n\t *\n\t *

In some cases, the value of the url property is truncated;\n\t * see the isURLInaccessible property for details.

\n\t */\n\tpublic get url():string\n\t{\n\t\treturn this._url;\n\t}\n}\n\nexport = LoaderInfo;","class OrientationMode\n{\n\t/**\n\t *\n\t */\n\tpublic static DEFAULT:string = \"default\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_PLANE:string = \"cameraPlane\";\n\n\t/**\n\t *\n\t */\n\tpublic static CAMERA_POSITION:string = \"cameraPosition\";\n}\n\nexport = OrientationMode;","/**\n * The PixelSnapping class is an enumeration of constant values for setting\n * the pixel snapping options by using the pixelSnapping property\n * of a Bitmap object.\n */\nclass PixelSnapping\n{\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is always snapped to the\n\t * nearest pixel, independent of any transformation.\n\t */\n\tpublic static ALWAYS:string = \"always\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that the bitmap image is snapped to the nearest\n\t * pixel if it is drawn with no rotation or skew and it is drawn at a scale\n\t * factor of 99.9% to 100.1%. If these conditions are satisfied, the image is\n\t * drawn at 100% scale, snapped to the nearest pixel. Internally, this\n\t * setting allows the image to be drawn as fast as possible by using the\n\t * vector renderer.\n\t */\n\tpublic static AUTO:string = \"auto\";\n\n\t/**\n\t * A constant value used in the pixelSnapping property of a\n\t * Bitmap object to specify that no pixel snapping occurs.\n\t */\n\tpublic static NEVER:string = \"never\";\n}\n\nexport = PixelSnapping;","/**\n * The SpreadMethod class provides values for the spreadMethod\n * parameter in the beginGradientFill() and\n * lineGradientStyle() methods of the Graphics class.\n *\n *

The following example shows the same gradient fill using various spread\n * methods:

\n */\nclass SpreadMethod\n{\n\t/**\n\t * Specifies that the gradient use the pad spread method.\n\t */\n\tpublic static PAD:string = \"pad\";\n\n\t/**\n\t * Specifies that the gradient use the reflect spread method.\n\t */\n\tpublic static REFLECT:string = \"reflect\";\n\n\t/**\n\t * Specifies that the gradient use the repeat spread method.\n\t */\n\tpublic static REPEAT:string = \"repeat\";\n}\n\nexport = SpreadMethod;","import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMeshClass\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass SubGeometryBase extends NamedAssetBase\n{\n\tpublic static VERTEX_DATA:string = \"vertices\";\n\n\tpublic _pStrideOffsetDirty:boolean = true;\n\n\tpublic _pIndices:Array /*uint*/;\n\tpublic _pVertices:Array;\n\n\tprivate _numIndices:number;\n\tprivate _numTriangles:number;\n\tpublic _pNumVertices:number;\n\n\tpublic _pConcatenateArrays:boolean = true;\n\n\tprivate _indicesUpdated:SubGeometryEvent;\n\n\tpublic _pStride:Object = new Object();\n\tpublic _pOffset:Object = new Object();\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _pSubMeshClass:ISubMeshClass;\n\n\tpublic get subMeshClass():ISubMeshClass\n\t{\n\t\treturn this._pSubMeshClass;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get concatenateArrays():boolean\n\t{\n\t\treturn this._pConcatenateArrays;\n\t}\n\n\tpublic set concatenateArrays(value:boolean)\n\t{\n\t\tif (this._pConcatenateArrays == value)\n\t\t\treturn;\n\n\t\tthis._pConcatenateArrays = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (value)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * The raw index data that define the faces.\n\t */\n\tpublic get indices():Array\n\t{\n\t\treturn this._pIndices;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get vertices():Array\n\t{\n\t\tthis.updateVertices();\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t * The total amount of triangles in the TriangleSubGeometry.\n\t */\n\tpublic get numTriangles():number\n\t{\n\t\treturn this._numTriangles;\n\t}\n\n\tpublic get numVertices():number\n\t{\n\t\treturn this._pNumVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper();\n\n\t\tthis._pConcatenateArrays = concatenatedArrays;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getStride(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pStride[dataType];\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getOffset(dataType:string)\n\t{\n\t\tif (this._pStrideOffsetDirty)\n\t\t\tthis._pUpdateStrideOffset();\n\n\t\treturn this._pOffset[dataType];\n\t}\n\n\tpublic updateVertices()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pIndices = null;\n\t\tthis._pVertices = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tthis._pIndices = indices;\n\t\tthis._numIndices = indices.length;\n\n\t\tthis._numTriangles = this._numIndices/3;\n\n\t\tthis.notifyIndicesUpdate();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\tif (this.parentGeometry)\n\t\t\tthis.parentGeometry.iInvalidateBounds(this);\n\t}\n\n\t/**\n\t * The Geometry object that 'owns' this TriangleSubGeometry object.\n\t *\n\t * @private\n\t */\n\tpublic parentGeometry:Geometry;\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():SubGeometryBase\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tprivate notifyIndicesUpdate()\n\t{\n\t\tif (!this._indicesUpdated)\n\t\t\tthis._indicesUpdated = new SubGeometryEvent(SubGeometryEvent.INDICES_UPDATED);\n\n\t\tthis.dispatchEvent(this._indicesUpdated);\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = SubGeometryBase;","import AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport Mesh\t\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.SubMeshBase\n */\nclass SubMeshBase extends NamedAssetBase\n{\n\tpublic _pParentMesh:Mesh;\n\tpublic _uvTransform:UVTransform;\n\n\tpublic _iIndex:number = 0;\n\n\tpublic _material:MaterialBase;\n\tprivate _renderables:Array = new Array();\n\n\t//TODO test shader picking\n//\t\tpublic get shaderPickingDetails():boolean\n//\t\t{\n//\n//\t\t\treturn this.sourceEntity.shaderPickingDetails;\n//\t\t}\n\n\t/**\n\t * The animator object that provides the state for the TriangleSubMesh's animation.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._pParentMesh.animator;\n\t}\n\n\t/**\n\t * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material || this._pParentMesh.material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (this.material)\n\t\t\tthis.material.iRemoveOwner(this);\n\n\t\tthis._material = value;\n\n\t\tif (this.material)\n\t\t\tthis.material.iAddOwner(this);\n\t}\n\n\t/**\n\t * The scene transform object that transforms from model to world space.\n\t */\n\tpublic get sceneTransform():Matrix3D\n\t{\n\t\treturn this._pParentMesh.sceneTransform;\n\t}\n\n\t/**\n\t * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object).\n\t */\n\tpublic get parentMesh():Mesh\n\t{\n\t\treturn this._pParentMesh;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform || this._pParentMesh.uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Creates a new SubMeshBase object\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.material = null;\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param camera\n\t * @returns {away.geom.Matrix3D}\n\t */\n\tpublic getRenderSceneTransform(camera:Camera):Matrix3D\n\t{\n\t\treturn this._pParentMesh.getRenderSceneTransform(camera);\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\tpublic _iInvalidateRenderableGeometry()\n\t{\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].invalidateGeometry();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iGetExplicitMaterial():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n}\n\nexport = SubMeshBase;","import ColorTransform\t\t\t= require(\"awayjs-core/lib/geom/ColorTransform\");\nimport Matrix\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * The Transform class provides access to color adjustment properties and two-\n * or three-dimensional transformation objects that can be applied to a\n * display object. During the transformation, the color or the orientation and\n * position of a display object is adjusted(offset) from the current values\n * or coordinates to new values or coordinates. The Transform class also\n * collects data about color and two-dimensional matrix transformations that\n * are applied to a display object and all of its parent objects. You can\n * access these combined transformations through the\n * concatenatedColorTransform and concatenatedMatrix\n * properties.\n *\n *

To apply color transformations: create a ColorTransform object, set the\n * color adjustments using the object's methods and properties, and then\n * assign the colorTransformation property of the\n * transform property of the display object to the new\n * ColorTransformation object.

\n *\n *

To apply two-dimensional transformations: create a Matrix object, set\n * the matrix's two-dimensional transformation, and then assign the\n * transform.matrix property of the display object to the new\n * Matrix object.

\n *\n *

To apply three-dimensional transformations: start with a\n * three-dimensional display object. A three-dimensional display object has a\n * z property value other than zero. You do not need to create\n * the Matrix3D object. For all three-dimensional objects, a Matrix3D object\n * is created automatically when you assign a z value to a\n * display object. You can access the display object's Matrix3D object through\n * the display object's transform property. Using the methods of\n * the Matrix3D class, you can add to or modify the existing transformation\n * settings. Also, you can create a custom Matrix3D object, set the custom\n * Matrix3D object's transformation elements, and then assign the new Matrix3D\n * object to the display object using the transform.matrix\n * property.

\n *\n *

To modify a perspective projection of the stage or root object: use the\n * transform.matrix property of the root display object to gain\n * access to the PerspectiveProjection object. Or, apply different perspective\n * projection properties to a display object by setting the perspective\n * projection properties of the display object's parent. The child display\n * object inherits the new properties. Specifically, create a\n * PerspectiveProjection object and set its properties, then assign the\n * PerspectiveProjection object to the perspectiveProjection\n * property of the parent display object's transform property.\n * The specified projection transformation then applies to all the display\n * object's three-dimensional children.

\n *\n *

Since both PerspectiveProjection and Matrix3D objects perform\n * perspective transformations, do not assign both to a display object at the\n * same time. Use the PerspectiveProjection object for focal length and\n * projection center changes. For more control over the perspective\n * transformation, create a perspective projection Matrix3D object.

\n */\nclass Transform\n{\n\tprivate _displayObject:DisplayObject;\n\tprivate _concatenatedColorTransform:ColorTransform;\n\tprivate _concatenatedMatrix:Matrix;\n\tprivate _pixelBounds:Rectangle;\n\tpublic _position:Vector3D = new Vector3D();\n\n\t/**\n\t *\n\t */\n\tpublic get backVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A ColorTransform object containing values that universally adjust the\n\t * colors in the display object.\n\t * \n\t * @throws TypeError The colorTransform is null when being set\n\t */\n\tpublic colorTransform:ColorTransform;\n\n\t/**\n\t * A ColorTransform object representing the combined color transformations\n\t * applied to the display object and all of its parent objects, back to the\n\t * root level. If different color transformations have been applied at\n\t * different levels, all of those transformations are concatenated into one\n\t * ColorTransform object for this property.\n\t */\n\tpublic get concatenatedColorTransform():ColorTransform\n\t{\n\t\treturn this._concatenatedColorTransform; //TODO\n\t}\n\n\t/**\n\t * A Matrix object representing the combined transformation matrixes of the\n\t * display object and all of its parent objects, back to the root level. If\n\t * different transformation matrixes have been applied at different levels,\n\t * all of those matrixes are concatenated into one matrix for this property.\n\t * Also, for resizeable SWF content running in the browser, this property\n\t * factors in the difference between stage coordinates and window coordinates\n\t * due to window resizing. Thus, the property converts local coordinates to\n\t * window coordinates, which may not be the same coordinate space as that of\n\t * the Stage.\n\t */\n\tpublic get concatenatedMatrix():Matrix\n\t{\n\t\treturn this._concatenatedMatrix; //TODO\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get downVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get forwardVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getForward(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get leftVector():Vector3D\n\t{\n\t\tvar director:Vector3D = Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t\tdirector.negate();\n\n\t\treturn director;\n\t}\n\n\t/**\n\t * A Matrix object containing values that alter the scaling, rotation, and\n\t * translation of the display object.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t * \n\t * @throws TypeError The matrix is null when being set\n\t */\n\tpublic matrix:Matrix;\n\n\t/**\n\t * Provides access to the Matrix3D object of a three-dimensional display\n\t * object. The Matrix3D object represents a transformation matrix that\n\t * determines the display object's position and orientation. A Matrix3D\n\t * object can also perform perspective projection.\n\t *\n\t *

If the matrix property is set to a value(not\n\t * null), the matrix3D property is\n\t * null. And if the matrix3D property is set to a\n\t * value(not null), the matrix property is\n\t * null.

\n\t */\n\tpublic get matrix3D():Matrix3D\n\t{\n\t\treturn this._displayObject._iMatrix3D;\n\t}\n\n\tpublic set matrix3D(val:Matrix3D)\n\t{\n\t\tthis._displayObject._iMatrix3D = val;\n\t}\n\n\t/**\n\t * Provides access to the PerspectiveProjection object of a three-dimensional\n\t * display object. The PerspectiveProjection object can be used to modify the\n\t * perspective transformation of the stage or to assign a perspective\n\t * transformation to all the three-dimensional children of a display object.\n\t *\n\t *

Based on the field of view and aspect ratio(dimensions) of the stage,\n\t * a default PerspectiveProjection object is assigned to the root object.

\n\t */\n\tpublic perspectiveProjection:PerspectiveProjection;\n\n\t/**\n\t * A Rectangle object that defines the bounding rectangle of the display\n\t * object on the stage.\n\t */\n\tpublic get pixelBounds():Rectangle\n\t{\n\t\treturn this._pixelBounds;\n\t}\n\n\t/**\n\t * Defines the position of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get position():Vector3D\n\t{\n\t\treturn this._displayObject._iMatrix3D.position\n\t}\n\n\tpublic set position(value:Vector3D)\n\t{\n\t\tthis._displayObject.x = value.x;\n\t\tthis._displayObject.y = value.y;\n\t\tthis._displayObject.z = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get rightVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getRight(this._displayObject._iMatrix3D);\n\t}\n\n\t/**\n\t * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get rotation():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.rotationX, this._displayObject.rotationY, this._displayObject.rotationZ);\n\t}\n\n\tpublic set rotation(value:Vector3D)\n\t{\n\t\tthis._displayObject.rotationX = value.x;\n\t\tthis._displayObject.rotationY = value.y;\n\t\tthis._displayObject.rotationZ = value.z;\n\t}\n\n\t/**\n\t * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D.\n\t */\n\tpublic get scale():Vector3D\n\t{\n\t\treturn new Vector3D(this._displayObject.scaleX, this._displayObject.scaleY, this._displayObject.scaleZ);\n\t}\n\n\tpublic set scale(value:Vector3D)\n\t{\n\t\tthis._displayObject.scaleX = value.x;\n\t\tthis._displayObject.scaleY = value.y;\n\t\tthis._displayObject.scaleZ = value.z;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get upVector():Vector3D\n\t{\n\t\treturn Matrix3DUtils.getUp(this._displayObject._iMatrix3D);\n\t}\n\n\tconstructor(displayObject:DisplayObject)\n\t{\n\t\tthis._displayObject = displayObject;\n\t}\n\n\t/**\n\t * Returns a Matrix3D object, which can transform the space of a specified\n\t * display object in relation to the current display object's space. You can\n\t * use the getRelativeMatrix3D() method to move one\n\t * three-dimensional display object relative to another three-dimensional\n\t * display object.\n\t * \n\t * @param relativeTo The display object relative to which the transformation\n\t * occurs. To get a Matrix3D object relative to the stage,\n\t * set the parameter to the root or\n\t * stage object. To get the world-relative\n\t * matrix of the display object, set the parameter to a\n\t * display object that has a perspective transformation\n\t * applied to it.\n\t * @return A Matrix3D object that can be used to transform the space from the\n\t * relativeTo display object to the current display\n\t * object space.\n\t */\n\tpublic getRelativeMatrix3D(relativeTo:DisplayObject):Matrix3D\n\t{\n\t\treturn new Matrix3D(); //TODO\n\t}\n\n\n\t/**\n\t * Moves the 3d object forwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveForward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local z axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveBackward(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Z_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\n\tpublic moveLeft(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, -distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local x axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveRight(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.X_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object forwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveUp(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, distance);\n\t}\n\n\t/**\n\t * Moves the 3d object backwards along it's local y axis\n\t *\n\t * @param distance The length of the movement\n\t */\n\tpublic moveDown(distance:number)\n\t{\n\t\tthis._displayObject.translateLocal(Vector3D.Y_AXIS, -distance);\n\t}\n}\n\nexport = Transform;\n","/**\n * Defines codes for culling algorithms that determine which triangles not to\n * render when drawing triangle paths.\n *\n *

The terms POSITIVE and NEGATIVE refer to the\n * sign of a triangle's normal along the z-axis. The normal is a 3D vector\n * that is perpendicular to the surface of the triangle.

\n *\n *

A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order\n * has a positive normal value. That is, its normal points in a positive\n * z-axis direction, away from the current view point. When the\n * TriangleCulling.POSITIVE algorithm is used, triangles with\n * positive normals are not rendered. Another term for this is backface\n * culling.

\n *\n *

A triangle whose vertices are arranged in a counter-clockwise order has\n * a negative normal value. That is, its normal points in a negative z-axis\n * direction, toward the current view point. When the\n * TriangleCulling.NEGATIVE algorithm is used, triangles with\n * negative normals will not be rendered.

\n */\nclass TriangleCulling\n{\n\t/**\n\t * Specifies culling of all triangles facing toward the current view point.\n\t */\n\tpublic static NEGATIVE:string = \"negative\";\n\n\t/**\n\t * Specifies no culling. All triangles in the path are rendered.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Specifies culling of all triangles facing away from the current view\n\t * point. This is also known as backface culling.\n\t */\n\tpublic static POSITIVE:string = \"positive\";\n}\n\nexport = TriangleCulling;","import Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubMesh\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport SubGeometryEvent\t\t\t= require(\"awayjs-display/lib/events/SubGeometryEvent\");\n\n/**\n * @class away.base.TriangleSubGeometry\n */\nclass TriangleSubGeometry extends SubGeometryBase\n{\n\tpublic static POSITION_DATA:string = \"positions\";\n\tpublic static NORMAL_DATA:string = \"vertexNormals\";\n\tpublic static TANGENT_DATA:string = \"vertexTangents\";\n\tpublic static UV_DATA:string = \"uvs\";\n\tpublic static SECONDARY_UV_DATA:string = \"secondaryUVs\";\n\tpublic static JOINT_INDEX_DATA:string = \"jointIndices\";\n\tpublic static JOINT_WEIGHT_DATA:string = \"jointWeights\";\n\n\t//TODO - move these to StageGL\n\tpublic static POSITION_FORMAT:string = \"float3\";\n\tpublic static NORMAL_FORMAT:string = \"float3\";\n\tpublic static TANGENT_FORMAT:string = \"float3\";\n\tpublic static UV_FORMAT:string = \"float2\";\n\tpublic static SECONDARY_UV_FORMAT:string = \"float2\";\n\n\tprivate _positionsDirty:boolean = true;\n\tprivate _faceNormalsDirty:boolean = true;\n\tprivate _faceTangentsDirty:boolean = true;\n\tprivate _vertexNormalsDirty:boolean = true;\n\tprivate _vertexTangentsDirty:boolean = true;\n\tprivate _uvsDirty:boolean = true;\n\tprivate _secondaryUVsDirty:boolean = true;\n\tprivate _jointIndicesDirty:boolean = true;\n\tprivate _jointWeightsDirty:boolean = true;\n\n\tprivate _positions:Array;\n\tprivate _vertexNormals:Array;\n\tprivate _vertexTangents:Array;\n\tprivate _uvs:Array;\n\tprivate _secondaryUVs:Array;\n\tprivate _jointIndices:Array;\n\tprivate _jointWeights:Array;\n\n\tprivate _useCondensedIndices:boolean;\n\tprivate _condensedJointIndices:Array;\n\tprivate _condensedIndexLookUp:Array;\n\tprivate _numCondensedJoints:number;\n\n\tprivate _jointsPerVertex:number;\n\n\tprivate _concatenateArrays:boolean = true;\n\tprivate _autoDeriveNormals:boolean = true;\n\tprivate _autoDeriveTangents:boolean = true;\n\tprivate _autoDeriveUVs:boolean = false;\n\tprivate _useFaceWeights:boolean = false;\n\n\tprivate _faceNormals:Array;\n\tprivate _faceTangents:Array;\n\tprivate _faceWeights:Array;\n\n\tprivate _scaleU:number = 1;\n\tprivate _scaleV:number = 1;\n\n\tprivate _positionsUpdated:SubGeometryEvent;\n\tprivate _normalsUpdated:SubGeometryEvent;\n\tprivate _tangentsUpdated:SubGeometryEvent;\n\tprivate _uvsUpdated:SubGeometryEvent;\n\tprivate _secondaryUVsUpdated:SubGeometryEvent;\n\tprivate _jointIndicesUpdated:SubGeometryEvent;\n\tprivate _jointWeightsUpdated:SubGeometryEvent;\n\n\t/**\n\t *\n\t */\n\tpublic get scaleU():number\n\t{\n\t\treturn this._scaleU;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scaleV():number\n\t{\n\t\treturn this._scaleV;\n\t}\n\n\t/**\n\t * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints\n\t * by condensing the number of joint index values required per mesh. Only applicable to\n\t * skeleton animations that utilise more than one mesh object. Defaults to false.\n\t */\n\tpublic get useCondensedIndices():boolean\n\t{\n\t\treturn this._useCondensedIndices;\n\t}\n\n\tpublic set useCondensedIndices(value:boolean)\n\t{\n\t\tif (this._useCondensedIndices == value)\n\t\t\treturn;\n\n\t\tthis._useCondensedIndices = value;\n\n\t\tthis.notifyJointIndicesUpdate();\n\t}\n\n\tpublic _pUpdateStrideOffset()\n\t{\n\t\tif (this._concatenateArrays) {\n\t\t\tthis._pOffset[TriangleSubGeometry.VERTEX_DATA] = 0;\n\n\t\t\t//always have positions\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tvar stride:number = 3;\n\n\t\t\tif (this._vertexNormals != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._vertexTangents != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\t\tstride += 3;\n\t\t\t}\n\n\t\t\tif (this._uvs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._secondaryUVs != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\t\tstride += 2;\n\t\t\t}\n\n\t\t\tif (this._jointIndices != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tif (this._jointWeights != null) {\n\t\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\t\t\t\tstride += this._jointsPerVertex;\n\t\t\t}\n\n\t\t\tthis._pStride[TriangleSubGeometry.VERTEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = stride;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = stride;\n\n\t\t\tvar len:number = this._pNumVertices*stride;\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t} else {\n\t\t\tthis._pOffset[TriangleSubGeometry.POSITION_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.NORMAL_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.TANGENT_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.SECONDARY_UV_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_INDEX_DATA] = 0;\n\t\t\tthis._pOffset[TriangleSubGeometry.JOINT_WEIGHT_DATA] = 0;\n\n\t\t\tthis._pStride[TriangleSubGeometry.POSITION_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.NORMAL_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.TANGENT_DATA] = 3;\n\t\t\tthis._pStride[TriangleSubGeometry.UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.SECONDARY_UV_DATA] = 2;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_INDEX_DATA] = this._jointsPerVertex;\n\t\t\tthis._pStride[TriangleSubGeometry.JOINT_WEIGHT_DATA] = this._jointsPerVertex;\n\t\t}\n\n\t\tthis._pStrideOffsetDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointsPerVertex():number\n\t{\n\t\treturn this._jointsPerVertex;\n\t}\n\n\tpublic set jointsPerVertex(value:number)\n\t{\n\t\tif (this._jointsPerVertex == value)\n\t\t\treturn;\n\n\t\tthis._jointsPerVertex = value;\n\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tif (this._pConcatenateArrays)\n\t\t\tthis._pNotifyVerticesUpdate();\n\t}\n\n\t/**\n\t * Defines whether a UV buffer should be automatically generated to contain dummy UV coordinates.\n\t * Set to true if a geometry lacks UV data but uses a material that requires it, or leave as false\n\t * in cases where UV data is explicitly defined or the material does not require UV data.\n\t */\n\tpublic get autoDeriveUVs():boolean\n\t{\n\t\treturn this._autoDeriveUVs;\n\t}\n\n\tpublic set autoDeriveUVs(value:boolean)\n\t{\n\t\tif (this._autoDeriveUVs == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveUVs = value;\n\n\t\tif (value)\n\t\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex normals should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveNormals():boolean\n\t{\n\t\treturn this._autoDeriveNormals;\n\t}\n\n\tpublic set autoDeriveNormals(value:boolean)\n\t{\n\t\tif (this._autoDeriveNormals == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveNormals = value;\n\n\t\tif (value)\n\t\t\tthis.notifyNormalsUpdate();\n\t}\n\n\t/**\n\t * True if the vertex tangents should be derived from the geometry, false if the vertex normals are set\n\t * explicitly.\n\t */\n\tpublic get autoDeriveTangents():boolean\n\t{\n\t\treturn this._autoDeriveTangents;\n\t}\n\n\tpublic set autoDeriveTangents(value:boolean)\n\t{\n\t\tif (this._autoDeriveTangents == value)\n\t\t\treturn;\n\n\t\tthis._autoDeriveTangents = value;\n\n\t\tif (value)\n\t\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertices():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._pVertices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get positions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexNormals():Array\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\tthis.updateVertexNormals(this._vertexNormals);\n\n\t\treturn this._vertexNormals;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get vertexTangents():Array\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\tthis.updateVertexTangents(this._vertexTangents);\n\n\t\treturn this._vertexTangents;\n\t}\n\n\t/**\n\t * The raw data of the face normals, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceNormals():Array\n\t{\n\t\tif (this._faceNormalsDirty)\n\t\t\tthis.updateFaceNormals();\n\n\t\treturn this._faceNormals;\n\t}\n\n\t/**\n\t * The raw data of the face tangets, in the same order as the faces are listed in the index list.\n\t */\n\tpublic get faceTangents():Array\n\t{\n\t\tif (this._faceTangentsDirty)\n\t\t\tthis.updateFaceTangents();\n\n\t\treturn this._faceTangents;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvs():Array\n\t{\n\t\tif (this._uvsDirty)\n\t\t\tthis.updateUVs(this._uvs);\n\n\t\treturn this._uvs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get secondaryUVs():Array\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\tthis.updateSecondaryUVs(this._secondaryUVs);\n\n\t\treturn this._secondaryUVs;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointIndices():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\tif (this._useCondensedIndices)\n\t\t\treturn this._condensedJointIndices;\n\n\t\treturn this._jointIndices;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get jointWeights():Array\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\tthis.updateJointWeights(this._jointWeights);\n\n\t\treturn this._jointWeights;\n\t}\n\n\t/**\n\t * Indicates whether or not to take the size of faces into account when auto-deriving vertex normals and tangents.\n\t */\n\tpublic get useFaceWeights():boolean\n\t{\n\t\treturn this._useFaceWeights;\n\t}\n\n\tpublic set useFaceWeights(value:boolean)\n\t{\n\t\tif (this._useFaceWeights == value)\n\t\t\treturn;\n\n\t\tthis._useFaceWeights = value;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._faceNormalsDirty = true;\n\t}\n\n\tpublic get numCondensedJoints():number\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._numCondensedJoints;\n\t}\n\n\tpublic get condensedIndexLookUp():Array\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\tthis.updateJointIndices(this._jointIndices);\n\n\t\treturn this._condensedIndexLookUp;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor(concatenatedArrays:boolean)\n\t{\n\t\tsuper(concatenatedArrays);\n\n\t\tthis._pSubMeshClass = TriangleSubMesh;\n\t}\n\n\tpublic getBoundingPositions():Array\n\t{\n\t\tif (this._positionsDirty)\n\t\t\tthis.updatePositions(this._positions);\n\n\t\treturn this._positions;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updatePositions(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tthis._positions = values;\n\n\t\tif (this._positions == null)\n\t\t\tthis._positions = new Array();\n\n\t\tthis._pNumVertices = this._positions.length/3;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tvar len:number = this._pNumVertices*this.getStride(TriangleSubGeometry.VERTEX_DATA);\n\n\t\t\tif (this._pVertices == null)\n\t\t\t\tthis._pVertices = new Array(len);\n\t\t\telse if (this._pVertices.length != len)\n\t\t\t\tthis._pVertices.length = len;\n\n\t\t\ti = 0;\n\t\t\tindex = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\t\tpositions = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tpositions[index] = values[i++];\n\t\t\t\tpositions[index + 1] = values[i++];\n\t\t\t\tpositions[index + 2] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis.notifyNormalsUpdate();\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis.notifyUVsUpdate()\n\n\t\tthis.pInvalidateBounds();\n\n\t\tthis.notifyPositionsUpdate();\n\n\t\tthis._positionsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex normals based on the geometry.\n\t */\n\tpublic updateVertexNormals(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar normals:Array;\n\n\t\tif (!this._autoDeriveNormals) {\n\t\t\tif ((this._vertexNormals == null || values == null) && (this._vertexNormals != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._vertexNormals = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\t\t\tnormals = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tnormals[index] = values[i++];\n\t\t\t\t\tnormals[index + 1] = values[i++];\n\t\t\t\t\tnormals[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexNormals == null) {\n\t\t\t\tthis._vertexNormals = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceNormalsDirty)\n\t\t\t\tthis.updateFaceNormals();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\n\t\t\t//autoderived normals\n\t\t\tnormals = this._concatenateArrays? this._pVertices : this._vertexNormals;\n\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear normal values\n\t\t\tvar lenV:number = normals.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tnormals[index] = 0;\n\t\t\t\tnormals[index + 1] = 0;\n\t\t\t\tnormals[index + 2] = 0;\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\tvar weight:number;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face normals\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\tnormals[index] += this._faceNormals[f1]*weight;\n\t\t\t\tnormals[index + 1] += this._faceNormals[f2]*weight;\n\t\t\t\tnormals[index + 2] += this._faceNormals[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average normals collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = normals[index];\n\t\t\t\tvar vy:number = normals[index + 1];\n\t\t\t\tvar vz:number = normals[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index] = vx*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexNormals[i++] = normals[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\tnormals[index] = vx*d;\n\t\t\t\t\tnormals[index + 1] = vy*d;\n\t\t\t\t\tnormals[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyNormalsUpdate();\n\n\t\tthis._vertexNormalsDirty = false;\n\t}\n\n\t/**\n\t * Updates the vertex tangents based on the geometry.\n\t */\n\tpublic updateVertexTangents(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar tangents:Array;\n\n\t\tif (!this._autoDeriveTangents) {\n\t\t\tif ((this._vertexTangents == null || values == null) && (this._vertexTangents != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\n\t\t\tthis._vertexTangents = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\t\t\t\ttangents = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\ttangents[index] = values[i++];\n\t\t\t\t\ttangents[index + 1] = values[i++];\n\t\t\t\t\ttangents[index + 2] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._vertexTangents == null) {\n\t\t\t\tthis._vertexTangents = new Array(this._positions.length);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tif (this._faceTangentsDirty)\n\t\t\t\tthis.updateFaceTangents();\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\t\t//autoderived tangents\n\t\t\ttangents = this._concatenateArrays? this._pVertices : this._vertexTangents;\n\n\t\t\tindex = offset;\n\n\t\t\t//clear tangent values\n\t\t\tvar lenV:number = tangents.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\ttangents[index] = 0;\n\t\t\t\ttangents[index + 1] = 0;\n\t\t\t\ttangents[index + 2] = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\n\t\t\tvar k:number = 0;\n\t\t\tvar weight:number;\n\t\t\tvar f1:number = 0;\n\t\t\tvar f2:number = 1;\n\t\t\tvar f3:number = 2;\n\n\t\t\ti = 0;\n\n\t\t\t//collect face tangents\n\t\t\tvar lenI:number = this._pIndices.length;\n\t\t\twhile (i < lenI) {\n\t\t\t\tweight = this._useFaceWeights? this._faceWeights[k++] : 1;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tindex = offset + this._pIndices[i++]*stride;\n\t\t\t\ttangents[index++] += this._faceTangents[f1]*weight;\n\t\t\t\ttangents[index++] += this._faceTangents[f2]*weight;\n\t\t\t\ttangents[index] += this._faceTangents[f3]*weight;\n\t\t\t\tf1 += 3;\n\t\t\t\tf2 += 3;\n\t\t\t\tf3 += 3;\n\t\t\t}\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\n\t\t\t//average tangents collections\n\t\t\twhile (index < lenV) {\n\t\t\t\tvar vx:number = tangents[index];\n\t\t\t\tvar vy:number = tangents[index + 1];\n\t\t\t\tvar vz:number = tangents[index + 2];\n\t\t\t\tvar d:number = 1.0/Math.sqrt(vx*vx + vy*vy + vz*vz);\n\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index] = vx*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 1] = vy*d;\n\t\t\t\t\tthis._vertexTangents[i++] = tangents[index + 2] = vz*d;\n\t\t\t\t} else {\n\t\t\t\t\ttangents[index] = vx*d;\n\t\t\t\t\ttangents[index + 1] = vy*d;\n\t\t\t\t\ttangents[index + 2] = vz*d;\n\t\t\t\t}\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyTangentsUpdate();\n\n\t\tthis._vertexTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the uvs based on the geometry.\n\t */\n\tpublic updateUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (!this._autoDeriveUVs) {\n\t\t\tif ((this._uvs == null || values == null) && (this._uvs != null || values != null)) {\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\tthis._uvs = values;\n\n\t\t\tif (values != null && this._concatenateArrays) {\n\t\t\t\ti = 0;\n\t\t\t\tindex = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\t\t\t\tuvs = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tuvs[index] = values[i++];\n\t\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (this._uvs == null) {\n\t\t\t\tthis._uvs = new Array(this._positions.length*2/3);\n\n\t\t\t\tif (this._concatenateArrays)\n\t\t\t\t\tthis._pNotifyVerticesUpdate();\n\t\t\t\telse\n\t\t\t\t\tthis._pStrideOffsetDirty = true;\n\t\t\t}\n\n\t\t\toffset = this.getOffset(TriangleSubGeometry.UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.UV_DATA);\n\n\t\t\t//autoderived uvs\n\t\t\tuvs = this._concatenateArrays? this._pVertices : this._uvs;\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tvar uvIdx:number = 0;\n\n\t\t\t//clear uv values\n\t\t\tvar lenV:number = uvs.length;\n\t\t\twhile (index < lenV) {\n\t\t\t\tif (this._concatenateArrays) {\n\t\t\t\t\tthis._uvs[i++] = uvs[index] = uvIdx*.5;\n\t\t\t\t\tthis._uvs[i++] = uvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t} else {\n\t\t\t\t\tuvs[index] = uvIdx*.5;\n\t\t\t\t\tuvs[index + 1] = 1.0 - (uvIdx & 1);\n\t\t\t\t}\n\n\t\t\t\tif (++uvIdx == 3)\n\t\t\t\t\tuvIdx = 0;\n\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis.notifyTangentsUpdate();\n\n\t\tthis.notifyUVsUpdate();\n\n\t\tthis._uvsDirty = false;\n\t}\n\n\t/**\n\t * Updates the secondary uvs based on the geometry.\n\t */\n\tpublic updateSecondaryUVs(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tif (this._concatenateArrays && (this._secondaryUVs == null || values == null) && (this._secondaryUVs != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._secondaryUVs = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.SECONDARY_UV_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tuvs = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tuvs[index] = values[i++];\n\t\t\t\tuvs[index + 1] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifySecondaryUVsUpdate();\n\n\t\tthis._secondaryUVsDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint indices\n\t */\n\tpublic updateJointIndices(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointIndices:Array;\n\n\t\tif (this._concatenateArrays && (this._jointIndices == null || values == null) && (this._jointIndices != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointIndices = values;\n\n\t\tif (values != null) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_INDEX_DATA);\n\t\t\tif (this._useCondensedIndices) {\n\t\t\t\ti = 0;\n\t\t\t\tj = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._concatenateArrays? this._pVertices : this._condensedJointIndices;\n\t\t\t\tvar oldIndex:number;\n\t\t\t\tvar newIndex:number = 0;\n\t\t\t\tvar dic:Object = new Object();\n\n\t\t\t\tif (!this._concatenateArrays)\n\t\t\t\t\tthis._condensedJointIndices = new Array(values.length);\n\n\t\t\t\tthis._condensedIndexLookUp = new Array();\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tfor (j = 0; j < this._jointsPerVertex; j++) {\n\t\t\t\t\t\toldIndex = values[i++];\n\n\t\t\t\t\t\t// if we encounter a new index, assign it a new condensed index\n\t\t\t\t\t\tif (dic[oldIndex] == undefined) {\n\t\t\t\t\t\t\tdic[oldIndex] = newIndex*3; //3 required for the three vectors that store the matrix\n\t\t\t\t\t\t\tthis._condensedIndexLookUp[newIndex++] = oldIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tjointIndices[index + j] = dic[oldIndex];\n\t\t\t\t\t}\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t\tthis._numCondensedJoints = newIndex;\n\t\t\t} else if (this._concatenateArrays) {\n\n\t\t\t\ti = 0;\n\t\t\t\tindex = offset;\n\t\t\t\tjointIndices = this._pVertices;\n\n\t\t\t\twhile (i < values.length) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\t\tjointIndices[index + j++] = values[i++];\n\t\t\t\t\tindex += stride;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointIndicesUpdate();\n\n\t\tthis._jointIndicesDirty = false;\n\t}\n\n\t/**\n\t * Updates the joint weights.\n\t */\n\tpublic updateJointWeights(values:Array)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar jointWeights:Array;\n\n\t\tif (this._concatenateArrays && (this._jointWeights == null || values == null) && (this._jointWeights != null || values != null))\n\t\t\tthis._pNotifyVerticesUpdate();\n\n\t\tthis._jointWeights = values;\n\n\t\tif (values != null && this._concatenateArrays) {\n\t\t\toffset = this.getOffset(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\t\t\tstride = this.getStride(TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\t\ti = 0;\n\t\t\tindex = offset;\n\t\t\tjointWeights = this._pVertices;\n\n\t\t\twhile (i < values.length) {\n\t\t\t\tj = 0;\n\t\t\t\twhile (j < this._jointsPerVertex)\n\t\t\t\t\tjointWeights[index + j++] = values[i++];\n\t\t\t\tindex += stride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyJointWeightsUpdate();\n\n\t\tthis._jointWeightsDirty = false;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis._positions = null;\n\t\tthis._vertexNormals = null;\n\t\tthis._vertexTangents = null;\n\t\tthis._uvs = null;\n\t\tthis._secondaryUVs = null;\n\t\tthis._jointIndices = null;\n\t\tthis._jointWeights = null;\n\n\t\tthis._faceNormals = null;\n\t\tthis._faceWeights = null;\n\t\tthis._faceTangents = null;\n\t}\n\n\t/**\n\t * Updates the face indices of the TriangleSubGeometry.\n\t *\n\t * @param indices The face indices to upload.\n\t */\n\tpublic updateIndices(indices:Array)\n\t{\n\t\tsuper.updateIndices(indices);\n\n\t\tthis._faceNormalsDirty = true;\n\n\t\tif (this._autoDeriveNormals)\n\t\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (this._autoDeriveTangents)\n\t\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (this._autoDeriveUVs)\n\t\t\tthis._uvsDirty = true;\n\t}\n\n\t/**\n\t * Clones the current object\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():TriangleSubGeometry\n\t{\n\t\tvar clone:TriangleSubGeometry = new TriangleSubGeometry(this._concatenateArrays);\n\t\tclone.updateIndices(this._pIndices.concat());\n\t\tclone.updatePositions(this._positions.concat());\n\n\t\tif (this._vertexNormals && !this._autoDeriveNormals)\n\t\t\tclone.updateVertexNormals(this._vertexNormals.concat());\n\t\telse\n\t\t\tclone.updateVertexNormals(null);\n\n\t\tif (this._uvs && !this._autoDeriveUVs)\n\t\t\tclone.updateUVs(this._uvs.concat());\n\t\telse\n\t\t\tclone.updateUVs(null);\n\n\t\tif (this._vertexTangents && !this._autoDeriveTangents)\n\t\t\tclone.updateVertexTangents(this._vertexTangents.concat());\n\t\telse\n\t\t\tclone.updateVertexTangents(null);\n\n\t\tif (this._secondaryUVs)\n\t\t\tclone.updateSecondaryUVs(this._secondaryUVs.concat());\n\n\t\tif (this._jointIndices) {\n\t\t\tclone.jointsPerVertex = this._jointsPerVertex;\n\t\t\tclone.updateJointIndices(this._jointIndices.concat());\n\t\t}\n\n\t\tif (this._jointWeights)\n\t\t\tclone.updateJointWeights(this._jointWeights.concat());\n\n\t\treturn clone;\n\t}\n\n\tpublic scaleUV(scaleU:number = 1, scaleV:number = 1)\n\t{\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar uvs:Array;\n\n\t\tuvs = this._uvs;\n\n\t\tvar ratioU:number = scaleU/this._scaleU;\n\t\tvar ratioV:number = scaleV/this._scaleV;\n\n\t\tthis._scaleU = scaleU;\n\t\tthis._scaleV = scaleV;\n\n\t\tvar len:number = uvs.length;\n\n\t\toffset = 0;\n\t\tstride = 2;\n\n\t\tindex = offset;\n\n\t\twhile (index < len) {\n\t\t\tuvs[index] *= ratioU;\n\t\t\tuvs[index + 1] *= ratioV;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyUVsUpdate();\n\t}\n\n\t/**\n\t * Scales the geometry.\n\t * @param scale The amount by which to scale.\n\t */\n\tpublic scale(scale:number)\n\t{\n\t\tvar i:number;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\t\tvar positions:Array;\n\n\t\tpositions = this._positions;\n\n\t\tvar len:number = positions.length;\n\n\t\toffset = 0;\n\t\tstride = 3;\n\n\t\ti = 0;\n\t\tindex = offset;\n\t\twhile (i < len) {\n\t\t\tpositions[index] *= scale;\n\t\t\tpositions[index + 1] *= scale;\n\t\t\tpositions[index + 2] *= scale;\n\n\t\t\ti += 3;\n\t\t\tindex += stride;\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t}\n\n\tpublic applyTransformation(transform:Matrix3D)\n\t{\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tif (this._concatenateArrays) {\n\t\t\tpositions = this._pVertices;\n\t\t\tnormals = this._pVertices;\n\t\t\ttangents = this._pVertices;\n\t\t} else {\n\t\t\tpositions = this._positions;\n\t\t\tnormals = this._vertexNormals;\n\t\t\ttangents = this._vertexTangents;\n\t\t}\n\n\t\tvar len:number = this._positions.length/3;\n\t\tvar i:number;\n\t\tvar i1:number;\n\t\tvar i2:number;\n\t\tvar vector:Vector3D = new Vector3D();\n\n\t\tvar bakeNormals:boolean = this._vertexNormals != null;\n\t\tvar bakeTangents:boolean = this._vertexTangents != null;\n\t\tvar invTranspose:Matrix3D;\n\n\t\tif (bakeNormals || bakeTangents) {\n\t\t\tinvTranspose = transform.clone();\n\t\t\tinvTranspose.invert();\n\t\t\tinvTranspose.transpose();\n\t\t}\n\n\t\tvar vi0:number = this.getOffset(TriangleSubGeometry.POSITION_DATA);\n\t\tvar ni0:number = this.getOffset(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar ti0:number = this.getOffset(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tvar vStride:number = this.getStride(TriangleSubGeometry.POSITION_DATA);\n\t\tvar nStride:number = this.getStride(TriangleSubGeometry.NORMAL_DATA);\n\t\tvar tStride:number = this.getStride(TriangleSubGeometry.TANGENT_DATA);\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\ti1 = vi0 + 1;\n\t\t\ti2 = vi0 + 2;\n\n\t\t\t// bake position\n\t\t\tvector.x = positions[vi0];\n\t\t\tvector.y = positions[i1];\n\t\t\tvector.z = positions[i2];\n\t\t\tvector = transform.transformVector(vector);\n\t\t\tpositions[vi0] = vector.x;\n\t\t\tpositions[i1] = vector.y;\n\t\t\tpositions[i2] = vector.z;\n\t\t\tvi0 += vStride;\n\n\t\t\t// bake normal\n\t\t\tif (bakeNormals) {\n\t\t\t\ti1 = ni0 + 1;\n\t\t\t\ti2 = ni0 + 2;\n\t\t\t\tvector.x = normals[ni0];\n\t\t\t\tvector.y = normals[i1];\n\t\t\t\tvector.z = normals[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\tnormals[ni0] = vector.x;\n\t\t\t\tnormals[i1] = vector.y;\n\t\t\t\tnormals[i2] = vector.z;\n\t\t\t\tni0 += nStride;\n\t\t\t}\n\n\t\t\t// bake tangent\n\t\t\tif (bakeTangents) {\n\t\t\t\ti1 = ti0 + 1;\n\t\t\t\ti2 = ti0 + 2;\n\t\t\t\tvector.x = tangents[ti0];\n\t\t\t\tvector.y = tangents[i1];\n\t\t\t\tvector.z = tangents[i2];\n\t\t\t\tvector = invTranspose.deltaTransformVector(vector);\n\t\t\t\tvector.normalize();\n\t\t\t\ttangents[ti0] = vector.x;\n\t\t\t\ttangents[i1] = vector.y;\n\t\t\t\ttangents[i2] = vector.z;\n\t\t\t\tti0 += tStride;\n\t\t\t}\n\t\t}\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t}\n\n\t/**\n\t * Updates the tangents for each face.\n\t */\n\tprivate updateFaceTangents()\n\t{\n\t\tvar i:number = 0;\n\t\tvar index1:number;\n\t\tvar index2:number;\n\t\tvar index3:number;\n\t\tvar vi:number;\n\t\tvar v0:number;\n\t\tvar dv1:number;\n\t\tvar dv2:number;\n\t\tvar denom:number;\n\t\tvar x0:number, y0:number, z0:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\n\t\tvar positions:Array = this._positions\n\t\tvar uvs:Array = this._uvs;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceTangents == null)\n\t\t\tthis._faceTangents = new Array(len);\n\n\t\twhile (i < len) {\n\t\t\tindex1 = this._pIndices[i];\n\t\t\tindex2 = this._pIndices[i + 1];\n\t\t\tindex3 = this._pIndices[i + 2];\n\n\t\t\tv0 = uvs[index1*2 + 1];\n\t\t\tdv1 = uvs[index2*2 + 1] - v0;\n\t\t\tdv2 = uvs[index3*2 + 1] - v0;\n\n\t\t\tvi = index1*3;\n\t\t\tx0 = positions[vi];\n\t\t\ty0 = positions[vi + 1];\n\t\t\tz0 = positions[vi + 2];\n\t\t\tvi = index2*3;\n\t\t\tdx1 = positions[vi] - x0;\n\t\t\tdy1 = positions[vi + 1] - y0;\n\t\t\tdz1 = positions[vi + 2] - z0;\n\t\t\tvi = index3*3;\n\t\t\tdx2 = positions[vi] - x0;\n\t\t\tdy2 = positions[vi + 1] - y0;\n\t\t\tdz2 = positions[vi + 2] - z0;\n\n\t\t\tcx = dv2*dx1 - dv1*dx2;\n\t\t\tcy = dv2*dy1 - dv1*dy2;\n\t\t\tcz = dv2*dz1 - dv1*dz2;\n\t\t\tdenom = 1/Math.sqrt(cx*cx + cy*cy + cz*cz);\n\n\t\t\tthis._faceTangents[i++] = denom*cx;\n\t\t\tthis._faceTangents[i++] = denom*cy;\n\t\t\tthis._faceTangents[i++] = denom*cz;\n\t\t}\n\n\t\tthis._faceTangentsDirty = false;\n\t}\n\n\t/**\n\t * Updates the normals for each face.\n\t */\n\tprivate updateFaceNormals()\n\t{\n\t\tvar i:number = 0;\n\t\tvar j:number = 0;\n\t\tvar k:number = 0;\n\t\tvar index:number;\n\t\tvar offset:number;\n\t\tvar stride:number;\n\n\t\tvar x1:number, x2:number, x3:number;\n\t\tvar y1:number, y2:number, y3:number;\n\t\tvar z1:number, z2:number, z3:number;\n\t\tvar dx1:number, dy1:number, dz1:number;\n\t\tvar dx2:number, dy2:number, dz2:number;\n\t\tvar cx:number, cy:number, cz:number;\n\t\tvar d:number;\n\n\t\tvar positions:Array = this._positions;\n\n\t\tvar len:number = this._pIndices.length;\n\n\t\tif (this._faceNormals == null)\n\t\t\tthis._faceNormals = new Array(len);\n\n\t\tif (this._useFaceWeights && this._faceWeights == null)\n\t\t\tthis._faceWeights = new Array(len/3);\n\n\t\twhile (i < len) {\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx1 = positions[index];\n\t\t\ty1 = positions[index + 1];\n\t\t\tz1 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx2 = positions[index];\n\t\t\ty2 = positions[index + 1];\n\t\t\tz2 = positions[index + 2];\n\t\t\tindex = this._pIndices[i++]*3;\n\t\t\tx3 = positions[index];\n\t\t\ty3 = positions[index + 1];\n\t\t\tz3 = positions[index + 2];\n\t\t\tdx1 = x3 - x1;\n\t\t\tdy1 = y3 - y1;\n\t\t\tdz1 = z3 - z1;\n\t\t\tdx2 = x2 - x1;\n\t\t\tdy2 = y2 - y1;\n\t\t\tdz2 = z2 - z1;\n\t\t\tcx = dz1*dy2 - dy1*dz2;\n\t\t\tcy = dx1*dz2 - dz1*dx2;\n\t\t\tcz = dy1*dx2 - dx1*dy2;\n\t\t\td = Math.sqrt(cx*cx + cy*cy + cz*cz);\n\t\t\t// length of cross product = 2*triangle area\n\n\t\t\tif (this._useFaceWeights) {\n\t\t\t\tvar w:number = d*10000;\n\n\t\t\t\tif (w < 1)\n\t\t\t\t\tw = 1;\n\n\t\t\t\tthis._faceWeights[k++] = w;\n\t\t\t}\n\n\t\t\td = 1/d;\n\n\t\t\tthis._faceNormals[j++] = cx*d;\n\t\t\tthis._faceNormals[j++] = cy*d;\n\t\t\tthis._faceNormals[j++] = cz*d;\n\t\t}\n\n\t\tthis._faceNormalsDirty = false;\n\t}\n\n\tpublic _pNotifyVerticesUpdate()\n\t{\n\t\tthis._pStrideOffsetDirty = true;\n\n\t\tthis.notifyPositionsUpdate();\n\t\tthis.notifyNormalsUpdate();\n\t\tthis.notifyTangentsUpdate();\n\t\tthis.notifyUVsUpdate();\n\t\tthis.notifySecondaryUVsUpdate();\n\t\tthis.notifyJointIndicesUpdate();\n\t\tthis.notifyJointWeightsUpdate();\n\t}\n\n\tprivate notifyPositionsUpdate()\n\t{\n\t\tif (this._positionsDirty)\n\t\t\treturn;\n\n\t\tthis._positionsDirty = true;\n\n\t\tif (!this._positionsUpdated)\n\t\t\tthis._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);\n\n\t\tthis.dispatchEvent(this._positionsUpdated);\n\t}\n\n\tprivate notifyNormalsUpdate()\n\t{\n\t\tif (this._vertexNormalsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexNormalsDirty = true;\n\n\t\tif (!this._normalsUpdated)\n\t\t\tthis._normalsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.NORMAL_DATA);\n\n\t\tthis.dispatchEvent(this._normalsUpdated);\n\t}\n\n\tprivate notifyTangentsUpdate()\n\t{\n\t\tif (this._vertexTangentsDirty)\n\t\t\treturn;\n\n\t\tthis._vertexTangentsDirty = true;\n\n\t\tif (!this._tangentsUpdated)\n\t\t\tthis._tangentsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.TANGENT_DATA);\n\n\t\tthis.dispatchEvent(this._tangentsUpdated);\n\t}\n\n\tprivate notifyUVsUpdate()\n\t{\n\t\tif (this._uvsDirty)\n\t\t\treturn;\n\n\t\tthis._uvsDirty = true;\n\n\t\tif (!this._uvsUpdated)\n\t\t\tthis._uvsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.UV_DATA);\n\n\t\tthis.dispatchEvent(this._uvsUpdated);\n\t}\n\n\tprivate notifySecondaryUVsUpdate()\n\t{\n\t\tif (this._secondaryUVsDirty)\n\t\t\treturn;\n\n\t\tthis._secondaryUVsDirty = true;\n\n\t\tif (!this._secondaryUVsUpdated)\n\t\t\tthis._secondaryUVsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.SECONDARY_UV_DATA);\n\n\t\tthis.dispatchEvent(this._secondaryUVsUpdated);\n\t}\n\n\tprivate notifyJointIndicesUpdate()\n\t{\n\t\tif (this._jointIndicesDirty)\n\t\t\treturn;\n\n\t\tthis._jointIndicesDirty = true;\n\n\t\tif (!this._jointIndicesUpdated)\n\t\t\tthis._jointIndicesUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_INDEX_DATA);\n\n\t\tthis.dispatchEvent(this._jointIndicesUpdated);\n\t}\n\n\tprivate notifyJointWeightsUpdate()\n\t{\n\t\tif (this._jointWeightsDirty)\n\t\t\treturn;\n\n\t\tthis._jointWeightsDirty = true;\n\n\t\tif (!this._jointWeightsUpdated)\n\t\t\tthis._jointWeightsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.JOINT_WEIGHT_DATA);\n\n\t\tthis.dispatchEvent(this._jointWeightsUpdated);\n\t}\n}\n\nexport = TriangleSubGeometry;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ISubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport SubMeshBase\t\t\t\t= require(\"awayjs-display/lib/base/SubMeshBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\n\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * TriangleSubMesh wraps a TriangleSubGeometry as a scene graph instantiation. A TriangleSubMesh is owned by a Mesh object.\n *\n *\n * @see away.base.TriangleSubGeometry\n * @see away.entities.Mesh\n *\n * @class away.base.TriangleSubMesh\n */\nclass TriangleSubMesh extends SubMeshBase implements ISubMesh\n{\n\tprivate _subGeometry:TriangleSubGeometry;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.TRIANGLE_SUB_MESH;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t */\n\tpublic get subGeometry():TriangleSubGeometry\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Creates a new TriangleSubMesh object\n\t * @param subGeometry The TriangleSubGeometry object which provides the geometry data for this TriangleSubMesh.\n\t * @param parentMesh The Mesh object to which this TriangleSubMesh belongs.\n\t * @param material An optional material used to render this TriangleSubMesh.\n\t */\n\tconstructor(subGeometry:TriangleSubGeometry, parentMesh:Mesh, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pParentMesh = parentMesh;\n\t\tthis._subGeometry = subGeometry;\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyTriangleSubMesh(this);\n\t}\n}\n\nexport = TriangleSubMesh;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport ArgumentError\t\t\t\t= require(\"awayjs-core/lib/errors/ArgumentError\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\nimport RangeError\t\t\t\t\t= require(\"awayjs-core/lib/errors/RangeError\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\n\n/**\n * The DisplayObjectContainer class is the base class for all objects that can\n * serve as display object containers on the display list. The display list\n * manages all objects displayed in the Flash runtimes. Use the\n * DisplayObjectContainer class to arrange the display objects in the display\n * list. Each DisplayObjectContainer object has its own child list for\n * organizing the z-order of the objects. The z-order is the front-to-back\n * order that determines which object is drawn in front, which is behind, and\n * so on.\n *\n *

DisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject() throws an\n * ArgumentError exception.

\n * The DisplayObjectContainer class is an abstract base class for all objects\n * that can contain child objects. It cannot be instantiated directly; calling\n * the new DisplayObjectContainer() constructor throws an\n * ArgumentError exception.\n *\n *

For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.

\n */\nclass DisplayObjectContainer extends DisplayObject implements IAsset\n{\n\tprivate _mouseChildren:boolean = true;\n\tprivate _children:Array = new Array();\n\tpublic _iIsRoot:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CONTAINER;\n\t}\n\n\t/**\n\t * Determines whether or not the children of the object are mouse, or user\n\t * input device, enabled. If an object is enabled, a user can interact with\n\t * it by using a mouse or user input device. The default is\n\t * true.\n\t *\n\t *

This property is useful when you create a button with an instance of\n\t * the Sprite class(instead of using the SimpleButton class). When you use a\n\t * Sprite instance to create a button, you can choose to decorate the button\n\t * by using the addChild() method to add additional Sprite\n\t * instances. This process can cause unexpected behavior with mouse events\n\t * because the Sprite instances you add as children can become the target\n\t * object of a mouse event when you expect the parent instance to be the\n\t * target object. To ensure that the parent instance serves as the target\n\t * objects for mouse events, you can set the mouseChildren\n\t * property of the parent instance to false.

\n\t *\n\t *

No event is dispatched by setting this property. You must use the\n\t * addEventListener() method to create interactive\n\t * functionality.

\n\t */\n\tpublic get mouseChildren():boolean\n\t{\n\t\treturn this._mouseChildren;\n\t}\n\n\tpublic set mouseChildren(value:boolean)\n\t{\n\t\tif (this._mouseChildren == value)\n\t\t\treturn;\n\n\t\tthis._mouseChildren = value;\n\n\t\tthis._pUpdateImplicitMouseEnabled(this._pParent? this._pParent.mouseChildren : true);\n\t}\n\n\t/**\n\t * Returns the number of children of this object.\n\t */\n\tpublic get numChildren():number /*int*/\n\t{\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Determines whether the children of the object are tab enabled. Enables or\n\t * disables tabbing for the children of the object. The default is\n\t * true.\n\t *\n\t *

Note: Do not use the tabChildren property with\n\t * Flex. Instead, use the\n\t * mx.core.UIComponent.hasFocusableChildren property.

\n\t *\n\t * @throws IllegalOperationError Calling this property of the Stage object\n\t * throws an exception. The Stage object does\n\t * not implement this property.\n\t */\n\tpublic tabChildren:boolean;\n\n\t/**\n\t * Calling the new DisplayObjectContainer() constructor throws\n\t * an ArgumentError exception. You can, however, call\n\t * constructors for the following subclasses of DisplayObjectContainer:\n\t *
    \n\t *
  • new Loader()
  • \n\t *
  • new Sprite()
  • \n\t *
  • new MovieClip()
  • \n\t *
\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added to the front(top) of all other children in\n\t * this DisplayObjectContainer instance.(To add a child to a specific index\n\t * position, use the addChildAt() method.)\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t *

Note: The command stage.addChild() can cause\n\t * problems with a published SWF file, including security problems and\n\t * conflicts with other loaded SWF files. There is only one Stage within a\n\t * Flash runtime instance, no matter how many SWF files you load into the\n\t * runtime. So, generally, objects should not be added to the Stage,\n\t * directly, at all. The only object the Stage should contain is the root\n\t * object. Create a DisplayObjectContainer to contain all of the items on the\n\t * display list. Then, if necessary, add that DisplayObjectContainer instance\n\t * to the Stage.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null.\");\n\n\t\t//if child already has a parent, remove it.\n\t\tif (child._pParent)\n\t\t\tchild._pParent.removeChildInternal(child);\n\n\t\tchild.iSetParent(this);\n\n\t\tthis._children.push(child);\n\n\t\treturn child;\n\t}\n\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added at the index position specified. An index of\n\t * 0 represents the back(bottom) of the display list for this\n\t * DisplayObjectContainer object.\n\t *\n\t *

For example, the following example shows three display objects, labeled\n\t * a, b, and c, at index positions 0, 2, and 1, respectively:

\n\t *\n\t *

If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.

\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @param index The index position to which the child is added. If you\n\t * specify a currently occupied index position, the child object\n\t * that exists at that position and all higher positions are\n\t * moved up one position in the child list.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @throws RangeError Throws if the index position does not exist in the\n\t * child list.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChildAt(child:DisplayObject, index:number /*int*/):DisplayObject\n\t{\n\t\treturn child;\n\t}\n\n\tpublic addChildren(...childarray:Array)\n\t{\n\t\tvar len:number = childarray.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis.addChild(childarray[i]);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:DisplayObjectContainer = new DisplayObjectContainer();\n\t\tclone.pivot = this.pivot;\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.partition = this.partition;\n\t\tclone.name = name;\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone.addChild(this._children[i].clone());\n\n\t\t// todo: implement for all subtypes\n\t\treturn clone;\n\t}\n\n\t/**\n\t * Determines whether the specified display object is a child of the\n\t * DisplayObjectContainer instance or the instance itself. The search\n\t * includes the entire display list including this DisplayObjectContainer\n\t * instance. Grandchildren, great-grandchildren, and so on each return\n\t * true.\n\t *\n\t * @param child The child object to test.\n\t * @return true if the child object is a child of\n\t * the DisplayObjectContainer or the container itself; otherwise\n\t * false.\n\t */\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._children.indexOf(child) >= 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic disposeWithChildren()\n\t{\n\t\tthis.dispose();\n\n\t\twhile (this.numChildren > 0)\n\t\t\tthis.getChildAt(0).dispose();\n\t}\n\n\t/**\n\t * Returns the child display object instance that exists at the specified\n\t * index.\n\t *\n\t * @param index The index position of the child object.\n\t * @return The child display object at the specified index position.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic getChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\tvar child:DisplayObject = this._children[index];\n\n\t\tif (child == null)\n\t\t\tthrow new RangeError(\"Index does not exist in the child list of the caller\");\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Returns the child display object that exists with the specified name. If\n\t * more that one child display object has the specified name, the method\n\t * returns the first object in the child list.\n\t *\n\t *

The getChildAt() method is faster than the\n\t * getChildByName() method. The getChildAt() method\n\t * accesses a child from a cached array, whereas the\n\t * getChildByName() method has to traverse a linked list to\n\t * access a child.

\n\t *\n\t * @param name The name of the child to return.\n\t * @return The child display object with the specified name.\n\t */\n\tpublic getChildByName(name:string):DisplayObject\n\t{\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tif (this._children[i].name == name)\n\t\t\t\treturn this._children[i];\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the index position of a child DisplayObject instance.\n\t *\n\t * @param child The DisplayObject instance to identify.\n\t * @return The index position of the child display object to identify.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic getChildIndex(child:DisplayObject):number /*int*/\n\t{\n\t\tvar childIndex:number = this._children.indexOf(child);\n\n\t\tif (childIndex == -1)\n\t\t\tthrow new ArgumentError(\"Child parameter is not a child of the caller\");\n\n\t\treturn childIndex;\n\t}\n\n\t/**\n\t * Returns an array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this DisplayObjectContainer\n\t * instance. Any child objects that are inaccessible for security reasons are\n\t * omitted from the returned array. To determine whether this security\n\t * restriction affects the returned array, call the\n\t * areInaccessibleObjectsUnderPoint() method.\n\t *\n\t *

The point parameter is in the coordinate space of the\n\t * Stage, which may differ from the coordinate space of the display object\n\t * container(unless the display object container is the Stage). You can use\n\t * the globalToLocal() and the localToGlobal()\n\t * methods to convert points between these coordinate spaces.

\n\t *\n\t * @param point The point under which to look.\n\t * @return An array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this\n\t * DisplayObjectContainer instance.\n\t */\n\tpublic getObjectsUnderPoint(point:Point):Array\n\t{\n\t\treturn new Array();\n\t}\n\n\t/**\n\t * Removes the specified child DisplayObject instance from the\n\t * child list of the DisplayObjectContainer instance. The parent\n\t * property of the removed child is set to null , and the object\n\t * is garbage collected if no other references to the child exist. The index\n\t * positions of any display objects above the child in the\n\t * DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param child The DisplayObject instance to remove.\n\t * @return The DisplayObject instance that you pass in the child\n\t * parameter.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic removeChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null\");\n\n\t\tthis.removeChildInternal(child);\n\n\t\tchild.iSetParent(null);\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Removes a child DisplayObject from the specified index\n\t * position in the child list of the DisplayObjectContainer. The\n\t * parent property of the removed child is set to\n\t * null, and the object is garbage collected if no other\n\t * references to the child exist. The index positions of any display objects\n\t * above the child in the DisplayObjectContainer are decreased by 1.\n\t *\n\t *

The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.

\n\t *\n\t * @param index The child index of the DisplayObject to remove.\n\t * @return The DisplayObject instance that was removed.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t * @throws SecurityError This child display object belongs to a sandbox to\n\t * which the calling object does not have access. You\n\t * can avoid this situation by having the child movie\n\t * call the Security.allowDomain() method.\n\t */\n\tpublic removeChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\treturn this.removeChild(this._children[index]);\n\t}\n\n\t/**\n\t * Removes all child DisplayObject instances from the child list\n\t * of the DisplayObjectContainer instance. The parent property\n\t * of the removed children is set to null, and the objects are\n\t * garbage collected if no other references to the children exist.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable or\n\t * object is no longer actively referenced or stored somewhere, the garbage\n\t * collector sweeps through and wipes out the memory space it used to occupy\n\t * if no other references to it exist.\n\t *\n\t * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.\n\t * @param endIndex The ending position. A value smaller than 0 throws a RangeError.\n\t * @throws RangeError Throws if the beginIndex or endIndex positions do\n\t * not exist in the child list.\n\t */\n\tpublic removeChildren(beginIndex:number /*int*/ = 0, endIndex:number /*int*/ = 2147483647)\n\t{\n\t\tif (beginIndex < 0)\n\t\t\tthrow new RangeError(\"beginIndex is out of range of the child list\");\n\n\t\tif (endIndex > this._children.length)\n\t\t\tthrow new RangeError(\"endIndex is out of range of the child list\");\n\n\t\tfor(var i:number /*uint*/ = beginIndex; i < endIndex; i++)\n\t\t\tthis.removeChild(this._children[i]);\n\t}\n\n\t/**\n\t * Changes the position of an existing child in the display object container.\n\t * This affects the layering of child objects. For example, the following\n\t * example shows three display objects, labeled a, b, and c, at index\n\t * positions 0, 1, and 2, respectively:\n\t *\n\t *

When you use the setChildIndex() method and specify an\n\t * index position that is already occupied, the only positions that change\n\t * are those in between the display object's former and new position. All\n\t * others will stay the same. If a child is moved to an index LOWER than its\n\t * current index, all children in between will INCREASE by 1 for their index\n\t * reference. If a child is moved to an index HIGHER than its current index,\n\t * all children in between will DECREASE by 1 for their index reference. For\n\t * example, if the display object container in the previous example is named\n\t * container, you can swap the position of the display objects\n\t * labeled a and b by calling the following code:

\n\t *\n\t *

This code results in the following arrangement of objects:

\n\t *\n\t * @param child The child DisplayObject instance for which you want to change\n\t * the index number.\n\t * @param index The resulting index number for the child display\n\t * object.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic setChildIndex(child:DisplayObject, index:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order (front-to-back order) of the two specified child\n\t * objects. All other child objects in the display object container remain in\n\t * the same index positions.\n\t *\n\t * @param child1 The first child object.\n\t * @param child2 The second child object.\n\t * @throws ArgumentError Throws if either child parameter is not a child of\n\t * this object.\n\t */\n\tpublic swapChildren(child1:DisplayObject, child2:DisplayObject)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order(front-to-back order) of the child objects at the two\n\t * specified index positions in the child list. All other child objects in\n\t * the display object container remain in the same index positions.\n\t *\n\t * @param index1 The index position of the first child object.\n\t * @param index2 The index position of the second child object.\n\t * @throws RangeError If either index does not exist in the child list.\n\t */\n\tpublic swapChildrenAt(index1:number /*int*/, index2:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i].pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tsuper._pUpdateScene(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateScene(value);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitMouseEnabled(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitMouseEnabled(this._mouseChildren);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitVisibility(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitVisibility(this._pImplicitVisibility);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\tsuper._pUpdateImplicitPartition(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitPartition(this._pImplicitPartition);\n\t}\n\n\t/**\n\t * @private\n\t *\n\t * @param child\n\t */\n\tprivate removeChildInternal(child:DisplayObject):DisplayObject\n\t{\n\t\tthis._children.splice(this.getChildIndex(child), 1);\n\n\t\treturn child;\n\t}\n}\n\nexport = DisplayObjectContainer;","import AssetLibraryBundle\t\t\t= require(\"awayjs-core/lib/library/AssetLibraryBundle\");\nimport AssetLoader\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoader\");\nimport AssetLoaderContext\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderContext\");\nimport AssetLoaderToken\t\t\t\t= require(\"awayjs-core/lib/library/AssetLoaderToken\");\nimport URLRequest\t\t\t\t\t= require(\"awayjs-core/lib/net/URLRequest\");\nimport AssetEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/AssetEvent\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IOErrorEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/IOErrorEvent\");\nimport LoaderEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/LoaderEvent\");\nimport ParserEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/ParserEvent\");\nimport ParserBase\t\t\t\t\t= require(\"awayjs-core/lib/parsers/ParserBase\");\n\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LoaderInfo\t\t\t\t\t= require(\"awayjs-display/lib/base/LoaderInfo\");\n\n/**\n * The Loader class is used to load SWF files or image(JPG, PNG, or GIF)\n * files. Use the load() method to initiate loading. The loaded\n * display object is added as a child of the Loader object.\n *\n *

Use the URLLoader class to load text or binary data.

\n *\n *

The Loader class overrides the following methods that it inherits,\n * because a Loader object can only have one child display object - the\n * display object that it loads. Calling the following methods throws an\n * exception: addChild(), addChildAt(),\n * removeChild(), removeChildAt(), and\n * setChildIndex(). To remove a loaded display object, you must\n * remove the Loader object from its parent DisplayObjectContainer\n * child array.

\n *\n *

Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes\n * are not used in ActionScript 3.0. The Loader and URLLoader classes replace\n * them.

\n *\n *

When you use the Loader class, consider the Flash Player and Adobe AIR\n * security model:

\n *\n *
    \n *
  • You can load content from any accessible source.
  • \n *
  • Loading is not allowed if the calling SWF file is in a network\n * sandbox and the file to be loaded is local.
  • \n *
  • If the loaded content is a SWF file written with ActionScript 3.0, it\n * cannot be cross-scripted by a SWF file in another security sandbox unless\n * that cross-scripting arrangement was approved through a call to the\n * System.allowDomain() or the\n * System.allowInsecureDomain() method in the loaded content\n * file.
  • \n *
  • If the loaded content is an AVM1 SWF file(written using ActionScript\n * 1.0 or 2.0), it cannot be cross-scripted by an AVM2 SWF file(written using\n * ActionScript 3.0). However, you can communicate between the two SWF files\n * by using the LocalConnection class.
  • \n *
  • If the loaded content is an image, its data cannot be accessed by a\n * SWF file outside of the security sandbox, unless the domain of that SWF\n * file was included in a URL policy file at the origin domain of the\n * image.
  • \n *
  • Movie clips in the local-with-file-system sandbox cannot script movie\n * clips in the local-with-networking sandbox, and the reverse is also\n * prevented.
  • \n *
  • You cannot connect to commonly reserved ports. For a complete list of\n * blocked ports, see \"Restricting Networking APIs\" in the ActionScript 3.0\n * Developer's Guide.
  • \n *
\n *\n *

However, in AIR, content in the application security\n * sandbox(content installed with the AIR application) are not restricted by\n * these security limitations.

\n *\n *

For more information related to security, see the Flash Player Developer\n * Center Topic: Security.

\n *\n *

When loading a SWF file from an untrusted source(such as a domain other\n * than that of the Loader object's root SWF file), you may want to define a\n * mask for the Loader object, to prevent the loaded content(which is a child\n * of the Loader object) from drawing to portions of the Stage outside of that\n * mask, as shown in the following code:

\n */\nclass Loader extends DisplayObjectContainer\n{\n\t/**\n\t * Dispatched when any asset finishes parsing. Also see specific events for each\n\t * individual asset type (meshes, materials et c.)\n\t *\n\t * @eventType AssetEvent\n\t */\n\t//[Event(name=\"assetComplete\", type=\"AssetEvent\")]\n\n\n\t/**\n\t * Dispatched when a full resource (including dependencies) finishes loading.\n\t *\n\t * @eventType LoaderEvent\n\t */\n\t//[Event(name=\"resourceComplete\", type=\"LoaderEvent\")]\n\n\tprivate _loadingSessions:Array;\n\tprivate _useAssetLib:boolean;\n\tprivate _assetLibId:string;\n\tprivate _onResourceCompleteDelegate:Function;\n\tprivate _onAssetCompleteDelegate:Function;\n\n\tprivate _content:DisplayObject;\n\tprivate _contentLoaderInfo:LoaderInfo;\n\n\t/**\n\t * Contains the root display object of the SWF file or image(JPG, PNG, or\n\t * GIF) file that was loaded by using the load() or\n\t * loadBytes() methods.\n\t *\n\t * @throws SecurityError The loaded SWF file or image file belongs to a\n\t * security sandbox to which you do not have access.\n\t * For a loaded SWF file, you can avoid this situation\n\t * by having the file call the\n\t * Security.allowDomain() method or by\n\t * having the loading file specify a\n\t * loaderContext parameter with its\n\t * securityDomain property set to\n\t * SecurityDomain.currentDomain when you\n\t * call the load() or\n\t * loadBytes() method.\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * Returns a LoaderInfo object corresponding to the object being loaded.\n\t * LoaderInfo objects are shared between the Loader object and the loaded\n\t * content object. The LoaderInfo object supplies loading progress\n\t * information and statistics about the loaded file.\n\t *\n\t *

Events related to the load are dispatched by the LoaderInfo object\n\t * referenced by the contentLoaderInfo property of the Loader\n\t * object. The contentLoaderInfo property is set to a valid\n\t * LoaderInfo object, even before the content is loaded, so that you can add\n\t * event listeners to the object prior to the load.

\n\t *\n\t *

To detect uncaught errors that happen in a loaded SWF, use the\n\t * Loader.uncaughtErrorEvents property, not the\n\t * Loader.contentLoaderInfo.uncaughtErrorEvents property.

\n\t */\n\tpublic get contentLoaderInfo():LoaderInfo\n\t{\n\t\treturn this._contentLoaderInfo;\n\t}\n\n\t/**\n\t * Creates a Loader object that you can use to load files, such as SWF, JPEG,\n\t * GIF, or PNG files. Call the load() method to load the asset\n\t * as a child of the Loader instance. You can then add the Loader object to\n\t * the display list(for instance, by using the addChild()\n\t * method of a DisplayObjectContainer instance). The asset appears on the\n\t * Stage as it loads.\n\t *\n\t *

You can also use a Loader instance \"offlist,\" that is without adding it\n\t * to a display object container on the display list. In this mode, the\n\t * Loader instance might be used to load a SWF file that contains additional\n\t * modules of an application.

\n\t *\n\t *

To detect when the SWF file is finished loading, you can use the events\n\t * of the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object. At that\n\t * point, the code in the module SWF file can be executed to initialize and\n\t * start the module. In the offlist mode, a Loader instance might also be\n\t * used to load a SWF file that contains components or media assets. Again,\n\t * you can use the LoaderInfo object event notifications to detect when the\n\t * components are finished loading. At that point, the application can start\n\t * using the components and media assets in the library of the SWF file by\n\t * instantiating the ActionScript 3.0 classes that represent those components\n\t * and assets.

\n\t *\n\t *

To determine the status of a Loader object, monitor the following\n\t * events that the LoaderInfo object associated with the\n\t * contentLoaderInfo property of the Loader object:

\n\t *\n\t *
    \n\t *
  • The open event is dispatched when loading begins.
  • \n\t *
  • The ioError or securityError event is\n\t * dispatched if the file cannot be loaded or if an error occured during the\n\t * load process.
  • \n\t *
  • The progress event fires continuously while the file is\n\t * being loaded.
  • \n\t *
  • The complete event is dispatched when a file completes\n\t * downloading, but before the loaded movie clip's methods and properties are\n\t * available.
  • \n\t *
  • The init event is dispatched after the properties and\n\t * methods of the loaded SWF file are accessible, so you can begin\n\t * manipulating the loaded SWF file. This event is dispatched before the\n\t * complete handler. In streaming SWF files, the\n\t * init event can occur significantly earlier than the\n\t * complete event. For most purposes, use the init\n\t * handler.
  • \n\t *
\n\t */\n\tconstructor(useAssetLibrary:boolean = true, assetLibraryId:string = null)\n\t{\n\t\tsuper();\n\n\t\tthis._loadingSessions = new Array();\n\t\tthis._useAssetLib = useAssetLibrary;\n\t\tthis._assetLibId = assetLibraryId;\n\n\t\tthis._onResourceCompleteDelegate = (event:LoaderEvent) => this.onResourceComplete(event);\n\t\tthis._onAssetCompleteDelegate = (event:AssetEvent) => this.onAssetComplete(event);\n\t}\n\n\t/**\n\t * Cancels a load() method operation that is currently in\n\t * progress for the Loader instance.\n\t *\n\t */\n\tpublic close()\n\t{\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\tlib.stopAllLoadingSessions();\n\t\t\tthis._loadingSessions = null;\n\t\t\treturn\n\t\t}\n\t\tvar i:number /*int*/;\n\t\tvar length:number /*int*/ = this._loadingSessions.length;\n\t\tfor (i = 0; i < length; i++) {\n\t\t\tthis.removeListeners(this._loadingSessions[i]);\n\t\t\tthis._loadingSessions[i].stop();\n\t\t\tthis._loadingSessions[i] = null;\n\t\t}\n\t\tthis._loadingSessions = null;\n\t}\n\n\t/**\n\t * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an\n\t * object that is a child of this Loader object. If you load an animated GIF\n\t * file, only the first frame is displayed. As the Loader object can contain\n\t * only a single child, issuing a subsequent load() request\n\t * terminates the previous request, if still pending, and commences a new\n\t * load.\n\t *\n\t *

Note: In AIR 1.5 and Flash Player 10, the maximum size for a\n\t * loaded image is 8,191 pixels in width or height, and the total number of\n\t * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191\n\t * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and\n\t * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height\n\t * and 2,880 pixels in width.

\n\t *\n\t *

A SWF file or image loaded into a Loader object inherits the position,\n\t * rotation, and scale properties of the parent display objects of the Loader\n\t * object.

\n\t *\n\t *

Use the unload() method to remove movies or images loaded\n\t * with this method, or to cancel a load operation that is in progress.

\n\t *\n\t *

You can prevent a SWF file from using this method by setting the\n\t * allowNetworking parameter of the the object and\n\t * embed tags in the HTML page that contains the SWF\n\t * content.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t *

In Flash Player 10 and later, if you use a multipart Content-Type(for\n\t * example \"multipart/form-data\") that contains an upload(indicated by a\n\t * \"filename\" parameter in a \"content-disposition\" header within the POST\n\t * body), the POST operation is subject to the security rules applied to\n\t * uploads:

\n\t *\n\t *
    \n\t *
  • The POST operation must be performed in response to a user-initiated\n\t * action, such as a mouse click or key press.
  • \n\t *
  • If the POST operation is cross-domain(the POST target is not on the\n\t * same server as the SWF file that is sending the POST request), the target\n\t * server must provide a URL policy file that permits cross-domain\n\t * access.
  • \n\t *
\n\t *\n\t *

Also, for any multipart Content-Type, the syntax must be valid\n\t * (according to the RFC2046 standard). If the syntax appears to be invalid,\n\t * the POST operation is subject to the security rules applied to\n\t * uploads.

\n\t *\n\t *

For more information related to security, see the Flash Player\n\t * Developer Center Topic: Security.

\n\t *\n\t * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG\n\t * file to be loaded. A relative path must be relative to the\n\t * main SWF file. Absolute URLs must include the protocol\n\t * reference, such as http:// or file:///. Filenames cannot\n\t * include disk drive specifications.\n\t * @param context A LoaderContext object, which has properties that define\n\t * the following:\n\t *
    \n\t *
  • Whether or not to check for the existence of a policy\n\t * file upon loading the object
  • \n\t *
  • The ApplicationDomain for the loaded object
  • \n\t *
  • The SecurityDomain for the loaded object
  • \n\t *
  • The ImageDecodingPolicy for the loaded image\n\t * object
  • \n\t *
\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the loaded content remains in\n\t * its own security domain.

\n\t *\n\t *

For complete details, see the description of the\n\t * properties in the LoaderContext\n\t * class.

\n\t * @param ns An optional namespace string under which the file is to be\n\t * loaded, allowing the differentiation of two resources with\n\t * identical assets.\n\t * @param parser An optional parser object for translating the loaded data\n\t * into a usable resource. If not provided, AssetLoader will\n\t * attempt to auto-detect the file type.\n\t * @throws IOError The digest property of the\n\t * request object is not\n\t * null. You should only set the\n\t * digest property of a URLRequest\n\t * object when calling the\n\t * URLLoader.load() method when\n\t * loading a SWZ file(an Adobe platform\n\t * component).\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError The value of\n\t * LoaderContext.securityDomain\n\t * must be either null or\n\t * SecurityDomain.currentDomain.\n\t * This reflects the fact that you can only\n\t * place the loaded media in its natural\n\t * security sandbox or your own(the latter\n\t * requires a policy file).\n\t * @throws SecurityError Local SWF files may not set\n\t * LoaderContext.securityDomain to anything\n\t * other than null. It is not\n\t * permitted to import non-local media into a\n\t * local sandbox, or to place other local media\n\t * in anything other than its natural sandbox.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @throws SecurityError If the applicationDomain or\n\t * securityDomain properties of\n\t * the context parameter are from\n\t * a disallowed domain.\n\t * @throws SecurityError If a local SWF file is attempting to use the\n\t * securityDomain property of the\n\t * context parameter.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the file has completed loading. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event httpStatus Dispatched by the contentLoaderInfo\n\t * object when a network request is made over HTTP and\n\t * Flash Player can detect the HTTP status code.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * SWF file are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when an input or output error occurs that\n\t * causes a load operation to fail.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the loading operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is received while load operation\n\t * progresses.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if a SWF file in the local-with-filesystem\n\t * sandbox attempts to load content in the\n\t * local-with-networking sandbox, or vice versa.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic load(request:URLRequest, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.load(request, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.load(request, context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Loads from binary data stored in a ByteArray object.\n\t *\n\t *

The loadBytes() method is asynchronous. You must wait for\n\t * the \"init\" event before accessing the properties of a loaded object.

\n\t *\n\t *

When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.

\n\t *\n\t * @param bytes A ByteArray object. The contents of the ByteArray can be\n\t * any of the file formats supported by the Loader class: SWF,\n\t * GIF, JPEG, or PNG.\n\t * @param context A LoaderContext object. Only the\n\t * applicationDomain property of the\n\t * LoaderContext object applies; the\n\t * checkPolicyFile and\n\t * securityDomain properties of the LoaderContext\n\t * object do not apply.\n\t *\n\t *

If the context parameter is not specified\n\t * or refers to a null object, the content is loaded into the\n\t * current security domain - a process referred to as \"import\n\t * loading\" in Flash Player security documentation.\n\t * Specifically, if the loading SWF file trusts the remote SWF\n\t * by incorporating the remote SWF into its code, then the\n\t * loading SWF can import it directly into its own security\n\t * domain.

\n\t *\n\t *

For more information related to security, see the Flash\n\t * Player Developer Center Topic: Security.

\n\t * @throws ArgumentError If the length property of the\n\t * ByteArray object is not greater than 0.\n\t * @throws IllegalOperationError If the checkPolicyFile or\n\t * securityDomain property of the\n\t * context parameter are non-null.\n\t * @throws IllegalOperationError If the requestedContentParent\n\t * property of the context\n\t * parameter is a Loader.\n\t * @throws IllegalOperationError If the LoaderContext.parameters\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError If the provided\n\t * applicationDomain property of\n\t * the context property is from a\n\t * disallowed domain.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @event asyncError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie or if the\n\t * addChild() call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo\n\t * object when the operation is complete. The\n\t * complete event is always dispatched\n\t * after the init event.\n\t * @event init Dispatched by the contentLoaderInfo\n\t * object when the properties and methods of the loaded\n\t * data are accessible. The init event\n\t * always precedes the complete event.\n\t * @event ioError Dispatched by the contentLoaderInfo\n\t * object when the runtime cannot parse the data in the\n\t * byte array.\n\t * @event open Dispatched by the contentLoaderInfo\n\t * object when the operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo\n\t * object as data is transfered in memory.\n\t * @event securityError Dispatched by the contentLoaderInfo\n\t * object if the\n\t * LoaderContext.requestedContentParent\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo\n\t * object when a loaded object is removed.\n\t */\n\tpublic loadData(data:any, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.loadData(data, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.loadData(data, '', context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Removes a child of this Loader object that was loaded by using the\n\t * load() method. The property of the associated\n\t * LoaderInfo object is reset to null. The child is not\n\t * necessarily destroyed because other objects might have references to it;\n\t * however, it is no longer a child of the Loader object.\n\t *\n\t *

As a best practice, before you unload a child SWF file, you should\n\t * explicitly close any streams in the child SWF file's objects, such as\n\t * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,\n\t * audio in the child SWF file might continue to play, even though the child\n\t * SWF file was unloaded. To close streams in the child SWF file, add an\n\t * event listener to the child that listens for the unload\n\t * event. When the parent calls Loader.unload(), the\n\t * unload event is dispatched to the child. The following code\n\t * shows how you might do this:

\n\t *
 public closeAllStreams(evt:Event) {\n\t * myNetStream.close(); mySound.close(); myNetConnection.close();\n\t * myLocalConnection.close(); }\n\t * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,\n\t * closeAllStreams);
\n\t *\n\t */\n\tpublic unload()\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Enables a specific parser.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClass The parser class to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParser(parserClass:Object)\n\t{\n\t\tAssetLoader.enableParser(parserClass);\n\t}\n\n\t/**\n\t * Enables a list of parsers.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClasses A Vector of parser classes to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParsers(parserClasses:Array)\n\t{\n\t\tAssetLoader.enableParsers(parserClasses);\n\t}\n\n\n\tprivate removeListeners(dispatcher:EventDispatcher)\n\t{\n\t\tdispatcher.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\tdispatcher.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\t}\n\n\tprivate onAssetComplete(event:AssetEvent)\n\t{\n\t\tthis.dispatchEvent(event);\n\t}\n\n\t/**\n\t * Called when an error occurs during loading\n\t */\n\tprivate onLoadError(event:LoaderEvent):boolean\n\t{\n\t\tif (this.hasEventListener(IOErrorEvent.IO_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when a an error occurs during parsing\n\t */\n\tprivate onParseError(event:ParserEvent):boolean\n\t{\n\t\tif (this.hasEventListener(ParserEvent.PARSE_ERROR)) {\n\t\t\tthis.dispatchEvent(event);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Called when the resource and all of its dependencies was retrieved.\n\t */\n\tprivate onResourceComplete(event:LoaderEvent)\n\t{\n\t\tthis._content = event.content;\n\n\t\tif (this._content)\n\t\t\tthis.addChild(this._content);\n\n\t\tthis.dispatchEvent(event);\n\t}\n}\n\nexport = Loader;","import EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport SceneEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport Partition\t\t\t\t\t= require(\"awayjs-display/lib/partition/Partition\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\nclass Scene extends EventDispatcher\n{\n\tprivate _expandedPartitions:Array = new Array();\n\tprivate _partitions:Array = new Array();\n\n\tpublic _iSceneGraphRoot:DisplayObjectContainer;\n\tpublic _iCollectionMark = 0;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iSceneGraphRoot = new DisplayObjectContainer();\n\n\t\tthis._iSceneGraphRoot._iSetScene(this);\n\t\tthis._iSceneGraphRoot._iIsRoot = true;\n\t\tthis._iSceneGraphRoot.partition = new Partition(new NodeBase());\n\t}\n\n\tpublic traversePartitions(traverser:ICollector)\n\t{\n\t\tvar i:number = 0;\n\t\tvar len:number = this._partitions.length;\n\n\t\ttraverser.scene = this;\n\n\t\twhile (i < len) {\n\t\t\tthis._iCollectionMark++;\n\t\t\tthis._partitions[i++].traverse(traverser);\n\t\t}\n\t}\n\n\tpublic get partition():Partition\n\t{\n\t\treturn this._iSceneGraphRoot.partition;\n\t}\n\n\tpublic set partition(value:Partition)\n\t{\n\t\tthis._iSceneGraphRoot.partition = value;\n\n\t\tthis.dispatchEvent(new SceneEvent(SceneEvent.PARTITION_CHANGED, this._iSceneGraphRoot));\n\t}\n\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._iSceneGraphRoot.contains(child);\n\t}\n\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.addChild(child);\n\t}\n\n\tpublic removeChild(child:DisplayObject)\n\t{\n\t\tthis._iSceneGraphRoot.removeChild(child);\n\t}\n\n\tpublic removeChildAt(index:number)\n\t{\n\t\tthis._iSceneGraphRoot.removeChildAt(index);\n\t}\n\n\n\tpublic getChildAt(index:number):DisplayObject\n\t{\n\t\treturn this._iSceneGraphRoot.getChildAt(index);\n\t}\n\n\tpublic get numChildren():number\n\t{\n\t\treturn this._iSceneGraphRoot.numChildren;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iRegisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iMarkForUpdate(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iRegisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.push(partition);\n\n\t\t//ensure duplicates are not found in partitions array\n\t\tif (this._partitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.push(partition);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterEntity(displayObject:DisplayObject)\n\t{\n\t\tif (displayObject.partition)\n\t\t\tthis.iUnregisterPartition(displayObject.partition);\n\n\t\tif (displayObject.isEntity)\n\t\t\tdisplayObject._iAssignedPartition.iRemoveEntity(displayObject);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic iUnregisterPartition(partition:Partition)\n\t{\n\t\tthis._expandedPartitions.splice(this._expandedPartitions.indexOf(partition), 1);\n\n\t\t//if no more partition references found, remove from partitions array\n\t\tif (this._expandedPartitions.indexOf(partition) == -1)\n\t\t\tthis._partitions.splice(this._partitions.indexOf(partition), 1);\n\t}\n}\n\nexport = Scene;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport getTimer\t\t\t\t\t\t= require(\"awayjs-core/lib/utils/getTimer\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IPicker\t\t\t\t\t\t= require(\"awayjs-display/lib/pick/IPicker\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport RaycastPicker\t\t\t\t= require(\"awayjs-display/lib/pick/RaycastPicker\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport CSSRendererBase\t\t\t\t= require(\"awayjs-display/lib/render/CSSRendererBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport CameraEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport SceneEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/SceneEvent\");\nimport RendererEvent\t\t\t\t= require(\"awayjs-display/lib/events/RendererEvent\");\nimport MouseManager\t\t\t\t\t= require(\"awayjs-display/lib/managers/MouseManager\");\n\nclass View\n{\n\n\t/*\n\t *************************************************************************************************************************\n\t * Development Notes\n\t *************************************************************************************************************************\n\t *\n\t * ShareContext - this is not being used at the moment integration with other frameworks is not yet implemented or tested\n\t * and ( _localPos / _globalPos ) position of viewport are the same for the moment\n\t *\n\t * Background\n\t * - this is currently not being included in our tests and is currently disabled\n\t *\n\t **************************************************************************************************************************\n\t */\n\n\t// Protected\n\tpublic _pScene:Scene;\n\tpublic _pCamera:Camera;\n\tpublic _pEntityCollector:ICollector;\n\tpublic _pRenderer:IRenderer;\n\n\t// Private\n\tprivate _aspectRatio:number;\n\tprivate _width:number = 0;\n\tprivate _height:number = 0;\n\n\tprivate _time:number = 0;\n\tprivate _deltaTime:number = 0;\n\tprivate _backgroundColor:number = 0x000000;\n\tprivate _backgroundAlpha:number = 1;\n\n\tprivate _viewportDirty:boolean = true;\n\tprivate _scissorDirty:boolean = true;\n\n\tprivate _onScenePartitionChangedDelegate:(event:SceneEvent) => void;\n\tprivate _onProjectionChangedDelegate:(event:CameraEvent) => void;\n\tprivate _onViewportUpdatedDelegate:(event:RendererEvent) => void;\n\tprivate _onScissorUpdatedDelegate:(event:RendererEvent) => void;\n\tprivate _mouseManager:MouseManager;\n\tprivate _mousePicker:IPicker = new RaycastPicker();\n\n\tprivate _htmlElement:HTMLDivElement;\n\tprivate _shareContext:boolean;\n\tpublic _pMouseX:number;\n\tpublic _pMouseY:number;\n\n\t/*\n\t ***********************************************************************\n\t * Disabled / Not yet implemented\n\t ***********************************************************************\n\t *\n\t * private _background:away.textures.Texture2DBase;\n\t *\n\t * public _pTouch3DManager:away.managers.Touch3DManager;\n\t *\n\t */\n\tconstructor(renderer:IRenderer, scene:Scene = null, camera:Camera = null)\n\t{\n\t\tthis._onScenePartitionChangedDelegate = (event:SceneEvent) => this.onScenePartitionChanged(event);\n\t\tthis._onProjectionChangedDelegate = (event:CameraEvent) => this.onProjectionChanged(event);\n\t\tthis._onViewportUpdatedDelegate = (event:RendererEvent) => this.onViewportUpdated(event);\n\t\tthis._onScissorUpdatedDelegate = (event:RendererEvent) => this.onScissorUpdated(event);\n\n\t\tthis.scene = scene || new Scene();\n\t\tthis.camera = camera || new Camera();\n\t\tthis.renderer = renderer;\n\n\t\t//make sure document border is zero\n\t\tdocument.body.style.margin = \"0px\";\n\n\t\tthis._htmlElement = document.createElement(\"div\");\n\t\tthis._htmlElement.style.position = \"absolute\";\n\n\t\tdocument.body.appendChild(this._htmlElement);\n\n\t\tthis._mouseManager = MouseManager.getInstance();\n\t\tthis._mouseManager.registerView(this);\n\n//\t\t\tif (this._shareContext)\n//\t\t\t\tthis._mouse3DManager.addViewLayer(this);\n\t}\n\n\t/**\n\t *\n\t * @param e\n\t */\n\tprivate onScenePartitionChanged(event:SceneEvent)\n\t{\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.partition = this.scene.partition;\n\t}\n\n\tpublic layeredView:boolean; //TODO: something to enable this correctly\n\n\tpublic get mouseX():number\n\t{\n\t\treturn this._pMouseX;\n\t}\n\n\tpublic get mouseY():number\n\t{\n\t\treturn this._pMouseY;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get htmlElement():HTMLDivElement\n\t{\n\t\treturn this._htmlElement;\n\t}\n\t/**\n\t *\n\t */\n\tpublic get renderer():IRenderer\n\t{\n\t\treturn this._pRenderer;\n\t}\n\n\tpublic set renderer(value:IRenderer)\n\t{\n\t\tif (this._pRenderer == value)\n\t\t\treturn;\n\n\t\tif (this._pRenderer) {\n\t\t\tthis._pRenderer.dispose();\n\t\t\tthis._pRenderer.removeEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\n\t\t\tthis._pRenderer.removeEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\n\t\t}\n\n\t\tthis._pRenderer = value;\n\n\t\tthis._pRenderer.addEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate);\n\t\tthis._pRenderer.addEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate);\n\n\t\t//reset entity collector\n\t\tthis._pEntityCollector = this._pRenderer._iCreateEntityCollector();\n\n\t\tif (this._pCamera)\n\t\t\tthis._pEntityCollector.camera = this._pCamera;\n\n\t\t//reset back buffer\n\t\tthis._pRenderer._iBackgroundR = ((this._backgroundColor >> 16) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundG = ((this._backgroundColor >> 8) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundB = (this._backgroundColor & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundAlpha = this._backgroundAlpha;\n\t\tthis._pRenderer.width = this._width;\n\t\tthis._pRenderer.height = this._height;\n\t\tthis._pRenderer.shareContext = this._shareContext;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get shareContext():boolean\n\t{\n\t\treturn this._shareContext;\n\t}\n\n\tpublic set shareContext(value:boolean)\n\t{\n\t\tif (this._shareContext == value)\n\t\t\treturn;\n\n\t\tthis._shareContext = value;\n\n\t\tif (this._pRenderer)\n\t\t\tthis._pRenderer.shareContext = this._shareContext;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get backgroundColor():number\n\t{\n\t\treturn this._backgroundColor;\n\t}\n\n\tpublic set backgroundColor(value:number)\n\t{\n\t\tif (this._backgroundColor == value)\n\t\t\treturn;\n\n\t\tthis._backgroundColor = value;\n\n\t\tthis._pRenderer._iBackgroundR = ((value >> 16) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundG = ((value >> 8) & 0xff)/0xff;\n\t\tthis._pRenderer._iBackgroundB = (value & 0xff)/0xff;\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get backgroundAlpha():number\n\t{\n\t\treturn this._backgroundAlpha;\n\t}\n\n\t/**\n\t *\n\t * @param value\n\t */\n\tpublic set backgroundAlpha(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1;\n\t\telse if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tif (this._backgroundAlpha == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer._iBackgroundAlpha = this._backgroundAlpha = value;\n\t}\n\n\t/**\n\t *\n\t * @returns {Camera3D}\n\t */\n\tpublic get camera():Camera\n\t{\n\t\treturn this._pCamera;\n\t}\n\n\t/**\n\t * Set camera that's used to render the scene for this viewport\n\t */\n\tpublic set camera(value:Camera)\n\t{\n\t\tif (this._pCamera == value)\n\t\t\treturn;\n\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.removeEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\n\n\t\tthis._pCamera = value;\n\n\t\tif (this._pEntityCollector)\n\t\t\tthis._pEntityCollector.camera = this._pCamera;\n\n\t\tif (this._pScene)\n\t\t\tthis._pCamera.partition = this._pScene.partition;\n\n\t\tthis._pCamera.addEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate);\n\t\tthis._scissorDirty = true;\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t * @returns {away.containers.Scene3D}\n\t */\n\tpublic get scene():Scene\n\t{\n\t\treturn this._pScene;\n\t}\n\n\t/**\n\t * Set the scene that's used to render for this viewport\n\t */\n\tpublic set scene(value:Scene)\n\t{\n\t\tif (this._pScene == value)\n\t\t\treturn;\n\n\t\tif (this._pScene)\n\t\t\tthis._pScene.removeEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate);\n\n\t\tthis._pScene = value;\n\n\t\tthis._pScene.addEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate);\n\n\t\tif (this._pCamera)\n\t\t\tthis._pCamera.partition = this._pScene.partition;\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get deltaTime():number\n\t{\n\t\treturn this._deltaTime;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tif (this._width == value)\n\t\t\treturn;\n\n\t\tthis._width = value;\n\t\tthis._aspectRatio = this._width/this._height;\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\t\tthis._pRenderer.width = value;\n\t\tthis._htmlElement.style.width = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tif (this._height == value)\n\t\t\treturn;\n\n\t\tthis._height = value;\n\t\tthis._aspectRatio = this._width/this._height;\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\t\tthis._pRenderer.height = value;\n\t\tthis._htmlElement.style.height = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get mousePicker():IPicker\n\t{\n\t\treturn this._mousePicker;\n\t}\n\n\tpublic set mousePicker(value:IPicker)\n\t{\n\t\tif (this._mousePicker == value)\n\t\t\treturn;\n\n\t\tif (value == null)\n\t\t\tthis._mousePicker = new RaycastPicker();\n\t\telse\n\t\t\tthis._mousePicker = value;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._pRenderer.x;\n\t}\n\n\tpublic set x(value:number)\n\t{\n\t\tif (this._pRenderer.x == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer.x == value;\n\t\tthis._htmlElement.style.left = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._pRenderer.y;\n\t}\n\n\tpublic set y(value:number)\n\t{\n\t\tif (this._pRenderer.y == value)\n\t\t\treturn;\n\n\t\tthis._pRenderer.y == value;\n\t\tthis._htmlElement.style.top = value + \"px\";\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get visible():boolean\n\t{\n\t\treturn (this._htmlElement.style.visibility == \"visible\");\n\t}\n\n\tpublic set visible(value:boolean)\n\t{\n\t\tthis._htmlElement.style.visibility = value? \"visible\" : \"hidden\";\n\t\t//TODO transfer visible property to associated context (if one exists)\n\t}\n\n\t/**\n\t *\n\t * @returns {number}\n\t */\n\tpublic get renderedFacesCount():number\n\t{\n\t\treturn 0; //TODO\n\t\t//return this._pEntityCollector._pNumTriangles;//numTriangles;\n\t}\n\n\t/**\n\t * Renders the view.\n\t */\n\tpublic render()\n\t{\n\t\tthis.pUpdateTime();\n\n\t\t//update view and size data\n\t\tthis._pCamera.projection._iAspectRatio = this._aspectRatio;\n\n\t\tif (this._scissorDirty) {\n\t\t\tthis._scissorDirty = false;\n\t\t\tthis._pCamera.projection._iUpdateScissorRect(this._pRenderer.scissorRect.x, this._pRenderer.scissorRect.y, this._pRenderer.scissorRect.width, this._pRenderer.scissorRect.height);\n\t\t}\n\n\t\tif (this._viewportDirty) {\n\t\t\tthis._viewportDirty = false;\n\t\t\tthis._pCamera.projection._iUpdateViewport(this._pRenderer.viewPort.x, this._pRenderer.viewPort.y, this._pRenderer.viewPort.width, this._pRenderer.viewPort.height);\n\t\t}\n\n\t\t// update picking\n\t\tif (!this._shareContext) {\n\t\t\tif (this.forceMouseMove && this._htmlElement == this._mouseManager._iActiveDiv && !this._mouseManager._iUpdateDirty)\n\t\t\t\tthis._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\n\t\t\tthis._mouseManager.fireMouseEvents(this.forceMouseMove);\n\t\t\t//_touch3DManager.fireTouchEvents();\n\t\t}\n\t\t//_touch3DManager.updateCollider();\n\n\t\t//clear entity collector ready for collection\n\t\tthis._pEntityCollector.clear();\n\n\t\t// collect stuff to render\n\t\tthis._pScene.traversePartitions(this._pEntityCollector);\n\n\t\t//render the contents of the entity collector\n\t\tthis._pRenderer.render(this._pEntityCollector);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateTime():void\n\t{\n\t\tvar time:number = getTimer();\n\n\t\tif (this._time == 0)\n\t\t\tthis._time = time;\n\n\t\tthis._deltaTime = time - this._time;\n\t\tthis._time = time;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pRenderer.dispose();\n\n\t\t// TODO: imeplement mouseManager / touch3DManager\n\t\tthis._mouseManager.unregisterView(this);\n\n\t\t//this._touch3DManager.disableTouchListeners(this);\n\t\t//this._touch3DManager.dispose();\n\n\t\tthis._mouseManager = null;\n\t\t//this._touch3DManager = null;\n\n\t\tthis._pRenderer = null;\n\t\tthis._pEntityCollector = null;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get iEntityCollector():ICollector\n\t{\n\t\treturn this._pEntityCollector;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onProjectionChanged(event:CameraEvent)\n\t{\n\t\tthis._scissorDirty = true;\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onViewportUpdated(event:RendererEvent)\n\t{\n\t\tthis._viewportDirty = true;\n\t}\n\n\t/**\n\t *\n\t */\n\tprivate onScissorUpdated(event:RendererEvent)\n\t{\n\t\tthis._scissorDirty = true;\n\t}\n\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\tvar v:Vector3D = this._pCamera.project(point3d);\n\t\tv.x = v.x*this._pRenderer.viewPort.width/2 + this._width*this._pCamera.projection.originX;\n\t\tv.y = v.y*this._pRenderer.viewPort.height/2 + this._height*this._pCamera.projection.originY;\n\n\t\treturn v;\n\t}\n\n\tpublic unproject(sX:number, sY:number, sZ:number):Vector3D\n\t{\n\t\treturn this._pCamera.unproject(2*(sX - this._width*this._pCamera.projection.originX)/this._pRenderer.viewPort.width, 2*(sY - this._height*this._pCamera.projection.originY)/this._pRenderer.viewPort.height, sZ);\n\n\t}\n\n\tpublic getRay(sX:number, sY:number, sZ:number):Vector3D\n\t{\n\t\treturn this._pCamera.getRay((sX*2 - this._width)/this._width, (sY*2 - this._height)/this._height, sZ);\n\t}\n\n\t/* TODO: implement Touch3DManager\n\t public get touchPicker():IPicker\n\t {\n\t return this._touch3DManager.touchPicker;\n\t }\n\t */\n\t/* TODO: implement Touch3DManager\n\t public set touchPicker( value:IPicker)\n\t {\n\t this._touch3DManager.touchPicker = value;\n\t }\n\t */\n\n\tpublic forceMouseMove:boolean;\n\n\t/*TODO: implement Background\n\t public get background():away.textures.Texture2DBase\n\t {\n\t return this._background;\n\t }\n\t */\n\t/*TODO: implement Background\n\t public set background( value:away.textures.Texture2DBase )\n\t {\n\t this._background = value;\n\t this._renderer.background = _background;\n\t }\n\t */\n\n\t// TODO: required dependency stageGL\n\tpublic updateCollider()\n\t{\n\t\tif (!this._shareContext) {\n\t\t\tif (this._htmlElement == this._mouseManager._iActiveDiv)\n\t\t\t\tthis._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\t\t} else {\n\t\t\tvar collidingObject:PickingCollisionVO = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this);\n\n\t\t\tif (this.layeredView || this._mouseManager._iCollidingObject == null || collidingObject.rayEntryDistance < this._mouseManager._iCollidingObject.rayEntryDistance)\n\t\t\t\tthis._mouseManager._iCollidingObject = collidingObject;\n\t\t}\n\t}\n}\n\nexport = View;","import AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass ControllerBase\n{\n\n\tpublic _pAutoUpdate:boolean = true;\n\tpublic _pTargetObject:DisplayObject;\n\n\tconstructor(targetObject:DisplayObject = null)\n\t{\n\t\tthis.targetObject = targetObject;\n\t}\n\n\tpublic pNotifyUpdate()\n\t{\n\t\tif (this._pTargetObject && this._pTargetObject._iAssignedPartition && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iAssignedPartition.iMarkForUpdate(this._pTargetObject);\n\t\t}\n\t}\n\n\tpublic get targetObject():DisplayObject\n\t{\n\t\treturn this._pTargetObject;\n\t}\n\n\tpublic set targetObject(val:DisplayObject)\n\t{\n\t\tif (this._pTargetObject == val) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._pTargetObject && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iController = null;\n\t\t}\n\t\tthis._pTargetObject = val;\n\n\t\tif (this._pTargetObject && this._pAutoUpdate) {\n\t\t\tthis._pTargetObject._iController = this;\n\t\t}\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic get autoUpdate():boolean\n\t{\n\t\treturn this._pAutoUpdate;\n\t}\n\n\tpublic set autoUpdate(val:boolean)\n\t{\n\t\tif (this._pAutoUpdate == val) {\n\t\t\treturn;\n\t\t}\n\t\tthis._pAutoUpdate = val;\n\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pTargetObject) {\n\t\t\t\tthis._pTargetObject._iController = this;\n\t\t\t} else {\n\t\t\t\tthis._pTargetObject._iController = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = ControllerBase;","import MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\n\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * Extended camera used to hover round a specified target object.\n *\n * @see away3d.containers.View3D\n */\nclass FirstPersonController extends ControllerBase\n{\n\tpublic _iCurrentPanAngle:number = 0;\n\tpublic _iCurrentTiltAngle:number = 90;\n\n\tprivate _panAngle:number = 0;\n\tprivate _tiltAngle:number = 90;\n\tprivate _minTiltAngle:number = -90;\n\tprivate _maxTiltAngle:number = 90;\n\tprivate _steps:number = 8;\n\tprivate _walkIncrement:number = 0;\n\tprivate _strafeIncrement:number = 0;\n\tprivate _wrapPanAngle:boolean = false;\n\n\tpublic fly:boolean = false;\n\n\t/**\n\t * Fractional step taken each time the hover() method is called. Defaults to 8.\n\t *\n\t * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t */\n\tpublic get steps():number\n\t{\n\t\treturn this._steps;\n\t}\n\n\tpublic set steps(val:number)\n\t{\n\t\tval = (val < 1)? 1 : val;\n\n\t\tif (this._steps == val)\n\t\t\treturn;\n\n\t\tthis._steps = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Rotation of the camera in degrees around the y axis. Defaults to 0.\n\t */\n\tpublic get panAngle():number\n\t{\n\t\treturn this._panAngle;\n\t}\n\n\tpublic set panAngle(val:number)\n\t{\n\t\tif (this._panAngle == val)\n\t\t\treturn;\n\n\t\tthis._panAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Elevation angle of the camera in degrees. Defaults to 90.\n\t */\n\tpublic get tiltAngle():number\n\t{\n\t\treturn this._tiltAngle;\n\t}\n\n\tpublic set tiltAngle(val:number)\n\t{\n\t\tval = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\n\n\t\tif (this._tiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._tiltAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Minimum bounds for the tiltAngle. Defaults to -90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get minTiltAngle():number\n\t{\n\t\treturn this._minTiltAngle;\n\t}\n\n\tpublic set minTiltAngle(val:number)\n\t{\n\t\tif (this._minTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._minTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the tiltAngle. Defaults to 90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get maxTiltAngle():number\n\t{\n\t\treturn this._maxTiltAngle;\n\t}\n\n\tpublic set maxTiltAngle(val:number)\n\t{\n\t\tif (this._maxTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\n\t/**\n\t * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\n\t */\n\tpublic get wrapPanAngle():boolean\n\t{\n\t\treturn this._wrapPanAngle;\n\t}\n\n\tpublic set wrapPanAngle(val:boolean)\n\t{\n\t\tif (this._wrapPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._wrapPanAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Creates a new HoverController object.\n\t */\n\tconstructor(targetObject:DisplayObject = null, panAngle:number = 0, tiltAngle:number = 90, minTiltAngle:number = -90, maxTiltAngle:number = 90, steps:number = 8, wrapPanAngle:boolean = false)\n\t{\n\t\tsuper(targetObject);\n\n\t\tthis.panAngle = panAngle;\n\t\tthis.tiltAngle = tiltAngle;\n\t\tthis.minTiltAngle = minTiltAngle;\n\t\tthis.maxTiltAngle = maxTiltAngle;\n\t\tthis.steps = steps;\n\t\tthis.wrapPanAngle = wrapPanAngle;\n\n\t\t//values passed in contrustor are applied immediately\n\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t}\n\n\t/**\n\t * Updates the current tilt angle and pan angle values.\n\t *\n\t * Values are calculated using the defined tiltAngle, panAngle and steps variables.\n\t *\n\t * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t * @see #steps\n\t */\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\n\n\t\t\tthis.pNotifyUpdate();\n\n\t\t\tif (this._wrapPanAngle) {\n\t\t\t\tif (this._panAngle < 0) {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 + 360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360 + 360;\n\t\t\t\t} else {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360;\n\t\t\t\t}\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle < -180)\n\t\t\t\t\tthis._iCurrentPanAngle -= 360;\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle > 180)\n\t\t\t\t\tthis._iCurrentPanAngle += 360;\n\t\t\t}\n\n\t\t\tif (interpolate) {\n\t\t\t\tthis._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle)/(this.steps + 1);\n\t\t\t\tthis._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle)/(this.steps + 1);\n\t\t\t} else {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\n\t\t\t//snap coords if angle differences are close\n\t\t\tif ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\t\t}\n\n\t\tthis.targetObject.rotationX = this._iCurrentTiltAngle;\n\t\tthis.targetObject.rotationY = this._iCurrentPanAngle;\n\n\t\tif (this._walkIncrement) {\n\t\t\tif (this.fly) {\n\t\t\t\tthis.targetObject.transform.moveForward(this._walkIncrement);\n\t\t\t} else {\n\t\t\t\tthis.targetObject.x += this._walkIncrement*Math.sin(this._panAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\t\t\tthis.targetObject.z += this._walkIncrement*Math.cos(this._panAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\t\t}\n\t\t\tthis._walkIncrement = 0;\n\t\t}\n\n\t\tif (this._strafeIncrement) {\n\t\t\tthis.targetObject.transform.moveRight(this._strafeIncrement);\n\t\t\tthis._strafeIncrement = 0;\n\t\t}\n\n\t}\n\n\tpublic incrementWalk(val:number)\n\t{\n\t\tif (val == 0)\n\t\t\treturn;\n\n\t\tthis._walkIncrement += val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic incrementStrafe(val:number)\n\t{\n\t\tif (val == 0)\n\t\t\treturn;\n\n\t\tthis._strafeIncrement += val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n}\n\nexport = FirstPersonController;","import DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport HoverController\t\t\t= require(\"awayjs-display/lib/controllers/HoverController\");\n\n/**\n * Controller used to follow behind an object on the XZ plane, with an optional\n * elevation (tiltAngle).\n *\n * @see away3d.containers.View3D\n */\nclass FollowController extends HoverController\n{\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, tiltAngle:number = 45, distance:number = 700)\n\t{\n\t\tsuper(targetObject, lookAtObject, 0, tiltAngle, distance);\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tinterpolate = interpolate; // unused: prevents warning\n\n\t\tif (!this.lookAtObject)\n\t\t\treturn;\n\n\t\tthis.panAngle = this._pLookAtObject.rotationY - 180;\n\t\tsuper.update();\n\t}\n}\n\nexport = FollowController;","import MathConsts\t\t\t\t= require(\"awayjs-core/lib/geom/MathConsts\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LookAtController\t\t\t= require(\"awayjs-display/lib/controllers/LookAtController\");\n\n/**\n * Extended camera used to hover round a specified target object.\n *\n * @see away.containers.View\n */\nclass HoverController extends LookAtController\n{\n\tpublic _iCurrentPanAngle:number = 0;\n\tpublic _iCurrentTiltAngle:number = 90;\n\n\tprivate _panAngle:number = 0;\n\tprivate _tiltAngle:number = 90;\n\tprivate _distance:number = 1000;\n\tprivate _minPanAngle:number = -Infinity;\n\tprivate _maxPanAngle:number = Infinity;\n\tprivate _minTiltAngle:number = -90;\n\tprivate _maxTiltAngle:number = 90;\n\tprivate _steps:number = 8;\n\tprivate _yFactor:number = 2;\n\tprivate _wrapPanAngle:boolean = false;\n\tprivate _upAxis:Vector3D = new Vector3D();\n\n\t/**\n\t * Fractional step taken each time the hover() method is called. Defaults to 8.\n\t *\n\t * Affects the speed at which the tiltAngle and panAngle resolve to their targets.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t */\n\tpublic get steps():number\n\t{\n\t\treturn this._steps;\n\t}\n\n\tpublic set steps(val:number)\n\t{\n\t\tval = (val < 1)? 1 : val;\n\n\t\tif (this._steps == val)\n\t\t\treturn;\n\n\t\tthis._steps = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Rotation of the camera in degrees around the y axis. Defaults to 0.\n\t */\n\tpublic get panAngle():number\n\t{\n\t\treturn this._panAngle;\n\t}\n\n\tpublic set panAngle(val:number)\n\t{\n\t\tval = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, val));\n\n\t\tif (this._panAngle == val)\n\t\t\treturn;\n\n\t\tthis._panAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Elevation angle of the camera in degrees. Defaults to 90.\n\t */\n\tpublic get tiltAngle():number\n\t{\n\t\treturn this._tiltAngle;\n\t}\n\n\tpublic set tiltAngle(val:number)\n\t{\n\t\tval = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));\n\n\t\tif (this._tiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._tiltAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Distance between the camera and the specified target. Defaults to 1000.\n\t */\n\tpublic get distance():number\n\t{\n\t\treturn this._distance;\n\t}\n\n\tpublic set distance(val:number)\n\t{\n\t\tif (this._distance == val)\n\t\t\treturn;\n\n\t\tthis._distance = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Minimum bounds for the panAngle. Defaults to -Infinity.\n\t *\n\t * @see #panAngle\n\t */\n\tpublic get minPanAngle():number\n\t{\n\t\treturn this._minPanAngle;\n\t}\n\n\tpublic set minPanAngle(val:number)\n\t{\n\t\tif (this._minPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._minPanAngle = val;\n\n\t\tthis.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the panAngle. Defaults to Infinity.\n\t *\n\t * @see #panAngle\n\t */\n\tpublic get maxPanAngle():number\n\t{\n\t\treturn this._maxPanAngle;\n\t}\n\n\tpublic set maxPanAngle(val:number)\n\t{\n\t\tif (this._maxPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxPanAngle = val;\n\n\t\tthis.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));\n\t}\n\n\t/**\n\t * Minimum bounds for the tiltAngle. Defaults to -90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get minTiltAngle():number\n\t{\n\t\treturn this._minTiltAngle;\n\t}\n\n\tpublic set minTiltAngle(val:number)\n\t{\n\t\tif (this._minTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._minTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Maximum bounds for the tiltAngle. Defaults to 90.\n\t *\n\t * @see #tiltAngle\n\t */\n\tpublic get maxTiltAngle():number\n\t{\n\t\treturn this._maxTiltAngle;\n\t}\n\n\tpublic set maxTiltAngle(val:number)\n\t{\n\t\tif (this._maxTiltAngle == val)\n\t\t\treturn;\n\n\t\tthis._maxTiltAngle = val;\n\n\t\tthis.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));\n\t}\n\n\t/**\n\t * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2.\n\t *\n\t * @see #distance\n\t */\n\tpublic get yFactor():number\n\t{\n\t\treturn this._yFactor;\n\t}\n\n\tpublic set yFactor(val:number)\n\t{\n\t\tif (this._yFactor == val)\n\t\t\treturn;\n\n\t\tthis._yFactor = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.\n\t */\n\tpublic get wrapPanAngle():boolean\n\t{\n\t\treturn this._wrapPanAngle;\n\t}\n\n\tpublic set wrapPanAngle(val:boolean)\n\t{\n\t\tif (this._wrapPanAngle == val)\n\t\t\treturn;\n\n\t\tthis._wrapPanAngle = val;\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t/**\n\t * Creates a new HoverController object.\n\t */\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, panAngle:number = 0, tiltAngle:number = 90, distance:number = 1000, minTiltAngle:number = -90, maxTiltAngle:number = 90, minPanAngle:number = null, maxPanAngle:number = null, steps:number = 8, yFactor:number = 2, wrapPanAngle:boolean = false)\n\t{\n\t\tsuper(targetObject, lookAtObject);\n\n\t\tthis.distance = distance;\n\t\tthis.panAngle = panAngle;\n\t\tthis.tiltAngle = tiltAngle;\n\t\tthis.minPanAngle = ( minPanAngle != null )? minPanAngle : -Infinity;\n\t\tthis.maxPanAngle = ( maxPanAngle != null )? maxPanAngle : Infinity;\n\t\tthis.minTiltAngle = minTiltAngle;\n\t\tthis.maxTiltAngle = maxTiltAngle;\n\t\tthis.steps = steps;\n\t\tthis.yFactor = yFactor;\n\t\tthis.wrapPanAngle = wrapPanAngle;\n\n\t\t//values passed in contrustor are applied immediately\n\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t}\n\n\t/**\n\t * Updates the current tilt angle and pan angle values.\n\t *\n\t * Values are calculated using the defined tiltAngle, panAngle and steps variables.\n\t *\n\t * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.\n\t *\n\t * @see #tiltAngle\n\t * @see #panAngle\n\t * @see #steps\n\t */\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {\n\n\t\t\tthis.pNotifyUpdate();\n\n\t\t\tif (this._wrapPanAngle) {\n\t\t\t\tif (this._panAngle < 0) {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 + 360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360 + 360;\n\t\t\t\t} else {\n\t\t\t\t\tthis._iCurrentPanAngle += this._panAngle%360 - this._panAngle;\n\t\t\t\t\tthis._panAngle = this._panAngle%360;\n\t\t\t\t}\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle < -180)\n\t\t\t\t\tthis._iCurrentPanAngle -= 360;\n\n\t\t\t\twhile (this._panAngle - this._iCurrentPanAngle > 180)\n\t\t\t\t\tthis._iCurrentPanAngle += 360;\n\t\t\t}\n\n\t\t\tif (interpolate) {\n\t\t\t\tthis._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle)/(this.steps + 1);\n\t\t\t\tthis._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle)/(this.steps + 1);\n\t\t\t} else {\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t}\n\n\t\t\t//snap coords if angle differences are close\n\t\t\tif ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {\n\t\t\t\tthis._iCurrentTiltAngle = this._tiltAngle;\n\t\t\t\tthis._iCurrentPanAngle = this._panAngle;\n\t\t\t}\n\t\t}\n\n\t\tvar pos:Vector3D = (this.lookAtObject)? this.lookAtObject.transform.position : (this.lookAtPosition)? this.lookAtPosition : this._pOrigin;\n\t\tthis.targetObject.x = pos.x + this.distance*Math.sin(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis.targetObject.y = pos.y + this.distance*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS)*this.yFactor;\n\t\tthis.targetObject.z = pos.z + this.distance*Math.cos(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\n\t\tthis._upAxis.x = -Math.sin(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis._upAxis.y = Math.cos(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\t\tthis._upAxis.z = -Math.cos(this._iCurrentPanAngle*MathConsts.DEGREES_TO_RADIANS)*Math.sin(this._iCurrentTiltAngle*MathConsts.DEGREES_TO_RADIANS);\n\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pLookAtPosition)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtPosition, this._upAxis);\n\t\t\telse if (this._pLookAtObject)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtObject.scene? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position, this._upAxis);\n\t\t}\n\t}\n}\n\nexport = HoverController;","import Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport ControllerBase\t\t\t= require(\"awayjs-display/lib/controllers/ControllerBase\");\nimport DisplayObjectEvent\t\t= require(\"awayjs-display/lib/events/DisplayObjectEvent\");\n\nclass LookAtController extends ControllerBase\n{\n\tpublic _pLookAtPosition:Vector3D;\n\tpublic _pLookAtObject:DisplayObject;\n\tpublic _pOrigin:Vector3D = new Vector3D(0.0, 0.0, 0.0);\n\n\tprivate _onLookAtObjectChangedDelegate:(event:DisplayObjectEvent) => void;\n\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null)\n\t{\n\t\tsuper(targetObject);\n\n\t\tthis._onLookAtObjectChangedDelegate = (event:DisplayObjectEvent) => this.onLookAtObjectChanged(event);\n\n\t\tif (lookAtObject)\n\t\t\tthis.lookAtObject = lookAtObject;\n\t\telse\n\t\t\tthis.lookAtPosition = new Vector3D();\n\t}\n\n\tpublic get lookAtPosition():Vector3D\n\t{\n\t\treturn this._pLookAtPosition;\n\t}\n\n\tpublic set lookAtPosition(val:Vector3D)\n\t{\n\t\tif (this._pLookAtObject) {\n\t\t\tthis._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\t\t\tthis._pLookAtObject = null;\n\t\t}\n\n\t\tthis._pLookAtPosition = val;\n\t\tthis.pNotifyUpdate();\n\t}\n\n\tpublic get lookAtObject():DisplayObject\n\t{\n\t\treturn this._pLookAtObject;\n\t}\n\n\tpublic set lookAtObject(val:DisplayObject)\n\t{\n\t\tif (this._pLookAtPosition)\n\t\t\tthis._pLookAtPosition = null;\n\n\t\tif (this._pLookAtObject == val)\n\t\t\treturn;\n\n\t\tif (this._pLookAtObject)\n\t\t\tthis._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\n\t\tthis._pLookAtObject = val;\n\n\t\tif (this._pLookAtObject)\n\t\t\tthis._pLookAtObject.addEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);\n\n\t\tthis.pNotifyUpdate();\n\t}\n\n\t//@override\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tif (this._pTargetObject) {\n\t\t\tif (this._pLookAtPosition)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtPosition);\n\t\t\telse if (this._pLookAtObject)\n\t\t\t\tthis._pTargetObject.lookAt(this._pLookAtObject.scene? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position);\n\t\t}\n\t}\n\n\tprivate onLookAtObjectChanged(event:DisplayObjectEvent)\n\t{\n\t\tthis.pNotifyUpdate();\n\t}\n}\n\nexport = LookAtController;","import Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport LookAtController\t\t\t= require(\"awayjs-display/lib/controllers/LookAtController\");\n\n/**\n * Uses spring physics to animate the target object towards a position that is\n * defined as the lookAtTarget object's position plus the vector defined by the\n * positionOffset property.\n */\nclass SpringController extends LookAtController\n{\n\tprivate _velocity:Vector3D;\n\tprivate _dv:Vector3D;\n\tprivate _stretch:Vector3D;\n\tprivate _force:Vector3D;\n\tprivate _acceleration:Vector3D;\n\tprivate _desiredPosition:Vector3D;\n\n\t/**\n\t * Stiffness of the spring, how hard is it to extend. The higher it is, the more \"fixed\" the cam will be.\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic stiffness:number;\n\n\t/**\n\t * Damping is the spring internal friction, or how much it resists the \"boinggggg\" effect. Too high and you'll lose it!\n\t * A number between 1 and 20 is recommended.\n\t */\n\tpublic damping:number;\n\n\t/**\n\t * Mass of the camera, if over 120 and it'll be very heavy to move.\n\t */\n\tpublic mass:number;\n\n\t/**\n\t * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.\n\t */\n\tpublic positionOffset:Vector3D = new Vector3D(0, 500, -1000);\n\n\tconstructor(targetObject:DisplayObject = null, lookAtObject:DisplayObject = null, stiffness:number = 1, mass:number = 40, damping:number = 4)\n\t{\n\t\tsuper(targetObject, lookAtObject);\n\n\t\tthis.stiffness = stiffness;\n\t\tthis.damping = damping;\n\t\tthis.mass = mass;\n\n\t\tthis._velocity = new Vector3D();\n\t\tthis._dv = new Vector3D();\n\t\tthis._stretch = new Vector3D();\n\t\tthis._force = new Vector3D();\n\t\tthis._acceleration = new Vector3D();\n\t\tthis._desiredPosition = new Vector3D();\n\n\t}\n\n\tpublic update(interpolate:boolean = true)\n\t{\n\t\tvar offs:Vector3D;\n\n\t\tif (!this._pLookAtObject || !this._pTargetObject)\n\t\t\treturn;\n\n\t\toffs = this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);\n\t\tthis._desiredPosition.x = this._pLookAtObject.x + offs.x;\n\t\tthis._desiredPosition.y = this._pLookAtObject.y + offs.y;\n\t\tthis._desiredPosition.z = this._pLookAtObject.z + offs.z;\n\n\t\tthis._stretch = this._pTargetObject.transform.position.add(this._desiredPosition);\n\t\tthis._stretch.scaleBy(-this.stiffness);\n\n\t\tthis._dv.copyFrom(this._velocity);\n\t\tthis._dv.scaleBy(this.damping);\n\n\t\tthis._force.x = this._stretch.x - this._dv.x;\n\t\tthis._force.y = this._stretch.y - this._dv.y;\n\t\tthis._force.z = this._stretch.z - this._dv.z;\n\n\t\tthis._acceleration.copyFrom(this._force);\n\t\tthis._acceleration.scaleBy(1/this.mass);\n\n\t\tthis._velocity.incrementBy(this._acceleration);\n\n\t\tthis._pTargetObject.transform.position = this._pTargetObject.transform.position.add(this._velocity);\n\n\t\tsuper.update();\n\t}\n}\n\nexport = SpringController;","class ContextMode\n{\n\tstatic AUTO:string = \"auto\";\n\tstatic WEBGL:string = \"webgl\";\n\tstatic FLASH:string = \"flash\";\n\tstatic NATIVE:string = \"native\";\n}\n\nexport = ContextMode;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialEvent\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * The Billboard class represents display objects that represent bitmap images.\n * These can be images that you load with the flash.Assets or\n * flash.display.Loader classes, or they can be images that you\n * create with the Billboard() constructor.\n *\n *

The Billboard() constructor allows you to create a Billboard\n * object that contains a reference to a BitmapData object. After you create a\n * Billboard object, use the addChild() or addChildAt()\n * method of the parent DisplayObjectContainer instance to place the bitmap on\n * the display list.

\n *\n *

A Billboard object can share its BitmapData reference among several Billboard\n * objects, independent of translation or rotation properties. Because you can\n * create multiple Billboard objects that reference the same BitmapData object,\n * multiple display objects can use the same complex BitmapData object without\n * incurring the memory overhead of a BitmapData object for each display\n * object instance.

\n *\n *

A BitmapData object can be drawn to the screen by a Billboard object in one\n * of two ways: by using the default hardware renderer with a single hardware surface,\n * or by using the slower software renderer when 3D acceleration is not available.

\n *\n *

If you would prefer to perform a batch rendering command, rather than using a\n * single surface for each Billboard object, you can also draw to the screen using the\n * drawTiles() or drawTriangles() methods which are\n * available to flash.display.Tilesheet and flash.display.Graphics\n * objects.

\n *\n *

Note: The Billboard class is not a subclass of the InteractiveObject\n * class, so it cannot dispatch mouse events. However, you can use the\n * addEventListener() method of the display object container that\n * contains the Billboard object.

\n */\n\nclass Billboard extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _billboardWidth:number;\n\tprivate _billboardHeight:number;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.BILLBOARD;\n\t}\n\n\t/**\n\t * The BitmapData object being referenced.\n\t */\n\tpublic bitmapData:BitmapData; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get billboardHeight():number\n\t{\n\t\treturn this._billboardHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get billboardWidth():number\n\t{\n\t\treturn this._billboardWidth;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t * Controls whether or not the Billboard object is snapped to the nearest pixel.\n\t * This value is ignored in the native and HTML5 targets.\n\t * The PixelSnapping class includes possible values:\n\t *
    \n\t *
  • PixelSnapping.NEVER - No pixel snapping occurs.
  • \n\t *
  • PixelSnapping.ALWAYS - The image is always snapped to\n\t * the nearest pixel, independent of transformation.
  • \n\t *
  • PixelSnapping.AUTO - The image is snapped to the\n\t * nearest pixel if it is drawn with no rotation or skew and it is drawn at a\n\t * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the\n\t * bitmap image is drawn at 100% scale, snapped to the nearest pixel.\n\t * When targeting Flash Player, this value allows the image to be drawn as fast\n\t * as possible using the internal vector renderer.
  • \n\t *
\n\t */\n\tpublic pixelSnapping:string; //TODO\n\n\t/**\n\t * Controls whether or not the bitmap is smoothed when scaled. If\n\t * true, the bitmap is smoothed when scaled. If\n\t * false, the bitmap is not smoothed when scaled.\n\t */\n\tpublic smoothing:boolean; //TODO\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\tconstructor(material:MaterialBase, pixelSnapping:string = \"auto\", smoothing:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._billboardWidth = material.width;\n\t\tthis._billboardHeight = material.height;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(0, 0, 0, this._billboardWidth, this._billboardHeight, 0);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testBillboardCollision(this, this._pPickingCollisionVO, shortestCollisionDistance);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis._billboardWidth = this._material.width;\n\t\tthis._billboardHeight = this._material.height;\n\n\t\tthis._pBoundsInvalid = true;\n\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\trendererPool.applyBillboard(this);\n\t}\n}\n\nexport = Billboard;","import BoundingVolumeBase\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport ProjectionEvent\t\t\t= require(\"awayjs-core/lib/events/ProjectionEvent\");\nimport IProjection\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\nimport PerspectiveProjection\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport DisplayObjectContainer\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport IEntity\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CameraEvent\t\t\t\t= require(\"awayjs-display/lib/events/CameraEvent\");\nimport CameraNode\t\t\t\t= require(\"awayjs-display/lib/partition/CameraNode\");\nimport EntityNode\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\n\n\nclass Camera extends DisplayObjectContainer implements IEntity\n{\n\tprivate _viewProjection:Matrix3D = new Matrix3D();\n\tprivate _viewProjectionDirty:Boolean = true;\n\tprivate _projection:IProjection;\n\tprivate _frustumPlanes:Array;\n\tprivate _frustumPlanesDirty:Boolean = true;\n\tprivate _onProjectionMatrixChangedDelegate:(event:ProjectionEvent) => void;\n\n\tconstructor(projection:IProjection = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._onProjectionMatrixChangedDelegate = (event:ProjectionEvent) => this.onProjectionMatrixChanged(event);\n\n\t\tthis._projection = projection || new PerspectiveProjection();\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\n\t\tthis._frustumPlanes = [];\n\n\t\tfor (var i:number = 0; i < 6; ++i)\n\t\t\tthis._frustumPlanes[i] = new Plane3D();\n\n\t\tthis.z = -1000;\n\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new CameraNode(this);\n\t}\n\n\t//@override\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.CAMERA;\n\t}\n\n\tprivate onProjectionMatrixChanged(event:ProjectionEvent)\n\t{\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t\tthis.dispatchEvent(event);\n\t}\n\n\tpublic get frustumPlanes():Array\n\t{\n\t\tif (this._frustumPlanesDirty)\n\t\t\tthis.updateFrustum();\n\n\t\treturn this._frustumPlanes;\n\t}\n\n\tprivate updateFrustum()\n\t{\n\t\tvar a:number, b:number, c:number;\n\t\t//var d : Number;\n\t\tvar c11:number, c12:number, c13:number, c14:number;\n\t\tvar c21:number, c22:number, c23:number, c24:number;\n\t\tvar c31:number, c32:number, c33:number, c34:number;\n\t\tvar c41:number, c42:number, c43:number, c44:number;\n\t\tvar p:Plane3D;\n\t\tvar raw:number[] = new Array(16);\n\t\t;//new Array(16 );away.utils.Matrix3DUtils.RAW_DATA_CONTAINER;//[];\n\t\tvar invLen:number;\n\t\tthis.viewProjection.copyRawDataTo(raw);\n\n\t\tc11 = raw[0];\n\t\tc12 = raw[4];\n\t\tc13 = raw[8];\n\t\tc14 = raw[12];\n\t\tc21 = raw[1];\n\t\tc22 = raw[5];\n\t\tc23 = raw[9];\n\t\tc24 = raw[13];\n\t\tc31 = raw[2];\n\t\tc32 = raw[6];\n\t\tc33 = raw[10];\n\t\tc34 = raw[14];\n\t\tc41 = raw[3];\n\t\tc42 = raw[7];\n\t\tc43 = raw[11];\n\t\tc44 = raw[15];\n\n\t\t// left plane\n\t\tp = this._frustumPlanes[0];\n\t\ta = c41 + c11;\n\t\tb = c42 + c12;\n\t\tc = c43 + c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c14)*invLen;\n\n\t\t// right plane\n\t\tp = this._frustumPlanes[1];\n\t\ta = c41 - c11;\n\t\tb = c42 - c12;\n\t\tc = c43 - c13;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c14 - c44)*invLen;\n\n\t\t// bottom\n\t\tp = this._frustumPlanes[2];\n\t\ta = c41 + c21;\n\t\tb = c42 + c22;\n\t\tc = c43 + c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -(c44 + c24)*invLen;\n\n\t\t// top\n\t\tp = this._frustumPlanes[3];\n\t\ta = c41 - c21;\n\t\tb = c42 - c22;\n\t\tc = c43 - c23;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c24 - c44)*invLen;\n\n\t\t// near\n\t\tp = this._frustumPlanes[4];\n\t\ta = c31;\n\t\tb = c32;\n\t\tc = c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = -c34*invLen;\n\n\t\t// far\n\t\tp = this._frustumPlanes[5];\n\t\ta = c41 - c31;\n\t\tb = c42 - c32;\n\t\tc = c43 - c33;\n\t\tinvLen = 1/Math.sqrt(a*a + b*b + c*c);\n\t\tp.a = a*invLen;\n\t\tp.b = b*invLen;\n\t\tp.c = c*invLen;\n\t\tp.d = (c34 - c44)*invLen;\n\n\t\tthis._frustumPlanesDirty = false;\n\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tthis._viewProjectionDirty = true;\n\t\tthis._frustumPlanesDirty = true;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t\tthis._pBounds.nullify();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get projection():IProjection\n\t{\n\t\treturn this._projection;\n\t}\n\n\tpublic set projection(value:IProjection)\n\t{\n\t\tif (this._projection == value)\n\t\t\treturn;\n\n\t\tif (!value)\n\t\t\tthrow new Error(\"Projection cannot be null!\");\n\n\t\tthis._projection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis._projection = value;\n\t\tthis._projection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);\n\t\tthis.dispatchEvent(new CameraEvent(CameraEvent.PROJECTION_CHANGED, this));\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get viewProjection():Matrix3D\n\t{\n\t\tif (this._viewProjectionDirty) {\n\t\t\tthis._viewProjection.copyFrom(this.inverseSceneTransform);\n\t\t\tthis._viewProjection.append(this._projection.matrix);\n\t\t\tthis._viewProjectionDirty = false;\n\t\t}\n\n\t\treturn this._viewProjection;\n\t}\n\n\t/**\n\t * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right.\n\t * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The ray from the camera to the scene space position of the given screen coordinates.\n\t */\n\tpublic getRay(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.deltaTransformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\t/**\n\t * Calculates the normalised position in screen space of the given scene position.\n\t *\n\t * @param point3d the position vector of the scene coordinates to be projected.\n\t * @return The normalised screen position of the given scene coordinates.\n\t */\n\tpublic project(point3d:Vector3D):Vector3D\n\t{\n\t\treturn this._projection.project(this.inverseSceneTransform.transformVector(point3d));\n\t}\n\n\t/**\n\t * Calculates the scene position of the given normalized coordinates in screen space.\n\t *\n\t * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.\n\t * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.\n\t * @param sZ The z coordinate in screen space, representing the distance into the screen.\n\t * @return The scene position of the given screen coordinates.\n\t */\n\tpublic unproject(nX:number, nY:number, sZ:number):Vector3D\n\t{\n\t\treturn this.sceneTransform.transformVector(this._projection.unproject(nX, nY, sZ));\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = Camera;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLightNode\t\t\t= require(\"awayjs-display/lib/partition/DirectionalLightNode\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass DirectionalLight extends LightBase implements IEntity\n{\n\tprivate _direction:Vector3D;\n\tprivate _tmpLookAt:Vector3D;\n\tprivate _sceneDirection:Vector3D;\n\tprivate _projAABBPoints:Array;\n\n\tconstructor(xDir:number = 0, yDir:number = -1, zDir:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.direction = new Vector3D(xDir, yDir, zDir);\n\n\t\tthis._sceneDirection = new Vector3D();\n\t}\n\n\tpublic get sceneDirection():Vector3D\n\t{\n\t\tif (this._pSceneTransformDirty)\n\t\t\tthis.pUpdateSceneTransform();\n\n\t\treturn this._sceneDirection;\n\t}\n\n\tpublic get direction():Vector3D\n\t{\n\t\treturn this._direction;\n\t}\n\n\tpublic set direction(value:Vector3D)\n\t{\n\t\tthis._direction = value;\n\n\t\tif (!this._tmpLookAt)\n\t\t\tthis._tmpLookAt = new Vector3D();\n\n\t\tthis._tmpLookAt.x = this.x + this._direction.x;\n\t\tthis._tmpLookAt.y = this.y + this._direction.y;\n\t\tthis._tmpLookAt.z = this.z + this._direction.z;\n\n\t\tthis.lookAt(this._tmpLookAt);\n\t}\n\n\t/**\n\t *\n\t * @returns {away.bounds.NullBounds}\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//directional lights are to be considered global, hence always in view\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t}\n\n\t//@override\n\tpublic pUpdateSceneTransform()\n\t{\n\t\tsuper.pUpdateSceneTransform();\n\t\tthis.sceneTransform.copyColumnTo(2, this._sceneDirection);\n\t\tthis._sceneDirection.normalize();\n\t}\n\n\t//@override\n\tpublic pCreateShadowMapper():DirectionalShadowMapper\n\t{\n\t\treturn new DirectionalShadowMapper();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new DirectionalLightNode(this);\n\t}\n\n\t//override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tif (!this._projAABBPoints)\n\t\t\tthis._projAABBPoints = [];\n\n\t\tm.transformVectors(bounds.aabbPoints, this._projAABBPoints);\n\n\t\tvar xMin:number = Infinity, xMax:number = -Infinity;\n\t\tvar yMin:number = Infinity, yMax:number = -Infinity;\n\t\tvar zMin:number = Infinity, zMax:number = -Infinity;\n\t\tvar d:number;\n\t\tfor (var i:number = 0; i < 24;) {\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < xMin)\n\t\t\t\txMin = d;\n\n\t\t\tif (d > xMax)\n\t\t\t\txMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < yMin)\n\t\t\t\tyMin = d;\n\n\t\t\tif (d > yMax)\n\t\t\t\tyMax = d;\n\n\t\t\td = this._projAABBPoints[i++];\n\n\t\t\tif (d < zMin)\n\t\t\t\tzMin = d;\n\n\t\t\tif (d > zMax)\n\t\t\t\tzMax = d;\n\t\t}\n\n\t\tvar invXRange:number = 1/(xMax - xMin);\n\t\tvar invYRange:number = 1/(yMax - yMin);\n\t\tvar invZRange:number = 1/(zMax - zMin);\n\t\traw[0] = 2*invXRange;\n\t\traw[5] = 2*invYRange;\n\t\traw[10] = invZRange;\n\t\traw[12] = -(xMax + xMin)*invXRange;\n\t\traw[13] = -(yMax + yMin)*invYRange;\n\t\traw[14] = -zMin*invZRange;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\t\traw[15] = 1;\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = DirectionalLight;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Error\t\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport LightProbeNode\t\t\t\t= require(\"awayjs-display/lib/partition/LightProbeNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nclass LightProbe extends LightBase implements IEntity\n{\n\tprivate _diffuseMap:CubeTextureBase;\n\tprivate _specularMap:CubeTextureBase;\n\n\tconstructor(diffuseMap:CubeTextureBase, specularMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._diffuseMap = diffuseMap;\n\t\tthis._specularMap = specularMap;\n\t}\n\n\tpublic get diffuseMap():CubeTextureBase\n\t{\n\t\treturn this._diffuseMap;\n\t}\n\n\tpublic set diffuseMap(value:CubeTextureBase)\n\t{\n\t\tthis._diffuseMap = value;\n\t}\n\n\tpublic get specularMap():CubeTextureBase\n\t{\n\t\treturn this._specularMap;\n\t}\n\n\tpublic set specularMap(value:CubeTextureBase)\n\t{\n\t\tthis._specularMap = value;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new LightProbeNode(this);\n\t}\n\n\t//@override\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\t//@override\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t//@override\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tthrow new Error(\"Object projection matrices are not supported for LightProbe objects!\");\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = LightProbe;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Line Segment primitive.\n */\nclass LineSegment extends DisplayObject implements IEntity, IRenderableOwner\n{\n\tprivate _animator:IAnimator;\n\tprivate _material:MaterialBase;\n\tprivate _uvTransform:UVTransform;\n\n\tprivate onSizeChangedDelegate:(event:MaterialEvent) => void;\n\n\tpublic _startPosition:Vector3D;\n\tpublic _endPosition:Vector3D;\n\tpublic _halfThickness:number;\n\n\n\t/**\n\t * Defines the animator of the line segment. Act on the line segment's geometry. Defaults to null\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LINE_SEGMENT;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get startPostion():Vector3D\n\t{\n\t\treturn this._startPosition;\n\t}\n\n\tpublic set startPosition(value:Vector3D)\n\t{\n\t\tif (this._startPosition == value)\n\t\t\treturn;\n\n\t\tthis._startPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get endPosition():Vector3D\n\t{\n\t\treturn this._endPosition;\n\t}\n\n\tpublic set endPosition(value:Vector3D)\n\t{\n\t\tif (this._endPosition == value)\n\t\t\treturn;\n\n\t\tthis._endPosition = value;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iRemoveOwner(this);\n\t\t\tthis._material.removeEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\n\n\t\tthis._material = value;\n\n\t\tif (this._material) {\n\t\t\tthis._material.iAddOwner(this);\n\t\t\tthis._material.addEventListener(MaterialEvent.SIZE_CHANGED, this.onSizeChangedDelegate);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get thickness():number\n\t{\n\t\treturn this._halfThickness*2;\n\t}\n\n\tpublic set thickness(value:number)\n\t{\n\t\tif (this._halfThickness == value)\n\t\t\treturn;\n\n\t\tthis._halfThickness = value*0.5;\n\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a line segment\n\t *\n\t * @param startPosition Start position of the line segment\n\t * @param endPosition Ending position of the line segment\n\t * @param thickness Thickness of the line\n\t */\n\tconstructor(material:MaterialBase, startPosition:Vector3D, endPosition:Vector3D, thickness:number = 1)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis.onSizeChangedDelegate = (event:MaterialEvent) => this.onSizeChanged(event);\n\n\t\tthis.material = material;\n\n\t\tthis._startPosition = startPosition;\n\t\tthis._endPosition = endPosition;\n\t\tthis._halfThickness = thickness*0.5;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._startPosition = null;\n\t\tthis._endPosition = null;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromExtremes(this._startPosition.x, this._startPosition.y, this._startPosition.z, this._endPosition.x, this._endPosition.y, this._endPosition.z);\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate onSizeChanged(event:MaterialEvent)\n\t{\n\t\tthis.notifyRenderableUpdate();\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyRenderableUpdate()\n\t{\n\t\tvar len:number = this._pRenderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._pRenderables[i].invalidateVertexData(\"vertices\"); //TODO\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tthis._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = LineSegment;","import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\n\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\nimport TriangleSubGeometry\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport DisplayObjectContainer\t\t= require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation\n * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts\n * of the geometry to be assigned different materials.\n */\nclass Mesh extends DisplayObjectContainer implements IEntity\n{\n\tprivate _uvTransform:UVTransform;\n\n\tprivate _subMeshes:Array;\n\tprivate _geometry:Geometry;\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\tprivate _castsShadows:boolean = true;\n\tprivate _shareAnimationGeometry:boolean = true;\n\n\tprivate _onGeometryBoundsInvalidDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryAddedDelegate:(event:GeometryEvent) => void;\n\tprivate _onSubGeometryRemovedDelegate:(event:GeometryEvent) => void;\n\n\t/**\n\t * Defines the animator of the mesh. Act on the mesh's geometry. Default value is null.\n\t */\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\tpublic set animator(value:IAnimator)\n\t{\n\t\tif (this._animator)\n\t\t\tthis._animator.removeOwner(this);\n\n\t\tthis._animator = value;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\t// cause material to be unregistered and registered again to work with the new animation type (if possible)\n\t\t\tif (subMesh.material) {\n\t\t\t\tsubMesh.material.iRemoveOwner(subMesh);\n\t\t\t\tsubMesh.material.iAddOwner(subMesh);\n\t\t\t}\n\n\t\t\t//invalidate any existing renderables in case they need to pull new geometry\n\t\t\tsubMesh._iInvalidateRenderableGeometry();\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tthis._animator.addOwner(this);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MESH;\n\t}\n\n\t/**\n\t * Indicates whether or not the Mesh can cast shadows. Default value is true.\n\t */\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn this._castsShadows;\n\t}\n\n\tpublic set castsShadows(value:boolean)\n\t{\n\t\tthis._castsShadows = value;\n\t}\n\n\t/**\n\t * The geometry used by the mesh that provides it with its shape.\n\t */\n\tpublic get geometry():Geometry\n\t{\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\tpublic set geometry(value:Geometry)\n\t{\n\t\tvar i:number;\n\n\t\tif (this._geometry) {\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tfor (i = 0; i < this._subMeshes.length; ++i)\n\t\t\t\tthis._subMeshes[i].dispose();\n\n\t\t\tthis._subMeshes.length = 0;\n\t\t}\n\n\t\tthis._geometry = value;\n\n\t\tif (this._geometry) {\n\n\t\t\tthis._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);\n\t\t\tthis._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);\n\n\t\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\n\t\t\tfor (i = 0; i < subGeoms.length; ++i)\n\t\t\t\tthis.addSubMesh(subGeoms[i]);\n\t\t}\n\t}\n\n\t/**\n\t * The material with which to render the Mesh.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tvar i:number;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar subMesh:ISubMesh;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iRemoveOwner(subMesh);\n\n\t\tthis._material = value;\n\n\t\tfor (i = 0; i < len; i++)\n\t\t\tif (this._material && (subMesh = this._subMeshes[i]).material == this._material)\n\t\t\t\tthis._material.iAddOwner(subMesh);\n\t}\n\n\t/**\n\t * Indicates whether or not the mesh share the same animation geometry.\n\t */\n\tpublic get shareAnimationGeometry():boolean\n\t{\n\t\treturn this._shareAnimationGeometry;\n\t}\n\n\tpublic set shareAnimationGeometry(value:boolean)\n\t{\n\t\tthis._shareAnimationGeometry = value;\n\t}\n\n\t/**\n\t * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's\n\t * material.\n\t */\n\tpublic get subMeshes():Array\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\treturn this._subMeshes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t * Create a new Mesh object.\n\t *\n\t * @param geometry The geometry used by the mesh that provides it with its shape.\n\t * @param material [optional] The material with which to render the Mesh.\n\t */\n\tconstructor(geometry:Geometry, material:MaterialBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._subMeshes = new Array();\n\n\t\tthis._onGeometryBoundsInvalidDelegate = (event:GeometryEvent) => this.onGeometryBoundsInvalid(event);\n\t\tthis._onSubGeometryAddedDelegate = (event:GeometryEvent) => this.onSubGeometryAdded(event);\n\t\tthis._onSubGeometryRemovedDelegate = (event:GeometryEvent) => this.onSubGeometryRemoved(event);\n\n\t\t//this should never happen, but if people insist on trying to create their meshes before they have geometry to fill it, it becomes necessary\n\t\tthis.geometry = geometry || new Geometry();\n\n\t\tthis.material = material;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic bakeTransformations()\n\t{\n\t\tthis.geometry.applyTransformation(this._iMatrix3D);\n\t\tthis._iMatrix3D.identity();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\tthis.material = null;\n\t\tthis.geometry = null;\n\t}\n\n\t/**\n\t * Disposes mesh including the animator and children. This is a merely a convenience method.\n\t * @return\n\t */\n\tpublic disposeWithAnimatorAndChildren()\n\t{\n\t\tthis.disposeWithChildren();\n\n\t\t if (this._animator)\n\t\t\tthis._animator.dispose();\n\t}\n\n\t/**\n\t * Clones this Mesh instance along with all it's children, while re-using the same\n\t * material, geometry and animation set. The returned result will be a copy of this mesh,\n\t * containing copies of all of it's children.\n\t *\n\t * Properties that are re-used (i.e. not cloned) by the new copy include name,\n\t * geometry, and material. Properties that are cloned or created anew for the copy\n\t * include subMeshes, children of the mesh, and the animator.\n\t *\n\t * If you want to copy just the mesh, reusing it's geometry and material while not\n\t * cloning it's children, the simplest way is to create a new mesh manually:\n\t *\n\t * \n\t * var clone : Mesh = new Mesh(original.geometry, original.material);\n\t * \n\t */\n\tpublic clone():DisplayObject\n\t{\n\t\tvar clone:Mesh = new Mesh(this._geometry, this._material);\n\n\t\tclone._iMatrix3D = this._iMatrix3D;\n\t\tclone.pivot = this.pivot;\n\t\tclone.partition = this.partition;\n\t\tclone.bounds = this.bounds.clone();\n\n\n\t\tclone.name = this.name;\n\t\tclone.castsShadows = this.castsShadows;\n\t\tclone.shareAnimationGeometry = this.shareAnimationGeometry;\n\t\tclone.mouseEnabled = this.mouseEnabled;\n\t\tclone.mouseChildren = this.mouseChildren;\n\t\t//this is of course no proper cloning\n\t\t//maybe use this instead?: http://blog.another-d-mention.ro/programming/how-to-clone-duplicate-an-object-in-actionscript-3/\n\t\tclone.extra = this.extra;\n\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tclone._subMeshes[i].material = this._subMeshes[i]._iGetExplicitMaterial();\n\n\n\t\tlen = this.numChildren;\n\t\tvar obj:any;\n\n\t\tfor (i = 0; i < len; ++i) {\n\t\t\tobj = this.getChildAt(i).clone();\n\t\t\tclone.addChild( obj);\n\t\t}\n\n\t\tif (this._animator)\n\t\t\tclone.animator = this._animator.clone();\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param subGeometry\n\t * @returns {SubMeshBase}\n\t */\n\tpublic getSubMeshFromSubGeometry(subGeometry:SubGeometryBase):ISubMesh\n\t{\n\t\treturn this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)];\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new EntityNode(this);\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tvar i:number, j:number, p:number;\n\t\tvar subGeoms:Array = this._geometry.subGeometries;\n\t\tvar subGeom:SubGeometryBase;\n\t\tvar boundingPositions:Array;\n\t\tvar numSubGeoms:number = subGeoms.length;\n\t\tvar minX:number, minY:number, minZ:number;\n\t\tvar maxX:number, maxY:number, maxZ:number;\n\n\t\tif (numSubGeoms > 0) {\n\t\t\ti = 0;\n\t\t\tsubGeom = subGeoms[0];\n\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\tminX = maxX = boundingPositions[i];\n\t\t\tminY = maxY = boundingPositions[i + 1];\n\t\t\tminZ = maxZ = boundingPositions[i + 2];\n\n\t\t\tj = numSubGeoms;\n\t\t\twhile (j--) {\n\t\t\t\tsubGeom = subGeoms[j];\n\t\t\t\tboundingPositions = subGeom.getBoundingPositions();\n\t\t\t\ti = boundingPositions.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tp = boundingPositions[i];\n\t\t\t\t\tif (p < minX)\n\t\t\t\t\t\tminX = p;\n\t\t\t\t\telse if (p > maxX)\n\t\t\t\t\t\tmaxX = p;\n\n\t\t\t\t\tp = boundingPositions[i + 1];\n\n\t\t\t\t\tif (p < minY)\n\t\t\t\t\t\tminY = p;\n\t\t\t\t\telse if (p > maxY)\n\t\t\t\t\t\tmaxY = p;\n\n\t\t\t\t\tp = boundingPositions[i + 2];\n\n\t\t\t\t\tif (p < minZ)\n\t\t\t\t\t\tminZ = p;\n\t\t\t\t\telse if (p > maxZ)\n\t\t\t\t\t\tmaxZ = p;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._pBounds.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);\n\t\t} else {\n\t\t\tthis._pBounds.fromExtremes(0, 0, 0, 0, 0, 0);\n\t\t}\n\n\t\tsuper.pUpdateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @private\n\t */\n\tprivate onGeometryBoundsInvalid(event:GeometryEvent)\n\t{\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * Called when a SubGeometry was added to the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryAdded(event:GeometryEvent)\n\t{\n\t\tthis.addSubMesh(event.subGeometry);\n\t}\n\n\t/**\n\t * Called when a SubGeometry was removed from the Geometry.\n\t *\n\t * @private\n\t */\n\tprivate onSubGeometryRemoved(event:GeometryEvent)\n\t{\n\t\tvar subMesh:ISubMesh;\n\t\tvar subGeom:SubGeometryBase = event.subGeometry;\n\t\tvar len:number = this._subMeshes.length;\n\t\tvar i:number;\n\n\t\t// Important! This has to be done here, and not delayed until the\n\t\t// next render loop, since this may be caused by the geometry being\n\t\t// rebuilt IN THE RENDER LOOP. Invalidating and waiting will delay\n\t\t// it until the NEXT RENDER FRAME which is probably not desirable.\n\t\tfor (i = 0; i < len; ++i) {\n\n\t\t\tsubMesh = this._subMeshes[i];\n\n\t\t\tif (subMesh.subGeometry == subGeom) {\n\t\t\t\tsubMesh.dispose();\n\n\t\t\t\tthis._subMeshes.splice(i, 1);\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t--len;\n\t\tfor (; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iIndex = i;\n\t}\n\n\t/**\n\t * Adds a SubMeshBase wrapping a SubGeometry.\n\t *\n\t * @param subGeometry\n\t */\n\tprivate addSubMesh(subGeometry:SubGeometryBase)\n\t{\n\t\tvar SubMeshClass:ISubMeshClass = subGeometry.subMeshClass;\n\n\t\tvar subMesh:ISubMesh = new SubMeshClass(subGeometry, this, null);\n\t\tvar len:number = this._subMeshes.length;\n\n\t\tsubMesh._iIndex = len;\n\n\t\tthis._subMeshes[len] = subMesh;\n\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * //TODO\n\t *\n\t * @param shortestCollisionDistance\n\t * @param findClosest\n\t * @returns {boolean}\n\t *\n\t * @internal\n\t */\n\tpublic _iTestCollision(shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\treturn this._pPickingCollider.testMeshCollision(this, this._pPickingCollisionVO, shortestCollisionDistance, findClosest);\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t// Since this getter is invoked every iteration of the render loop, and\n\t\t// the prefab construct could affect the sub-meshes, the prefab is\n\t\t// validated here to give it a chance to rebuild.\n\t\tif (this._iSourcePrefab)\n\t\t\tthis._iSourcePrefab._iValidate();\n\n\t\tvar len:number /*uint*/ = this._subMeshes.length;\n\t\tfor (var i:number /*uint*/ = 0; i < len; i++)\n\t\t\tthis._subMeshes[i]._iCollectRenderable(rendererPool);\n\t}\n\n\tpublic _iInvalidateRenderableGeometries()\n\t{\n\t\tvar len:number = this._subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._subMeshes[i]._iInvalidateRenderableGeometry();\n\t}\n}\n\nexport = Mesh;","import BoundingSphere\t\t\t\t= require(\"awayjs-core/lib/bounds/BoundingSphere\");\nimport BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Box\t\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Box\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport PointLightNode\t\t\t\t= require(\"awayjs-display/lib/partition/PointLightNode\");\nimport IRendererPool\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport CubeMapShadowMapper\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/CubeMapShadowMapper\");\n\nclass PointLight extends LightBase implements IEntity\n{\n\tpublic _pRadius:number = 90000;\n\tpublic _pFallOff:number = 100000;\n\tpublic _pFallOffFactor:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\n\t\tthis._pFallOffFactor = 1/(this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t}\n\n\tpublic pCreateShadowMapper():CubeMapShadowMapper\n\t{\n\t\treturn new CubeMapShadowMapper();\n\t}\n\n\tpublic get radius():number\n\t{\n\t\treturn this._pRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pRadius = value;\n\n\t\tif (this._pRadius < 0) {\n\t\t\tthis._pRadius = 0;\n\t\t} else if (this._pRadius > this._pFallOff) {\n\t\t\tthis._pFallOff = this._pRadius;\n\t\t\tthis.pInvalidateBounds();\n\t\t}\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius );\n\t}\n\n\tpublic iFallOffFactor():number\n\t{\n\t\treturn this._pFallOffFactor;\n\t}\n\n\tpublic get fallOff():number\n\t{\n\t\treturn this._pFallOff;\n\t}\n\n\tpublic set fallOff(value:number)\n\t{\n\t\tthis._pFallOff = value;\n\n\t\tif (this._pFallOff < 0)\n\t\t\tthis._pFallOff = 0;\n\n\t\tif (this._pFallOff < this._pRadius)\n\t\t\tthis._pRadius = this._pFallOff;\n\n\t\tthis._pFallOffFactor = 1/( this._pFallOff*this._pFallOff - this._pRadius*this._pRadius);\n\t\tthis.pInvalidateBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():EntityNode\n\t{\n\t\treturn new PointLightNode(this);\n\t}\n\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBounds.fromSphere(new Vector3D(), this._pFallOff);\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\t//point lights are culled based on their falloff radius\n\t\treturn new BoundingSphere();\n\t}\n\n\tpublic iGetObjectProjectionMatrix(entity:IEntity, camera:Camera, target:Matrix3D = null):Matrix3D\n\t{\n\t\tvar raw:number[] = new Array(16);\n\t\tvar bounds:BoundingVolumeBase = entity.bounds;\n\t\tvar m:Matrix3D = new Matrix3D();\n\n\t\t// todo: do not use lookAt on Light\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this._pParent.inverseSceneTransform);\n\t\tthis.lookAt(m.position);\n\n\t\tm.copyFrom(entity.getRenderSceneTransform(camera));\n\t\tm.append(this.inverseSceneTransform);\n\n\t\tvar box:Box = bounds.aabb;\n\t\tvar v1:Vector3D = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));\n\t\tvar v2:Vector3D = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));\n\t\tvar d1:number = v1.x*v1.x + v1.y*v1.y + v1.z*v1.z;\n\t\tvar d2:number = v2.x*v2.x + v2.y*v2.y + v2.z*v2.z;\n\t\tvar d:number = Math.sqrt(d1 > d2? d1 : d2);\n\t\tvar zMin:number;\n\t\tvar zMax:number;\n\n\t\tvar z:number = m.rawData[14];\n\t\tzMin = z - d;\n\t\tzMax = z + d;\n\n\t\traw[5] = raw[0] = zMin/d;\n\t\traw[10] = zMax/(zMax - zMin);\n\t\traw[11] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[12] = raw[13] = raw[15] = 0;\n\t\traw[14] = -zMin*raw[10];\n\n\t\tif (!target)\n\t\t\ttarget = new Matrix3D();\n\n\t\ttarget.copyRawDataFrom(raw);\n\t\ttarget.prepend(m);\n\n\t\treturn target;\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//nothing to do here\n\t}\n}\n\nexport = PointLight;","import DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Graphics\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Graphics\");\n\n/**\n * This class is used to create lightweight shapes using the ActionScript\n * drawing application program interface(API). The Shape class includes a\n * graphics property, which lets you access methods from the\n * Graphics class.\n *\n *

The Sprite class also includes a graphicsproperty, and it\n * includes other features not available to the Shape class. For example, a\n * Sprite object is a display object container, whereas a Shape object is not\n * (and cannot contain child display objects). For this reason, Shape objects\n * consume less memory than Sprite objects that contain the same graphics.\n * However, a Sprite object supports user input events, while a Shape object\n * does not.

\n */\nclass Shape extends DisplayObject\n{\n\tprivate _graphics:Graphics;\n\n\t/**\n\t * Specifies the Graphics object belonging to this Shape object, where vector\n\t * drawing commands can occur.\n\t */\n\tget graphics():Graphics\n\t{\n\t\treturn this._graphics;\n\t}\n\n\t/**\n\t * Creates a new Shape object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n}\n\nexport = Shape;","import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport NullBounds\t\t\t\t\t= require(\"awayjs-core/lib/bounds/NullBounds\");\nimport UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport CubeTextureBase\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport SkyboxNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/SkyboxNode\");\nimport IRendererPool\t\t\t\t= require(\"awayjs-display/lib/pool/IRendererPool\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A Skybox class is used to render a sky in the scene. It's always considered static and 'at infinity', and as\n * such it's always centered at the camera's position and sized to exactly fit within the camera's frustum, ensuring\n * the sky box is always as large as possible without being clipped.\n */\nclass Skybox extends DisplayObject implements IEntity, IRenderableOwner, IRenderObjectOwner\n{\n\tprivate _cubeMap:CubeTextureBase;\n\tpublic _pAlphaThreshold:number = 0;\n\tprivate _animationSet:IAnimationSet;\n\tpublic _pLightPicker:LightPickerBase;\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\tprivate _renderObjects:Array = new Array();\n\tprivate _renderables:Array = new Array();\n\tprivate _uvTransform:UVTransform;\n\tprivate _owners:Array;\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\t\n\tprivate _material:MaterialBase;\n\tprivate _animator:IAnimator;\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pIinvalidatePasses();\n\t}\n\t\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pIinvalidatePasses()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidatePasses();\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\tpublic get animator():IAnimator\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get uvTransform():UVTransform\n\t{\n\t\treturn this._uvTransform;\n\t}\n\n\tpublic set uvTransform(value:UVTransform)\n\t{\n\t\tthis._uvTransform = value;\n\t}\n\n\t/**\n\t* The cube texture to use as the skybox.\n\t*/\n\tpublic get cubeMap():CubeTextureBase\n\t{\n\t\treturn this._cubeMap;\n\t}\n\n\tpublic set cubeMap(value:CubeTextureBase)\n\t{\n\t\tif (value && this._cubeMap && (value.hasMipmaps != this._cubeMap.hasMipmaps || value.format != this._cubeMap.format))\n\t\t\tthis._pInvalidateRenderObject();\n\n\t\tthis._cubeMap = value;\n\t}\n\n\t/**\n\t * Create a new Skybox object.\n\t *\n\t * @param material\tThe material with which to render the Skybox.\n\t */\n\tconstructor(cubeMap:CubeTextureBase = null)\n\t{\n\t\tsuper();\n\n\t\tthis._pIsEntity = true;\n\t\tthis._owners = new Array(this);\n\n\t\tthis.cubeMap = cubeMap;\n\t}\n\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.SKYBOX;\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateBounds()\n\t{\n\t\t// dead end\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateEntityPartitionNode():SkyboxNode\n\t{\n\t\treturn new SkyboxNode(this);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pCreateDefaultBoundingVolume():BoundingVolumeBase\n\t{\n\t\treturn new NullBounds();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pUpdateBounds()\n\t{\n\t\tthis._pBoundsInvalid = false;\n\t}\n\n\tpublic get castsShadows():boolean\n\t{\n\t\treturn false; //TODO\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\n\t\tvar len:number = this._renderables.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderables[i].dispose();\n\n\t\tthis._renderables = new Array();\n\t}\n\n\tpublic _iCollectRenderables(rendererPool:IRendererPool)\n\t{\n\t\t//skybox do not get collected in the standard entity list\n\t}\n\n\tpublic _iCollectRenderable(rendererPool:IRendererPool)\n\t{\n\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iAddRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tthis._renderables.push(renderable);\n\n\t\treturn renderable;\n\t}\n\n\n\tpublic _iRemoveRenderable(renderable:IRenderable):IRenderable\n\t{\n\t\tvar index:number = this._renderables.indexOf(renderable);\n\n\t\tthis._renderables.splice(index, 1);\n\n\t\treturn renderable;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool)\n\t{\n\t\treturn renderablePool.getSkyboxRenderObject(this);\n\t}\n}\n\nexport = Skybox;","import Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport AntiAliasType\t\t\t\t= require(\"awayjs-display/lib/text/AntiAliasType\");\nimport GridFitType\t\t\t\t\t= require(\"awayjs-display/lib/text/GridFitType\");\nimport TextFieldAutoSize\t\t\t= require(\"awayjs-display/lib/text/TextFieldAutoSize\");\nimport TextFieldType\t\t\t\t= require(\"awayjs-display/lib/text/TextFieldType\");\nimport TextFormat\t\t\t\t\t= require(\"awayjs-display/lib/text/TextFormat\");\nimport TextInteractionMode\t\t\t= require(\"awayjs-display/lib/text/TextInteractionMode\");\nimport TextLineMetrics\t\t\t\t= require(\"awayjs-display/lib/text/TextLineMetrics\");\n\n/**\n * The TextField class is used to create display objects for text display and\n * input. You can use the TextField class to\n * perform low-level text rendering. However, in Flex, you typically use the\n * Label, Text, TextArea, and TextInput controls to process text. You can give a text field an instance name in the\n * Property inspector and use the methods and properties of the TextField\n * class to manipulate it with ActionScript. TextField instance names are\n * displayed in the Movie Explorer and in the Insert Target Path dialog box in\n * the Actions panel.\n *\n *

To create a text field dynamically, use the TextField()\n * constructor.

\n *\n *

The methods of the TextField class let you set, select, and manipulate\n * text in a dynamic or input text field that you create during authoring or\n * at runtime.

\n *\n *

ActionScript provides several ways to format your text at runtime. The\n * TextFormat class lets you set character and paragraph formatting for\n * TextField objects. You can apply Cascading Style Sheets(CSS) styles to\n * text fields by using the TextField.styleSheet property and the\n * StyleSheet class. You can use CSS to style built-in HTML tags, define new\n * formatting tags, or apply styles. You can assign HTML formatted text, which\n * optionally uses CSS styles, directly to a text field. HTML text that you\n * assign to a text field can contain embedded media(movie clips, SWF files,\n * GIF files, PNG files, and JPEG files). The text wraps around the embedded\n * media in the same way that a web browser wraps text around media embedded\n * in an HTML document.

\n *\n *

Flash Player supports a subset of HTML tags that you can use to format\n * text. See the list of supported HTML tags in the description of the\n * htmlText property.

\n * \n * @event change Dispatched after a control value is\n * modified, unlike the\n * textInput event, which is\n * dispatched before the value is modified.\n * Unlike the W3C DOM Event Model version of\n * the change event, which\n * dispatches the event only after the\n * control loses focus, the ActionScript 3.0\n * version of the change event\n * is dispatched any time the control\n * changes. For example, if a user types text\n * into a text field, a change\n * event is dispatched after every keystroke.\n * @event link Dispatched when a user clicks a hyperlink\n * in an HTML-enabled text field, where the\n * URL begins with \"event:\". The remainder of\n * the URL after \"event:\" is placed in the\n * text property of the LINK event.\n *\n *

Note: The default behavior,\n * adding the text to the text field, occurs\n * only when Flash Player generates the\n * event, which in this case happens when a\n * user attempts to input text. You cannot\n * put text into a text field by sending it\n * textInput events.

\n * @event scroll Dispatched by a TextField object\n * after the user scrolls.\n * @event textInput Flash Player dispatches the\n * textInput event when a user\n * enters one or more characters of text.\n * Various text input methods can generate\n * this event, including standard keyboards,\n * input method editors(IMEs), voice or\n * speech recognition systems, and even the\n * act of pasting plain text with no\n * formatting or style information.\n * @event textInteractionModeChange Flash Player dispatches the\n * textInteractionModeChange\n * event when a user changes the interaction\n * mode of a text field. for example on\n * Android, one can toggle from NORMAL mode\n * to SELECTION mode using context menu\n * options\n */\nclass TextField extends DisplayObject\n{\n\tprivate _bottomScrollV:number;\n\tprivate _caretIndex:number;\n\tprivate _length:number;\n\tprivate _maxScrollH:number;\n\tprivate _maxScrollV:number;\n\tprivate _numLines:number;\n\tprivate _selectionBeginIndex:number;\n\tprivate _selectionEndIndex:number;\n\tprivate _text:string = \"\";\n\tprivate _textHeight:number;\n\tprivate _textInteractionMode:TextInteractionMode;\n\tprivate _textWidth:number;\n\n\tprivate _charBoundaries:Rectangle;\n\tprivate _charIndexAtPoint:number;\n\tprivate _firstCharInParagraph:number;\n\tprivate _imageReference:DisplayObject\n\tprivate _lineIndexAtPoint:number;\n\tprivate _lineIndexOfChar:number;\n\tprivate _lineLength:number;\n\tprivate _lineMetrics:TextLineMetrics;\n\tprivate _lineOffset:number;\n\tprivate _lineText:string;\n\tprivate _paragraphLength:number;\n\tprivate _textFormat:TextFormat;\n\n\t/**\n\t * When set to true and the text field is not in focus, Flash\n\t * Player highlights the selection in the text field in gray. When set to\n\t * false and the text field is not in focus, Flash Player does\n\t * not highlight the selection in the text field.\n\t * \n\t * @default false\n\t */\n\tpublic alwaysShowSelection:boolean\n\n\t/**\n\t * The type of anti-aliasing used for this text field. Use\n\t * flash.text.AntiAliasType constants for this property. You can\n\t * control this setting only if the font is embedded(with the\n\t * embedFonts property set to true). The default\n\t * setting is flash.text.AntiAliasType.NORMAL.\n\t *\n\t *

To set values for this property, use the following string values:

\n\t */\n\tpublic antiAliasType:AntiAliasType;\n\n\t/**\n\t * Controls automatic sizing and alignment of text fields. Acceptable values\n\t * for the TextFieldAutoSize constants:\n\t * TextFieldAutoSize.NONE(the default),\n\t * TextFieldAutoSize.LEFT, TextFieldAutoSize.RIGHT,\n\t * and TextFieldAutoSize.CENTER.\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.NONE\n\t * (the default) no resizing occurs.

\n\t *\n\t *

If autoSize is set to TextFieldAutoSize.LEFT,\n\t * the text is treated as left-justified text, meaning that the left margin\n\t * of the text field remains fixed and any resizing of a single line of the\n\t * text field is on the right margin. If the text includes a line break(for\n\t * example, \"\\n\" or \"\\r\"), the bottom is also\n\t * resized to fit the next line of text. If wordWrap is also set\n\t * to true, only the bottom of the text field is resized and the\n\t * right side remains fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.RIGHT, the text is treated as\n\t * right-justified text, meaning that the right margin of the text field\n\t * remains fixed and any resizing of a single line of the text field is on\n\t * the left margin. If the text includes a line break(for example,\n\t * \"\\n\" or \"\\r\"), the bottom is also resized to fit the next\n\t * line of text. If wordWrap is also set to true,\n\t * only the bottom of the text field is resized and the left side remains\n\t * fixed.

\n\t *\n\t *

If autoSize is set to\n\t * TextFieldAutoSize.CENTER, the text is treated as\n\t * center-justified text, meaning that any resizing of a single line of the\n\t * text field is equally distributed to both the right and left margins. If\n\t * the text includes a line break(for example, \"\\n\" or\n\t * \"\\r\"), the bottom is also resized to fit the next line of\n\t * text. If wordWrap is also set to true, only the\n\t * bottom of the text field is resized and the left and right sides remain\n\t * fixed.

\n\t * \n\t * @throws ArgumentError The autoSize specified is not a member\n\t * of flash.text.TextFieldAutoSize.\n\t */\n\tpublic autoSize:TextFieldAutoSize;\n\n\t/**\n\t * Specifies whether the text field has a background fill. If\n\t * true, the text field has a background fill. If\n\t * false, the text field has no background fill. Use the\n\t * backgroundColor property to set the background color of a\n\t * text field.\n\t * \n\t * @default false\n\t */\n\tpublic background:boolean;\n\n\t/**\n\t * The color of the text field background. The default value is\n\t * 0xFFFFFF(white). This property can be retrieved or set, even\n\t * if there currently is no background, but the color is visible only if the\n\t * text field has the background property set to\n\t * true.\n\t */\n\tpublic backgroundColor:number /*int*/;\n\n\t/**\n\t * Specifies whether the text field has a border. If true, the\n\t * text field has a border. If false, the text field has no\n\t * border. Use the borderColor property to set the border color.\n\t * \n\t * @default false\n\t */\n\tpublic border:boolean;\n\n\t/**\n\t * The color of the text field border. The default value is\n\t * 0x000000(black). This property can be retrieved or set, even\n\t * if there currently is no border, but the color is visible only if the text\n\t * field has the border property set to true.\n\t */\n\tpublic borderColor:number /*int*/;\n\n\t/**\n\t * An integer(1-based index) that indicates the bottommost line that is\n\t * currently visible in the specified text field. Think of the text field as\n\t * a window onto a block of text. The scrollV property is the\n\t * 1-based index of the topmost visible line in the window.\n\t *\n\t *

All the text between the lines indicated by scrollV and\n\t * bottomScrollV is currently visible in the text field.

\n\t */\n\tpublic get bottomScrollV():number /*int*/\n\t{\n\t\treturn this._bottomScrollV;\n\t}\n\n\t/**\n\t * The index of the insertion point(caret) position. If no insertion point\n\t * is displayed, the value is the position the insertion point would be if\n\t * you restored focus to the field(typically where the insertion point last\n\t * was, or 0 if the field has not had focus).\n\t *\n\t *

Selection span indexes are zero-based(for example, the first position\n\t * is 0, the second position is 1, and so on).

\n\t */\n\tpublic get caretIndex():number /*int*/\n\t{\n\t\treturn this._caretIndex;\n\t}\n\n\t/**\n\t * A Boolean value that specifies whether extra white space(spaces, line\n\t * breaks, and so on) in a text field with HTML text is removed. The default\n\t * value is false. The condenseWhite property only\n\t * affects text set with the htmlText property, not the\n\t * text property. If you set text with the text\n\t * property, condenseWhite is ignored.\n\t *\n\t *

If condenseWhite is set to true, use standard\n\t * HTML commands such as
and

to place line\n\t * breaks in the text field.

\n\t *\n\t *

Set the condenseWhite property before setting the\n\t * htmlText property.

\n\t */\n\tpublic condenseWhite:boolean;\n\n\t/**\n\t * Specifies the format applied to newly inserted text, such as text entered\n\t * by a user or text inserted with the replaceSelectedText()\n\t * method.\n\t *\n\t *

Note: When selecting characters to be replaced with\n\t * setSelection() and replaceSelectedText(), the\n\t * defaultTextFormat will be applied only if the text has been\n\t * selected up to and including the last character. Here is an example:

\n\t *
 public my_txt:TextField new TextField();\n\t * my_txt.text = \"Flash Macintosh version\"; public my_fmt:TextFormat = new\n\t * TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt;\n\t * my_txt.setSelection(6,15); // partial text selected - defaultTextFormat\n\t * not applied my_txt.setSelection(6,23); // text selected to end -\n\t * defaultTextFormat applied my_txt.replaceSelectedText(\"Windows version\");\n\t * 
\n\t *\n\t *

When you access the defaultTextFormat property, the\n\t * returned TextFormat object has all of its properties defined. No property\n\t * is null.

\n\t *\n\t *

Note: You can't set this property if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic defaultTextFormat:TextFormat;\n\n\t/**\n\t * Specifies whether the text field is a password text field. If the value of\n\t * this property is true, the text field is treated as a\n\t * password text field and hides the input characters using asterisks instead\n\t * of the actual characters. If false, the text field is not\n\t * treated as a password text field. When password mode is enabled, the Cut\n\t * and Copy commands and their corresponding keyboard shortcuts will not\n\t * function. This security mechanism prevents an unscrupulous user from using\n\t * the shortcuts to discover a password on an unattended computer.\n\t * \n\t * @default false\n\t */\n\tpublic displayAsPassword:boolean;\n\n\t/**\n\t * Specifies whether to render by using embedded font outlines. If\n\t * false, Flash Player renders the text field by using device\n\t * fonts.\n\t *\n\t *

If you set the embedFonts property to true\n\t * for a text field, you must specify a font for that text by using the\n\t * font property of a TextFormat object applied to the text\n\t * field. If the specified font is not embedded in the SWF file, the text is\n\t * not displayed.

\n\t * \n\t * @default false\n\t */\n\tpublic embedFonts:boolean;\n\n\t/**\n\t * The type of grid fitting used for this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED.\n\t *\n\t *

The type of grid fitting used determines whether Flash Player forces\n\t * strong horizontal and vertical lines to fit to a pixel or subpixel grid,\n\t * or not at all.

\n\t *\n\t *

For the flash.text.GridFitType property, you can use the\n\t * following string values:

\n\t * \n\t * @default pixel\n\t */\n\tpublic gridFitType:GridFitType;\n\n\t/**\n\t * Contains the HTML representation of the text field contents.\n\t *\n\t *

Flash Player supports the following HTML tags:

\n\t *\n\t *

Flash Player and AIR also support explicit character codes, such as\n\t * &(ASCII ampersand) and €(Unicode € symbol).

\n\t */\n\tpublic htmlText:string;\n\n\t/**\n\t * The number of characters in a text field. A character such as tab\n\t * (\\t) counts as one character.\n\t */\n\tpublic get length():number /*int*/\n\t{\n\t\treturn this._length;\n\t}\n\n\t/**\n\t * The maximum number of characters that the text field can contain, as\n\t * entered by a user. A script can insert more text than\n\t * maxChars allows; the maxChars property indicates\n\t * only how much text a user can enter. If the value of this property is\n\t * 0, a user can enter an unlimited amount of text.\n\t * \n\t * @default 0\n\t */\n\tpublic maxChars:number /*int*/;\n\n\t/**\n\t * The maximum value of scrollH.\n\t */\n\tpublic maxScrollH():number /*int*/\n\t{\n\t\treturn this._maxScrollH;\n\t}\n\n\t/**\n\t * The maximum value of scrollV.\n\t */\n\tpublic maxScrollV():number /*int*/\n\t{\n\t\treturn this._maxScrollV;\n\t}\n\n\t/**\n\t * A Boolean value that indicates whether Flash Player automatically scrolls\n\t * multiline text fields when the user clicks a text field and rolls the\n\t * mouse wheel. By default, this value is true. This property is\n\t * useful if you want to prevent mouse wheel scrolling of text fields, or\n\t * implement your own text field scrolling.\n\t */\n\tpublic mouseWheelEnabled:boolean;\n\n\t/**\n\t * Indicates whether field is a multiline text field. If the value is\n\t * true, the text field is multiline; if the value is\n\t * false, the text field is a single-line text field. In a field\n\t * of type TextFieldType.INPUT, the multiline value\n\t * determines whether the Enter key creates a new line(a value\n\t * of false, and the Enter key is ignored). If you\n\t * paste text into a TextField with a multiline\n\t * value of false, newlines are stripped out of the text.\n\t * \n\t * @default false\n\t */\n\tpublic multiline:boolean;\n\n\t/**\n\t * Defines the number of text lines in a multiline text field. If\n\t * wordWrap property is set to true, the number of\n\t * lines increases when text wraps.\n\t */\n\tpublic get numLines():number /*int*/\n\t{\n\t\treturn this._numLines;\n\t}\n\n\t/**\n\t * Indicates the set of characters that a user can enter into the text field.\n\t * If the value of the restrict property is null,\n\t * you can enter any character. If the value of the restrict\n\t * property is an empty string, you cannot enter any character. If the value\n\t * of the restrict property is a string of characters, you can\n\t * enter only characters in the string into the text field. The string is\n\t * scanned from left to right. You can specify a range by using the hyphen\n\t * (-) character. Only user interaction is restricted; a script can put any\n\t * text into the text field. This property does\n\t * not synchronize with the Embed font options in the Property inspector.\n\t *\n\t *

If the string begins with a caret(^) character, all characters are\n\t * initially accepted and succeeding characters in the string are excluded\n\t * from the set of accepted characters. If the string does not begin with a\n\t * caret(^) character, no characters are initially accepted and succeeding\n\t * characters in the string are included in the set of accepted\n\t * characters.

\n\t *\n\t *

The following example allows only uppercase characters, spaces, and\n\t * numbers to be entered into a text field:

\n\t *
 my_txt.restrict = \"A-Z 0-9\"; 
\n\t *\n\t *

The following example includes all characters, but excludes lowercase\n\t * letters:

\n\t *
 my_txt.restrict = \"^a-z\"; 
\n\t *\n\t *

You can use a backslash to enter a ^ or - verbatim. The accepted\n\t * backslash sequences are \\-, \\^ or \\\\. The backslash must be an actual\n\t * character in the string, so when specified in ActionScript, a double\n\t * backslash must be used. For example, the following code includes only the\n\t * dash(-) and caret(^):

\n\t *
 my_txt.restrict = \"\\\\-\\\\^\"; 
\n\t *\n\t *

The ^ can be used anywhere in the string to toggle between including\n\t * characters and excluding characters. The following code includes only\n\t * uppercase letters, but excludes the uppercase letter Q:

\n\t *
 my_txt.restrict = \"A-Z^Q\"; 
\n\t *\n\t *

You can use the \\u escape sequence to construct\n\t * restrict strings. The following code includes only the\n\t * characters from ASCII 32(space) to ASCII 126(tilde).

\n\t *
 my_txt.restrict = \"\\u0020-\\u007E\"; 
\n\t * \n\t * @default null\n\t */\n\tpublic restrict:string;\n\n\t/**\n\t * The current horizontal scrolling position. If the scrollH\n\t * property is 0, the text is not horizontally scrolled. This property value\n\t * is an integer that represents the horizontal position in pixels.\n\t *\n\t *

The units of horizontal scrolling are pixels, whereas the units of\n\t * vertical scrolling are lines. Horizontal scrolling is measured in pixels\n\t * because most fonts you typically use are proportionally spaced; that is,\n\t * the characters can have different widths. Flash Player performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if a line uses multiple fonts, the\n\t * height of the line adjusts to fit the largest font in use.

\n\t *\n\t *

Note: The scrollH property is zero-based, not\n\t * 1-based like the scrollV vertical scrolling property.

\n\t */\n\tpublic scrollH:number;\n\n\t/**\n\t * The vertical position of text in a text field. The scrollV\n\t * property is useful for directing users to a specific paragraph in a long\n\t * passage, or creating scrolling text fields.\n\t *\n\t *

The units of vertical scrolling are lines, whereas the units of\n\t * horizontal scrolling are pixels. If the first line displayed is the first\n\t * line in the text field, scrollV is set to 1(not 0). Horizontal scrolling\n\t * is measured in pixels because most fonts are proportionally spaced; that\n\t * is, the characters can have different widths. Flash performs vertical\n\t * scrolling by line because users usually want to see a complete line of\n\t * text rather than a partial line. Even if there are multiple fonts on a\n\t * line, the height of the line adjusts to fit the largest font in use.

\n\t */\n\tpublic scrollV:number;\n\n\t/**\n\t * A Boolean value that indicates whether the text field is selectable. The\n\t * value true indicates that the text is selectable. The\n\t * selectable property controls whether a text field is\n\t * selectable, not whether a text field is editable. A dynamic text field can\n\t * be selectable even if it is not editable. If a dynamic text field is not\n\t * selectable, the user cannot select its text.\n\t *\n\t *

If selectable is set to false, the text in\n\t * the text field does not respond to selection commands from the mouse or\n\t * keyboard, and the text cannot be copied with the Copy command. If\n\t * selectable is set to true, the text in the text\n\t * field can be selected with the mouse or keyboard, and the text can be\n\t * copied with the Copy command. You can select text this way even if the\n\t * text field is a dynamic text field instead of an input text field.

\n\t * \n\t * @default true\n\t */\n\tpublic selectable:boolean;\n\n\t/**\n\t * The zero-based character index value of the first character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionBeginIndex():number /*int*/\n\t{\n\t\treturn this._selectionBeginIndex;\n\t}\n\n\t/**\n\t * The zero-based character index value of the last character in the current\n\t * selection. For example, the first character is 0, the second character is\n\t * 1, and so on. If no text is selected, this property is the value of\n\t * caretIndex.\n\t */\n\tpublic get selectionEndIndex():number /*int*/\n\t{\n\t\treturn this._selectionEndIndex;\n\t}\n\n\t/**\n\t * The sharpness of the glyph edges in this text field. This property applies\n\t * only if the flash.text.AntiAliasType property of the text\n\t * field is set to flash.text.AntiAliasType.ADVANCED. The range\n\t * for sharpness is a number from -400 to 400. If you attempt to\n\t * set sharpness to a value outside that range, Flash sets the\n\t * property to the nearest value in the range(either -400 or 400).\n\t * \n\t * @default 0\n\t */\n\tpublic sharpness:number;\n\n\t/**\n\t * Attaches a style sheet to the text field. For information on creating\n\t * style sheets, see the StyleSheet class and the ActionScript 3.0\n\t * Developer's Guide.\n\t *\n\t *

You can change the style sheet associated with a text field at any\n\t * time. If you change the style sheet in use, the text field is redrawn with\n\t * the new style sheet. You can set the style sheet to null or\n\t * undefined to remove the style sheet. If the style sheet in\n\t * use is removed, the text field is redrawn without a style sheet.

\n\t *\n\t *

Note: If the style sheet is removed, the contents of both\n\t * TextField.text and TextField.htmlText change to\n\t * incorporate the formatting previously applied by the style sheet. To\n\t * preserve the original TextField.htmlText contents without the\n\t * formatting, save the value in a variable before removing the style\n\t * sheet.

\n\t */\n\tpublic styleSheet:StyleSheet;\n\n\t/**\n\t * A string that is the current text in the text field. Lines are separated\n\t * by the carriage return character('\\r', ASCII 13). This\n\t * property contains unformatted text in the text field, without HTML tags.\n\t *\n\t *

To get the text in HTML form, use the htmlText\n\t * property.

\n\t */\n\tpublic get text():string\n\t{\n\t\treturn this._text;\n\t}\n\n\tpublic set text(value:string)\n\t{\n\t\tif (this._text == value)\n\t\t\treturn;\n\n\t\tthis._text = value;\n\t}\n\n\t/**\n\t * The color of the text in a text field, in hexadecimal format. The\n\t * hexadecimal color system uses six digits to represent color values. Each\n\t * digit has 16 possible values or characters. The characters range from 0-9\n\t * and then A-F. For example, black is 0x000000; white is\n\t * 0xFFFFFF.\n\t * \n\t * @default 0(0x000000)\n\t */\n\tpublic textColor:number /*int*/;\n\n\t/**\n\t * The height of the text in pixels.\n\t */\n\tpublic get textHeight():number\n\t{\n\t\treturn this._textHeight;\n\t}\n\n\t/**\n\t * The interaction mode property, Default value is\n\t * TextInteractionMode.NORMAL. On mobile platforms, the normal mode implies\n\t * that the text can be scrolled but not selected. One can switch to the\n\t * selectable mode through the in-built context menu on the text field. On\n\t * Desktop, the normal mode implies that the text is in scrollable as well as\n\t * selection mode.\n\t */\n\tpublic get textInteractionMode():TextInteractionMode\n\t{\n\t\treturn this._textInteractionMode;\n\t}\n\n\t/**\n\t * The width of the text in pixels.\n\t */\n\tpublic get textWidth():number\n\t{\n\t\treturn this._textWidth;\n\t}\n\n\t/**\n\t * The thickness of the glyph edges in this text field. This property applies\n\t * only when AntiAliasType is set to\n\t * AntiAliasType.ADVANCED.\n\t *\n\t *

The range for thickness is a number from -200 to 200. If\n\t * you attempt to set thickness to a value outside that range,\n\t * the property is set to the nearest value in the range(either -200 or\n\t * 200).

\n\t * \n\t * @default 0\n\t */\n\tpublic thickness:number;\n\n\t/**\n\t * The type of the text field. Either one of the following TextFieldType\n\t * constants: TextFieldType.DYNAMIC, which specifies a dynamic\n\t * text field, which a user cannot edit, or TextFieldType.INPUT,\n\t * which specifies an input text field, which a user can edit.\n\t * \n\t * @default dynamic\n\t * @throws ArgumentError The type specified is not a member of\n\t * flash.text.TextFieldType.\n\t */\n\tpublic type:TextFieldType;\n\n\t/**\n\t * Specifies whether to copy and paste the text formatting along with the\n\t * text. When set to true, Flash Player copies and pastes\n\t * formatting(such as alignment, bold, and italics) when you copy and paste\n\t * between text fields. Both the origin and destination text fields for the\n\t * copy and paste procedure must have useRichTextClipboard set\n\t * to true. The default value is false.\n\t */\n\tpublic useRichTextClipboard:boolean;\n\n\t/**\n\t * A Boolean value that indicates whether the text field has word wrap. If\n\t * the value of wordWrap is true, the text field\n\t * has word wrap; if the value is false, the text field does not\n\t * have word wrap. The default value is false.\n\t */\n\tpublic wordWrap:boolean;\n\n\t/**\n\t * Creates a new TextField instance. After you create the TextField instance,\n\t * call the addChild() or addChildAt() method of\n\t * the parent DisplayObjectContainer object to add the TextField instance to\n\t * the display list.\n\t *\n\t *

The default size for a text field is 100 x 100 pixels.

\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Appends the string specified by the newText parameter to the\n\t * end of the text of the text field. This method is more efficient than an\n\t * addition assignment(+=) on a text property\n\t * (such as someTextField.text += moreText), particularly for a\n\t * text field that contains a significant amount of content.\n\t * \n\t * @param newText The string to append to the existing text.\n\t */\n\tpublic appendText(newText:string)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Returns a rectangle that is the bounding box of the character.\n\t * \n\t * @param charIndex The zero-based index value for the character(for\n\t * example, the first position is 0, the second position is\n\t * 1, and so on).\n\t * @return A rectangle with x and y minimum and\n\t * maximum values defining the bounding box of the character.\n\t */\n\tpublic getCharBoundaries(charIndex:number):Rectangle\n\t{\n\t\treturn this._charBoundaries;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the character at the point specified\n\t * by the x and y parameters.\n\t * \n\t * @param x The x coordinate of the character.\n\t * @param y The y coordinate of the character.\n\t * @return The zero-based index value of the character(for example, the\n\t * first position is 0, the second position is 1, and so on). Returns\n\t * -1 if the point is not over any character.\n\t */\n\tpublic getCharIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._charIndexAtPoint;\n\t}\n\n\t/**\n\t * Given a character index, returns the index of the first character in the\n\t * same paragraph.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the first character in the same\n\t * paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getFirstCharInParagraph(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._firstCharInParagraph;\n\t}\n\n\t/**\n\t * Returns a DisplayObject reference for the given id, for an\n\t * image or SWF file that has been added to an HTML-formatted text field by\n\t * using an tag. The tag is in the\n\t * following format:\n\t *\n\t *

 

\n\t * \n\t * @param id The id to match(in the id attribute\n\t * of the tag).\n\t * @return The display object corresponding to the image or SWF file with the\n\t * matching id attribute in the tag\n\t * of the text field. For media loaded from an external source, this\n\t * object is a Loader object, and, once loaded, the media object is a\n\t * child of that Loader object. For media embedded in the SWF file,\n\t * it is the loaded object. If no tag with the\n\t * matching id exists, the method returns\n\t * null.\n\t */\n\tpublic getImageReference(id:string):DisplayObject\n\t{\n\t\treturn this._imageReference;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line at the point specified by\n\t * the x and y parameters.\n\t * \n\t * @param x The x coordinate of the line.\n\t * @param y The y coordinate of the line.\n\t * @return The zero-based index value of the line(for example, the first\n\t * line is 0, the second line is 1, and so on). Returns -1 if the\n\t * point is not over any line.\n\t */\n\tpublic getLineIndexAtPoint(x:number, y:number):number /*int*/\n\t{\n\t\treturn this._lineIndexAtPoint;\n\t}\n\n\t/**\n\t * Returns the zero-based index value of the line containing the character\n\t * specified by the charIndex parameter.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return The zero-based index value of the line.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getLineIndexOfChar(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineIndexOfChar;\n\t}\n\n\t/**\n\t * Returns the number of characters in a specific text line.\n\t * \n\t * @param lineIndex The line number for which you want the length.\n\t * @return The number of characters in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineLength(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineLength;\n\t}\n\n\t/**\n\t * Returns metrics information about a given text line.\n\t * \n\t * @param lineIndex The line number for which you want metrics information.\n\t * @return A TextLineMetrics object.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineMetrics(lineIndex:number /*int*/):TextLineMetrics\n\t{\n\t\treturn this._lineMetrics;\n\t}\n\n\t/**\n\t * Returns the character index of the first character in the line that the\n\t * lineIndex parameter specifies.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The zero-based index value of the first character in the line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineOffset(lineIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._lineOffset;\n\t}\n\n\t/**\n\t * Returns the text of the line specified by the lineIndex\n\t * parameter.\n\t * \n\t * @param lineIndex The zero-based index value of the line(for example, the\n\t * first line is 0, the second line is 1, and so on).\n\t * @return The text string contained in the specified line.\n\t * @throws RangeError The line number specified is out of range.\n\t */\n\tpublic getLineText(lineIndex:number /*int*/):string\n\t{\n\t\treturn this._lineText;\n\t}\n\n\t/**\n\t * Given a character index, returns the length of the paragraph containing\n\t * the given character. The length is relative to the first character in the\n\t * paragraph(as returned by getFirstCharInParagraph()), not to\n\t * the character index passed in.\n\t * \n\t * @param charIndex The zero-based index value of the character(for example,\n\t * the first character is 0, the second character is 1, and\n\t * so on).\n\t * @return Returns the number of characters in the paragraph.\n\t * @throws RangeError The character index specified is out of range.\n\t */\n\tpublic getParagraphLength(charIndex:number /*int*/):number /*int*/\n\t{\n\t\treturn this._paragraphLength;\n\t}\n\n\t/**\n\t * Returns a TextFormat object that contains formatting information for the\n\t * range of text that the beginIndex and endIndex\n\t * parameters specify. Only properties that are common to the entire text\n\t * specified are set in the resulting TextFormat object. Any property that is\n\t * mixed, meaning that it has different values at different points in\n\t * the text, has a value of null.\n\t *\n\t *

If you do not specify values for these parameters, this method is\n\t * applied to all the text in the text field.

\n\t *\n\t *

The following table describes three possible usages:

\n\t * \n\t * @return The TextFormat object that represents the formatting properties\n\t * for the specified text.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic getTextFormat(beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1):TextFormat\n\t{\n\t\treturn this._textFormat;\n\t}\n\n\t/**\n\t * Replaces the current selection with the contents of the value\n\t * parameter. The text is inserted at the position of the current selection,\n\t * using the current default character format and default paragraph format.\n\t * The text is not treated as HTML.\n\t *\n\t *

You can use the replaceSelectedText() method to insert and\n\t * delete text without disrupting the character and paragraph formatting of\n\t * the rest of the text.

\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param value The string to replace the currently selected text.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceSelectedText(value:string)\n\t{\n\n\t}\n\n\t/**\n\t * Replaces the range of characters that the beginIndex and\n\t * endIndex parameters specify with the contents of the\n\t * newText parameter. As designed, the text from\n\t * beginIndex to endIndex-1 is replaced.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t * \n\t * @param beginIndex The zero-based index value for the start position of the\n\t * replacement range.\n\t * @param endIndex The zero-based index position of the first character\n\t * after the desired text span.\n\t * @param newText The text to use to replace the specified range of\n\t * characters.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t */\n\tpublic replaceText(beginIndex:number /*int*/, endIndex:number /*int*/, newText:string)\n\t{\n\n\t}\n\n\t/**\n\t * Sets as selected the text designated by the index values of the first and\n\t * last characters, which are specified with the beginIndex and\n\t * endIndex parameters. If the two parameter values are the\n\t * same, this method sets the insertion point, as if you set the\n\t * caretIndex property.\n\t * \n\t * @param beginIndex The zero-based index value of the first character in the\n\t * selection(for example, the first character is 0, the\n\t * second character is 1, and so on).\n\t * @param endIndex The zero-based index value of the last character in the\n\t * selection.\n\t */\n\tpublic setSelection(beginIndex:number /*int*/, endIndex:number /*int*/)\n\t{\n\n\t}\n\n\t/**\n\t * Applies the text formatting that the format parameter\n\t * specifies to the specified text in a text field. The value of\n\t * format must be a TextFormat object that specifies the desired\n\t * text formatting changes. Only the non-null properties of\n\t * format are applied to the text field. Any property of\n\t * format that is set to null is not applied. By\n\t * default, all of the properties of a newly created TextFormat object are\n\t * set to null.\n\t *\n\t *

Note: This method does not work if a style sheet is applied to\n\t * the text field.

\n\t *\n\t *

The setTextFormat() method changes the text formatting\n\t * applied to a range of characters or to the entire body of text in a text\n\t * field. To apply the properties of format to all text in the text field, do\n\t * not specify values for beginIndex and endIndex.\n\t * To apply the properties of the format to a range of text, specify values\n\t * for the beginIndex and the endIndex parameters.\n\t * You can use the length property to determine the index\n\t * values.

\n\t *\n\t *

The two types of formatting information in a TextFormat object are\n\t * character level formatting and paragraph level formatting. Each character\n\t * in a text field can have its own character formatting settings, such as\n\t * font name, font size, bold, and italic.

\n\t *\n\t *

For paragraphs, the first character of the paragraph is examined for\n\t * the paragraph formatting settings for the entire paragraph. Examples of\n\t * paragraph formatting settings are left margin, right margin, and\n\t * indentation.

\n\t *\n\t *

Any text inserted manually by the user, or replaced by the\n\t * replaceSelectedText() method, receives the default text field\n\t * formatting for new text, and not the formatting specified for the text\n\t * insertion point. To set the default formatting for new text, use\n\t * defaultTextFormat.

\n\t * \n\t * @param format A TextFormat object that contains character and paragraph\n\t * formatting information.\n\t * @throws Error This method cannot be used on a text field with a style\n\t * sheet.\n\t * @throws RangeError The beginIndex or endIndex\n\t * specified is out of range.\n\t */\n\tpublic setTextFormat(format:TextFormat, beginIndex:number /*int*/ = -1, endIndex:number /*int*/ = -1)\n\t{\n\n\t}\n\n\t/**\n\t * Returns true if an embedded font is available with the specified\n\t * fontName and fontStyle where\n\t * Font.fontType is flash.text.FontType.EMBEDDED.\n\t * Starting with Flash Player 10, two kinds of embedded fonts can appear in a\n\t * SWF file. Normal embedded fonts are only used with TextField objects. CFF\n\t * embedded fonts are only used with the flash.text.engine classes. The two\n\t * types are distinguished by the fontType property of the\n\t * Font class, as returned by the enumerateFonts()\n\t * function.\n\t *\n\t *

TextField cannot use a font of type EMBEDDED_CFF. If\n\t * embedFonts is set to true and the only font\n\t * available at run time with the specified name and style is of type\n\t * EMBEDDED_CFF, Flash Player fails to render the text, as if no\n\t * embedded font were available with the specified name and style.

\n\t *\n\t *

If both EMBEDDED and EMBEDDED_CFF fonts are\n\t * available with the same name and style, the EMBEDDED font is\n\t * selected and text renders with the EMBEDDED font.

\n\t * \n\t * @param fontName The name of the embedded font to check.\n\t * @param fontStyle Specifies the font style to check. Use\n\t * flash.text.FontStyle\n\t * @return true if a compatible embedded font is available,\n\t * otherwise false.\n\t * @throws ArgumentError The fontStyle specified is not a member\n\t * of flash.text.FontStyle.\n\t */\n\tpublic static isFontCompatible(fontName:string, fontStyle:string):boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = TextField;","import UVTransform\t\t\t\t\t= require(\"awayjs-core/lib/geom/UVTransform\");\r\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\r\nimport IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\n//import Transform\t\t\t\t = require(\"awayjs-core/lib/geom/Transform\");\r\nimport Matrix3D\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix3D\");\r\nimport Matrix\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix\");\r\n\r\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\r\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\r\nimport SubGeometry\t\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\r\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\r\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\r\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\r\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\r\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\r\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\r\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\r\nimport DisplayObjectContainer\t\t = require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\r\nimport TimeLineFrame\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineFrame\");\r\nimport TimeLineObject\t\t = require(\"awayjs-display/lib/entities/timelinedata/TimeLineObject\");\r\n\r\n/**\r\n * Timeline is a DisplayObjectContainer, that can control the animation of a list of TimeLineObjects.\r\n * For now, the focus of Development is on animating the new type of 2D-Geometry exported from FlashPro,\r\n * but there is no reason that this cannot be used to animate any type of object, that implements IAsset.\r\n**/\r\nclass TimeLine extends DisplayObjectContainer\r\n{\r\n // pool of available TimeLineObject-objects for this timeline.\r\n // Each TImeLineObject hold reference to a pre-instanced (cloned) IAsset,\r\n // so we do not have to do any cloning while playing.\r\n // If a IAsset is of a type that extends DisplayObject, it gets added as Child, with .visible=false\r\n // we need this list, and can not use the children-list directly,\r\n // because TimeLine needs to be able to control IAsset that to not extend DisplayObject.\r\n private _timeLineObjs:Array;\r\n\r\n private _frames:Array;\r\n private _time:number;// the current time inside the animation\r\n private _currentFrame:number;// the current frame\r\n private _speed:number;// the speed of animation. for now keep it positive, as reverse playing will need changes to the commands\r\n private _fps:number;// we use ms internally, but have fps, so user can set time by frame\r\n private _isplaying:boolean;// false if paused or stopped\r\n private _isInit:boolean;// false if paused or stopped\r\n private _playMode:number;// 0: normal, 1: loop, 2: pingpong\r\n private _duration:number=0;\r\n\r\n constructor()\r\n {\r\n super();\r\n this._timeLineObjs=new Array();\r\n this._frames=new Array();\r\n this._currentFrame=0;\r\n this._speed=1.0;\r\n this._isplaying=false;\r\n this._fps=25;\r\n this._time=0;\r\n this._duration=0;\r\n this._playMode=1;\r\n }\r\n\r\n public get speed():number\r\n {\r\n return this._speed;\r\n }\r\n public set speed(newSpeed:number)\r\n {\r\n this._speed=newSpeed;\r\n }\r\n public get fps():number\r\n {\r\n return this._fps;\r\n }\r\n public set fps(newFps:number)\r\n {\r\n this._fps=newFps;\r\n }\r\n public get assetType():string\r\n {\r\n return AssetType.TIMELINE;\r\n }\r\n\r\n /**\r\n * should be called right before the call to away3d-render.\r\n */\r\n public update(timeDelta:number, jumpingToFrame:boolean=false)\r\n {\r\n var tlo:number;\r\n // only update if playing, or if not init before, or if jumping to frame\r\n if((this._isplaying)||(!this._isInit)||(jumpingToFrame)) {\r\n\r\n // multiply the timeDelta with the speed (can be negative)\r\n // update the this._time accordingly\r\n var timeDelta:number = timeDelta * this._speed;\r\n this._time += timeDelta;\r\n // take care that the _time is within bounds\r\n while(this._time>this._duration){\r\n if(this._playMode==0){\r\n this._time=this._duration;\r\n this.stop();\r\n }\r\n else if(this._playMode==1){\r\n this._time-=this._duration;\r\n }\r\n }\r\n while(this._time<0){\r\n if(this._playMode==0){\r\n this._time=0;\r\n this.stop();\r\n }\r\n else if(this._playMode==1) {\r\n this._time += this._duration;\r\n }\r\n }\r\n\r\n\r\n // now we know the exact time of the animation that we want to display.\r\n // next we need to decide which Frame needs to be displayed. (index in Array)\r\n // this should always be currentFrame, or currentFrame++\r\n // each frame has startTime and EndTime, so we can easily decide\r\n var frameCnt:number = 0;\r\n var curFrame:TimeLineFrame;\r\n var foundFrame:Boolean = false;\r\n // this while loop should only be executed 1-2 times\r\n while (frameCnt < this._frames.length) {\r\n curFrame = this._frames[this._currentFrame];\r\n //console.log(\"searchForFrame==\"+this._time+\" startTime= \"+curFrame.startTime+\" endTime = \"+curFrame.endTime);\r\n\r\n if ((this._time >= curFrame.startTime) && (this._time <= curFrame.endTime)) {\r\n foundFrame = true;\r\n frameCnt = this._frames.length;\r\n }\r\n else {\r\n curFrame.makeDirty();// make sure the frame gets executed next time it should show\r\n if (this._speed < 0) {\r\n this._currentFrame--;\r\n if (this._currentFrame < 0) {\r\n this._currentFrame = this._frames.length - 1;\r\n }\r\n }\r\n else {\r\n this._currentFrame++;\r\n if (this._currentFrame >= this._frames.length) {\r\n this._currentFrame = 0;\r\n }\r\n }\r\n }\r\n frameCnt++;\r\n }\r\n //console.log(\"foundframe=\"+foundFrame+\" thistime= \"+this._time+\" frameIDX = \"+this._currentFrame);\r\n\r\n // if foundFrame is true, curFrame is the frame to display.\r\n if (foundFrame) {\r\n //console.log(\"Frame dirty=\"+curFrame.isDirty);\r\n if(curFrame.isDirty) {\r\n //console.log(\"Reset isOnStage value\");\r\n // reset the \"isOnStage\" state for all the objects\r\n\r\n var commandSet:number=1;// 1 = execute normal playback commands\r\n if(this._speed<0){\r\n commandSet=2;//2 = execute reversed playback commands\r\n }\r\n // if we are jumping Frames, we need to hide all objects and fully init\r\n //if(jumpingToFrame) {\r\n commandSet = 0;//0 = execute full init frame commands\r\n for (tlo = 0; tlo < this._timeLineObjs.length; tlo++) {\r\n if (this._timeLineObjs[tlo].isActive) {\r\n this._timeLineObjs[tlo].deactivate();\r\n }\r\n }\r\n // }\r\n //todo: use the correct set of commands (for now we always use set 1)\r\n curFrame.executeCommands(1, this._time, this._speed);\r\n\r\n // now we have all objects on stage, we can execute the frame script for this frame\r\n this.executeFrameScript(curFrame.script);\r\n\r\n }\r\n else{\r\n // the frame has already been initiated.\r\n // for now we do nothing\r\n // later we might want to implement interpolation here\r\n }\r\n }\r\n this._isInit=true;\r\n }\r\n // update all the visible TimeLineObjects that are of type timeline\r\n for (tlo=0; tlothis._timeLineObjs[tlo].asset).update(timeDelta);\r\n }\r\n }\r\n }\r\n\r\n }\r\n /**\r\n * Add a new TimeLineFrame.\r\n */\r\n public addFrame(newFrame:TimeLineFrame)\r\n {\r\n this._duration+=newFrame.duration;\r\n this._frames.push(newFrame);\r\n }\r\n public get duration():number\r\n {\r\n return this._duration;\r\n }\r\n public set duration(newDuration:number)\r\n {\r\n this._duration=newDuration;\r\n }\r\n /**\r\n * This is called inside the TimeLineFrame.execute() function.\r\n */\r\n public executeFrameScript(frameScript:string)\r\n {\r\n\r\n // this function should interpret the framescript.\r\n // the timeline object offer functions getObjectByInstanceName(instanceName:string)\r\n // a nested movieClip like \"mainWindow.clip1\" could be accessed like this:\r\n // getObjectByInstanceName(\"mainWindow\").getObjectByInstanceName(\"clip1\")\r\n\r\n // the AssetLibrary can be used as equivalent for the flash-library.\r\n // it already has options to access library-assets by name, so i think we can work with that.\r\n\r\n }\r\n /**\r\n * Starts playback of animation from current position\r\n */\r\n public start() {\r\n this._isplaying=true;\r\n this.update(0);\r\n }\r\n /**\r\n * Stop playback of animation and hold current position\r\n */\r\n public stop() {\r\n this._isplaying=false;// no need to call any other stuff\r\n }\r\n\r\n /**\r\n * Classic gotoAndPlay like as3 api - set frame by frame-number.\r\n */\r\n public gotoAndPlay(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * Classic gotoAndStop as3 api - set frame by frame-number.\r\n */\r\n public gotoAndStop(frameNumber:number){\r\n this._time=frameNumber*(1000/this._fps);\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n /**\r\n * gotoAndPlay - set frame by frame-label.\r\n */\r\n public gotoAndPlayLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this._isplaying = true;\r\n this.update(0, true);\r\n }\r\n }\r\n /**\r\n * gotoAndStop - set frame by frame-label.\r\n */\r\n public gotoAndStopLabel(frameLabel:string) {\r\n var frameNumber:number = -1;\r\n for (var i:number = 0; i < this._frames.length; i++) {\r\n for (var fl:number = 0; fl < this._frames[i].framelabels.length; fl++) {\r\n if (this._frames[i].framelabels[fl] == frameLabel) {\r\n fl = this._frames[i].framelabels.length;\r\n frameNumber = i;\r\n i = this._frames.length;\r\n }\r\n }\r\n }\r\n if (frameNumber >= 0) {\r\n this._time = frameNumber * (1000 / this._fps);\r\n this.update(0, true);\r\n this._isplaying = false;\r\n }\r\n }\r\n /**\r\n * gotoAndPlay - set time in ms.\r\n */\r\n public gotoAndPlayTime(time:number){\r\n this._time=time;\r\n this._isplaying=true;\r\n this.update(0, true);\r\n }\r\n /**\r\n * gotoAndStop - set time in ms.\r\n */\r\n public gotoAndStopTime(time:number){\r\n this._time=time;\r\n this.update(0, true);\r\n this._isplaying=false;//stop playback again\r\n }\r\n\r\n public addTimeLineObject(newTlObj:TimeLineObject, isDisplayObj:boolean=true) {\r\n if (isDisplayObj) {\r\n this.addChild(newTlObj.asset);\r\n }\r\n newTlObj.deactivate();\r\n this._timeLineObjs.push(newTlObj);\r\n }\r\n public getTimeLineObjectByID(objID:number):TimeLineObject\r\n {\r\n for (var tlo:number=0; tlo this._endTime * speed) {\r\n return;\r\n }\r\n if (this._type == 0) {\r\n //interpolate number\r\n return (this._startValue + (((time - this._startTime) * (this._duration * speed)) * (this._endValue - this._startValue)));\r\n }\r\n if (this._type == 1){\r\n //todo: interpolate matrix3D\r\n }\r\n if (this._type == 2) {\r\n //todo: interpolate Matrix3D, but handle it as 2D object (do not touch z.position)\r\n }\r\n if (this._type == 3) {\r\n //todo: interpolate ColorTransform\r\n }\r\n return;\r\n }\r\n}\r\n\r\nexport = InterpolationObject;\r\n","import AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\r\nimport IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\nimport Matrix3D\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix3D\");\r\nimport Matrix\t\t\t\t\t = require(\"awayjs-core/lib/geom/Matrix\");\r\n\r\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\r\nimport SubGeometryBase\t\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\r\nimport SubGeometry\t\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\r\nimport ISubMesh\t\t\t\t\t\t= require(\"awayjs-display/lib/base/ISubMesh\");\r\nimport ISubMeshClass\t\t\t\t= require(\"awayjs-display/lib/base/ISubMeshClass\");\r\nimport Geometry\t\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\r\nimport GeometryEvent\t\t\t\t= require(\"awayjs-display/lib/events/GeometryEvent\");\r\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\r\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\r\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\r\nimport DisplayObjectContainer\t\t = require(\"awayjs-display/lib/containers/DisplayObjectContainer\");\r\nimport Mesh\t\t = require(\"awayjs-display/lib/entities/Mesh\");\r\nimport TimeLine = require(\"awayjs-display/lib/entities/TimeLine\");\r\nimport FrameCommand = require(\"awayjs-display/lib/entities/timelinedata/FrameCommand\");\r\n\r\n\r\n/**\r\n * TimelineFrame holds 3 list of FrameCommands\r\n * - list1 _frameCommands should be executed when playing the timeline (previous Frame was played)\r\n * - list2 _frameCommandsReverse should be executed when playing the timeline reversed (previous Frame was played)\r\n * - list3 _frameCommandsInit should be executed when jumping to a frame, so we need to fully init the frame\r\n *\r\n * Addionial TimelineFrame properties are:\r\n * - script - can be executed, after the frameCommands have been executed\r\n * - list of FrameLabels, and list of corresponding labelTypes\r\n * - duration-value (1 frame is not necessary 1 frame long)\r\n * - startTime and endTime are needed internally when deciding what frame to display\r\n */\r\nclass TimeLineFrame\r\n{\r\n private _script:string;\r\n private _startTime:number;\r\n private _endTime:number;\r\n private _duration:number;\r\n private _timeline:TimeLine;\r\n private _frameCommands:Array;\r\n private _frameCommandsReverse:Array;\r\n private _frameCommandsInit:Array;\r\n private _framelabels:Array;\r\n private _labelTypes:Array;\r\n private _isDirty:boolean;\r\n\r\n constructor()\r\n {\r\n this._isDirty=true;\r\n this._script=\"\";\r\n this._duration=1;//use millisecs for duration ? or frames ?\r\n this._frameCommands=new Array();\r\n this._frameCommandsReverse=new Array();\r\n this._frameCommandsInit=new Array();\r\n this._framelabels=new Array();\r\n this._labelTypes=new Array();\r\n }\r\n public addCommand(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommands.push(newCommand);\r\n }\r\n public addCommandReverse(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommandsReverse.push(newCommand);\r\n }\r\n public addCommandInit(newCommand:FrameCommand)\r\n {\r\n // make the timeline available for the commands\r\n this._frameCommandsInit.push(newCommand);\r\n }\r\n public addLabel(label:string, type:number)\r\n {\r\n this._framelabels.push(label);\r\n this._labelTypes.push(type);\r\n }\r\n public get framelabels():Array\r\n {\r\n return this._framelabels;\r\n }\r\n public get labelTypes():Array\r\n {\r\n return this._labelTypes;\r\n }\r\n public get script():string\r\n {\r\n return this._script;\r\n }\r\n public addToScript(newscript:string)\r\n {\r\n this._script+=newscript;\r\n }\r\n\r\n public get isDirty():boolean\r\n {\r\n return this._isDirty;\r\n }\r\n public makeDirty():void\r\n {\r\n this._isDirty=true;\r\n }\r\n public get startTime():number\r\n {\r\n return this._startTime;\r\n }\r\n public get duration():number\r\n {\r\n return this._duration;\r\n }\r\n public get endTime():number\r\n {\r\n return this._endTime;\r\n }\r\n public setFrameTime(startTime:number, duration:number)\r\n {\r\n this._startTime=startTime;\r\n this._duration=duration;\r\n this._endTime=startTime+duration;\r\n }\r\n /**\r\n * executes the set of Commands for this Frame.\r\n * Each Frame has 3 sets of commands:\r\n * 0 = init frame commands = the frame must be init as if previous frame was not played\r\n * 1 = play frame commands = the previous frame was played\r\n * 2 = playReverse Commands = the next frame was played\r\n */\r\n public executeCommands(commandSet:number, time:number, speed:number){\r\n // execute all the frame commands for this frame\r\n if(commandSet==0){\r\n //todo: create the frameCommands for init in the parser\r\n for (var i = 0; i < this._frameCommandsInit.length; i++) {\r\n this._frameCommandsInit[i].execute(time, speed);\r\n }\r\n }\r\n else if (commandSet==1) {\r\n for (var i = 0; i < this._frameCommands.length; i++) {\r\n this._frameCommands[i].execute(time, speed);\r\n }\r\n }\r\n else if (commandSet==2) {\r\n //todo: create the frameCommands for reverse playback in the parser\r\n for (var i = 0; i < this._frameCommandsReverse.length; i++) {\r\n this._frameCommandsReverse[i].execute(time, speed);\r\n }\r\n }\r\n // mark this frame as not dirty, so it will not get executed again, unless TimeLine makes it dirty again.\r\n // whenever a Frame is entered, the Timeline should mark the previous frame as dirty.\r\n this._isDirty=false;\r\n }\r\n\r\n}\r\n\r\nexport = TimeLineFrame;\r\n","import IAsset\t\t\t\t\t = require(\"awayjs-core/lib/library/IAsset\");\r\n\r\nimport CommandPropsBase = require(\"awayjs-display/lib/entities/timelinedata/CommandPropsBase\");\r\n\r\n/**\r\n * TimeLineObject represents a unique object that is (or will be) used by a TimeLine.\r\n * A TimeLineObject basically consists of an objID, and an IAsset.\r\n * The FrameCommands hold references to these TimeLineObjects, so they can access and modify the IAssets\r\n\r\n */\r\nclass TimeLineObject\r\n{\r\n // the IAsset of this TimeLineObject. This should already be a unique Object-Instance.\r\n private _asset:IAsset;\r\n\r\n // the object-id of this TimeLineObject/IAsset. This is not really used anymore (?).\r\n private _objID:number;\r\n\r\n // This timeLineProps offers function to deActivate the current TimeLineObject.\r\n // what happens in the deactivate function is up to the CommandProps (which can be of different type)\r\n private _deactivateCommandProps:CommandPropsBase;\r\n\r\n // keep track if this TimeLineObject is currently active or not.\r\n // for IAsset that extends DisplayObject, active means they are visible.\r\n // for other IAssets it can have different meaning (sound playing...)\r\n private _isActive:boolean;\r\n\r\n // if the object is a DisplayObject that should be considered a 2D object,\r\n // we will update the z-position to represent object-depth todo\r\n private _is2D:boolean;\r\n\r\n constructor(asset:IAsset, objID:number, deactiveCommandProps:CommandPropsBase)\r\n {\r\n this._asset=asset;\r\n this._objID=objID;\r\n this._is2D=true;\r\n this._isActive=false;\r\n this._deactivateCommandProps=deactiveCommandProps;\r\n this._deactivateCommandProps.deactivate(this._asset);\r\n }\r\n public set deactivateCommandProps(newCommandprops:CommandPropsBase)\r\n {\r\n this._deactivateCommandProps=newCommandprops;\r\n }\r\n public deactivate()\r\n {\r\n //if(this._deactivateCommandProps==undefined)\r\n // return;\r\n this._deactivateCommandProps.deactivate(this._asset);\r\n this._isActive=false;\r\n }\r\n\r\n public get asset():IAsset\r\n {\r\n return this._asset;\r\n }\r\n public set asset(newAsset:IAsset)\r\n {\r\n this._asset=newAsset;\r\n }\r\n public get objID():number\r\n {\r\n return this._objID;\r\n }\r\n public set objID(newobjID:number)\r\n {\r\n this._objID=newobjID;\r\n }\r\n public get is2D():boolean\r\n {\r\n return this._is2D;\r\n }\r\n public set is2D(newis2D:boolean)\r\n {\r\n this._is2D=newis2D;\r\n }\r\n public get isActive():boolean\r\n {\r\n return this._isActive;\r\n }\r\n public set isActive(newisActive:boolean)\r\n {\r\n this._isActive=newisActive;\r\n }\r\n}\r\n\r\nexport = TimeLineObject;\r\n","import Error\t\t\t\t\t= require(\"awayjs-core/lib/errors/Error\");\n\nclass CastError extends Error\n{\n\tconstructor(message:string)\n\t{\n\t\tsuper(message);\n\t}\n}\n\nexport = CastError;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport Camera\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\n\n/**\n * @class away.events.CameraEvent\n */\nclass CameraEvent extends Event\n{\n\tpublic static PROJECTION_CHANGED:string = \"projectionChanged\";\n\n\tprivate _camera:Camera;\n\n\tconstructor(type:string, camera:Camera)\n\t{\n\t\tsuper(type);\n\n\t\tthis._camera = camera;\n\t}\n\n\tpublic get camera():Camera\n\t{\n\t\treturn this._camera;\n\t}\n}\n\nexport = CameraEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass DisplayObjectEvent extends Event\n{\n\tpublic static VISIBLITY_UPDATED:string = \"visiblityUpdated\";\n\tpublic static SCENETRANSFORM_CHANGED:string = \"scenetransformChanged\";\n\tpublic static SCENE_CHANGED:string = \"sceneChanged\";\n\tpublic static POSITION_CHANGED:string = \"positionChanged\";\n\tpublic static ROTATION_CHANGED:string = \"rotationChanged\";\n\tpublic static SCALE_CHANGED:string = \"scaleChanged\";\n\n\tpublic object:DisplayObject;\n\n\tconstructor(type:string, object:DisplayObject)\n\t{\n\t\tsuper(type);\n\t\tthis.object = object;\n\t}\n}\n\nexport = DisplayObjectEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\n\n/**\n* Dispatched to notify changes in a geometry object's state.\n*\n* @class away.events.GeometryEvent\n* @see away3d.core.base.Geometry\n*/\nclass GeometryEvent extends Event\n{\n\t/**\n\t * Dispatched when a TriangleSubGeometry was added to the dispatching Geometry.\n\t */\n\tpublic static SUB_GEOMETRY_ADDED:string = \"SubGeometryAdded\";\n\n\t/**\n\t * Dispatched when a TriangleSubGeometry was removed from the dispatching Geometry.\n\t */\n\tpublic static SUB_GEOMETRY_REMOVED:string = \"SubGeometryRemoved\";\n\n\tpublic static BOUNDS_INVALID:string = \"BoundsInvalid\";\n\n\tprivate _subGeometry:SubGeometryBase;\n\n\t/**\n\t * Create a new GeometryEvent\n\t * @param type The event type.\n\t * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event.\n\t */\n\tconstructor(type:string, subGeometry:SubGeometryBase = null)\n\t{\n\t\tsuper(type);\n\n\t\tthis._subGeometry = subGeometry;\n\t}\n\n\t/**\n\t * The TriangleSubGeometry object that is the subject of this event, if appropriate.\n\t */\n\tpublic get subGeometry():SubGeometryBase\n\t{\n\t\treturn this._subGeometry;\n\t}\n\n\t/**\n\t * Clones the event.\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new GeometryEvent(this.type, this._subGeometry);\n\t}\n}\n\nexport = GeometryEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass LightEvent extends Event\n{\n\n\tpublic static CASTS_SHADOW_CHANGE:string = \"castsShadowChange\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n\n\t//@override\n\tpublic clone():Event\n\t{\n\t\treturn new LightEvent(this.type);\n\t}\n}\n\nexport = LightEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass MaterialEvent extends Event\n{\n\tpublic static SIZE_CHANGED:string = \"sizeChanged\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = MaterialEvent;","import Point\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Vector3D\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport View\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\n\n/**\n * A MouseEvent is dispatched when a mouse event occurs over a mouseEnabled object in View.\n * TODO: we don't have screenZ data, tho this should be easy to implement\n */\nclass MouseEvent extends Event\n{\n\t// Private.\n\tpublic _iAllowedToPropagate:boolean = true;\n\tpublic _iParentEvent:MouseEvent;\n\n\t/**\n\t * Defines the value of the type property of a mouseOver3d event object.\n\t */\n\tpublic static MOUSE_OVER:string = \"mouseOver3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseOut3d event object.\n\t */\n\tpublic static MOUSE_OUT:string = \"mouseOut3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseUp3d event object.\n\t */\n\tpublic static MOUSE_UP:string = \"mouseUp3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseDown3d event object.\n\t */\n\tpublic static MOUSE_DOWN:string = \"mouseDown3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseMove3d event object.\n\t */\n\tpublic static MOUSE_MOVE:string = \"mouseMove3d\";\n\n\t/**\n\t * Defines the value of the type property of a rollOver3d event object.\n\t */\n//\t\tpublic static ROLL_OVER : string = \"rollOver3d\";\n\n\t/**\n\t * Defines the value of the type property of a rollOut3d event object.\n\t */\n//\t\tpublic static ROLL_OUT : string = \"rollOut3d\";\n\n\t/**\n\t * Defines the value of the type property of a click3d event object.\n\t */\n\tpublic static CLICK:string = \"click3d\";\n\n\t/**\n\t * Defines the value of the type property of a doubleClick3d event object.\n\t */\n\tpublic static DOUBLE_CLICK:string = \"doubleClick3d\";\n\n\t/**\n\t * Defines the value of the type property of a mouseWheel3d event object.\n\t */\n\tpublic static MOUSE_WHEEL:string = \"mouseWheel3d\";\n\n\t/**\n\t * The horizontal coordinate at which the event occurred in view coordinates.\n\t */\n\tpublic screenX:number;\n\n\t/**\n\t * The vertical coordinate at which the event occurred in view coordinates.\n\t */\n\tpublic screenY:number;\n\n\t/**\n\t * The view object inside which the event took place.\n\t */\n\tpublic view:View;\n\n\t/**\n\t * The 3d object inside which the event took place.\n\t */\n\tpublic object:DisplayObject;\n\n\t/**\n\t * The renderable owner inside which the event took place.\n\t */\n\tpublic renderableOwner:IRenderableOwner;\n\n\t/**\n\t * The material of the 3d element inside which the event took place.\n\t */\n\tpublic material:MaterialBase;\n\n\t/**\n\t * The uv coordinate inside the draw primitive where the event took place.\n\t */\n\tpublic uv:Point;\n\n\t/**\n\t * The index of the face where the event took place.\n\t */\n\tpublic index:number;\n\n\t/**\n\t * The index of the subGeometry where the event took place.\n\t */\n\tpublic subGeometryIndex:number;\n\n\t/**\n\t * The position in object space where the event took place\n\t */\n\tpublic localPosition:Vector3D;\n\n\t/**\n\t * The normal in object space where the event took place\n\t */\n\tpublic localNormal:Vector3D;\n\n\t/**\n\t * Indicates whether the Control key is active (true) or inactive (false).\n\t */\n\tpublic ctrlKey:boolean;\n\n\t/**\n\t * Indicates whether the Alt key is active (true) or inactive (false).\n\t */\n\tpublic altKey:boolean;\n\n\t/**\n\t * Indicates whether the Shift key is active (true) or inactive (false).\n\t */\n\tpublic shiftKey:boolean;\n\n\t/**\n\t * Indicates how many lines should be scrolled for each unit the user rotates the mouse wheel.\n\t */\n\tpublic delta:number;\n\n\t/**\n\t * Create a new MouseEvent object.\n\t * @param type The type of the MouseEvent.\n\t */\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get bubbles():boolean\n\t{\n\t\tvar doesBubble:boolean = this._iAllowedToPropagate;\n\t\tthis._iAllowedToPropagate = true;\n\n\t\t// Don't bubble if propagation has been stopped.\n\t\treturn doesBubble;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopPropagation()\n\t{\n\t\tthis._iAllowedToPropagate = false;\n\n\t\tif (this._iParentEvent)\n\t\t\tthis._iParentEvent.stopPropagation();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopImmediatePropagation()\n\t{\n\t\tthis._iAllowedToPropagate = false;\n\n\t\tif (this._iParentEvent)\n\t\t\tthis._iParentEvent.stopImmediatePropagation();\n\t}\n\n\t/**\n\t * Creates a copy of the MouseEvent object and sets the value of each property to match that of the original.\n\t */\n\tpublic clone():Event\n\t{\n\t\tvar result:MouseEvent = new MouseEvent(this.type);\n\n\t\t/* TODO: Debug / test - look into isDefaultPrevented\n\t\t if (isDefaultPrevented())\n\t\t result.preventDefault();\n\t\t */\n\n\t\tresult.screenX = this.screenX;\n\t\tresult.screenY = this.screenY;\n\n\t\tresult.view = this.view;\n\t\tresult.object = this.object;\n\t\tresult.renderableOwner = this.renderableOwner;\n\t\tresult.material = this.material;\n\t\tresult.uv = this.uv;\n\t\tresult.localPosition = this.localPosition;\n\t\tresult.localNormal = this.localNormal;\n\t\tresult.index = this.index;\n\t\tresult.subGeometryIndex = this.subGeometryIndex;\n\t\tresult.delta = this.delta;\n\n\t\tresult.ctrlKey = this.ctrlKey;\n\t\tresult.shiftKey = this.shiftKey;\n\n\t\tresult._iParentEvent = this;\n\t\tresult._iAllowedToPropagate = this._iAllowedToPropagate;\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * The position in scene space where the event took place\n\t */\n\tpublic get scenePosition():Vector3D\n\t{\n\t\treturn this.object.sceneTransform.transformVector(this.localPosition);\n\t}\n\n\t/**\n\t * The normal in scene space where the event took place\n\t */\n\tpublic get sceneNormal():Vector3D\n\t{\n\t\tvar sceneNormal:Vector3D = this.object.sceneTransform.deltaTransformVector(this.localNormal);\n\t\tsceneNormal.normalize();\n\n\t\treturn sceneNormal;\n\t}\n}\n\nexport = MouseEvent;","import Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\n\n/**\n * Dispatched to notify changes in a sub geometry object's state.\n *\n * @class away.events.RenderableOwnerEvent\n * @see away.core.base.Geometry\n */\nclass RenderableOwnerEvent extends Event\n{\n\t/**\n\t * Dispatched when a Renderable owners's render object owner has been updated.\n\t */\n\tpublic static RENDER_OBJECT_OWNER_UPDATED:string = \"renderObjectOwnerUpdated\";\n\n\tprivate _renderObjectOwner:IRenderObjectOwner;\n\n\t/**\n\t * Create a new GeometryEvent\n\t * @param type The event type.\n\t * @param dataType An optional data type of the vertex data being updated.\n\t */\n\tconstructor(type:string, renderObjectOwner:IRenderObjectOwner)\n\t{\n\t\tsuper(type);\n\n\t\tthis._renderObjectOwner = renderObjectOwner;\n\t}\n\n\t/**\n\t * The renderobject owner of the renderable owner.\n\t */\n\tpublic get renderObjectOwner():IRenderObjectOwner\n\t{\n\t\treturn this._renderObjectOwner;\n\t}\n\n\t/**\n\t * Clones the event.\n\t *\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new RenderableOwnerEvent(this.type, this._renderObjectOwner);\n\t}\n}\n\nexport = RenderableOwnerEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass RendererEvent extends Event\n{\n\tpublic static VIEWPORT_UPDATED:string = \"viewportUpdated\";\n\tpublic static SCISSOR_UPDATED:string = \"scissorUpdated\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = RendererEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass ResizeEvent extends Event\n{\n\tpublic static RESIZE:string = \"resize\";\n\n\tprivate _oldHeight:number;\n\tprivate _oldWidth:number;\n\n\tconstructor(type:string, oldHeight:number = NaN, oldWidth:number = NaN)\n\t{\n\t\tsuper(type);\n\n\t\tthis._oldHeight = oldHeight;\n\t\tthis._oldWidth = oldWidth;\n\t}\n\n\tpublic get oldHeight():number\n\t{\n\t\treturn this._oldHeight;\n\t}\n\n\tpublic get oldWidth():number\n\t{\n\t\treturn this._oldWidth;\n\t}\n}\n\nexport = ResizeEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\nclass SceneEvent extends Event\n{\n\t/**\n\t *\n\t */\n\tpublic static ADDED_TO_SCENE:string = \"addedToScene\";\n\n\t/**\n\t *\n\t */\n\tpublic static REMOVED_FROM_SCENE:string = \"removedFromScene\";\n\n\t/**\n\t *\n\t */\n\tpublic static PARTITION_CHANGED:string = \"partitionChanged\";\n\n\t/**\n\t *\n\t */\n\tpublic displayObject:DisplayObject;\n\n\tconstructor(type:string, displayObject:DisplayObject)\n\t{\n\t\tsuper(type);\n\n\t\tthis.displayObject = displayObject;\n\t}\n}\n\nexport = SceneEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nclass StageEvent extends Event\n{\n\tpublic static CONTEXT_CREATED:string = \"contextCreated\";\n\tpublic static CONTEXT_DISPOSED:string = \"contextDisposed\";\n\tpublic static CONTEXT_RECREATED:string = \"contextRecreated\";\n\tpublic static VIEWPORT_UPDATED:string = \"viewportUpdated\";\n\n\tconstructor(type:string)\n\t{\n\t\tsuper(type);\n\t}\n}\n\nexport = StageEvent;","import Event\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\n/**\n * Dispatched to notify changes in a sub geometry object's state.\n *\n * @class away.events.SubGeometryEvent\n * @see away.core.base.Geometry\n */\nclass SubGeometryEvent extends Event\n{\n\t/**\n\t * Dispatched when a TriangleSubGeometry's index data has been updated.\n\t */\n\tpublic static INDICES_UPDATED:string = \"indicesUpdated\";\n\n\t/**\n\t * Dispatched when a TriangleSubGeometry's vertex data has been updated.\n\t */\n\tpublic static VERTICES_UPDATED:string = \"verticesUpdated\";\n\n\tprivate _dataType:string;\n\n\t/**\n\t * Create a new GeometryEvent\n\t * @param type The event type.\n\t * @param dataType An optional data type of the vertex data being updated.\n\t */\n\tconstructor(type:string, dataType:string = \"\")\n\t{\n\t\tsuper(type);\n\n\t\tthis._dataType = dataType;\n\t}\n\n\t/**\n\t * The data type of the vertex data.\n\t */\n\tpublic get dataType():string\n\t{\n\t\treturn this._dataType;\n\t}\n\n\t/**\n\t * Clones the event.\n\t *\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new SubGeometryEvent(this.type, this._dataType);\n\t}\n}\n\nexport = SubGeometryEvent;","import BitmapData\t\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport BitmapTexture\t\t\t\t= require(\"awayjs-core/lib/textures/BitmapTexture\");\n\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport BasicMaterial\t\t\t\t= require(\"awayjs-display/lib/materials/BasicMaterial\");\n\nclass DefaultMaterialManager\n{\n\tprivate static _defaultBitmapData:BitmapData;\n\tprivate static _defaultTriangleMaterial:BasicMaterial;\n\tprivate static _defaultLineMaterial:BasicMaterial;\n\tprivate static _defaultTexture:BitmapTexture;\n\n\tpublic static getDefaultMaterial(renderableOwner:IRenderableOwner = null):MaterialBase\n\t{\n\t\tif (renderableOwner != null && renderableOwner.assetType == AssetType.LINE_SUB_MESH) {\n\t\t\tif (!DefaultMaterialManager._defaultLineMaterial)\n\t\t\t\tDefaultMaterialManager.createDefaultLineMaterial();\n\n\t\t\treturn DefaultMaterialManager._defaultLineMaterial;\n\t\t} else {\n\t\t\tif (!DefaultMaterialManager._defaultTriangleMaterial)\n\t\t\t\tDefaultMaterialManager.createDefaultTriangleMaterial();\n\n\t\t\treturn DefaultMaterialManager._defaultTriangleMaterial;\n\t\t}\n\t}\n\n\tpublic static getDefaultTexture(renderableOwner:IRenderableOwner = null):BitmapTexture\n\t{\n\t\tif (!DefaultMaterialManager._defaultTexture)\n\t\t\tDefaultMaterialManager.createDefaultTexture();\n\n\t\treturn DefaultMaterialManager._defaultTexture;\n\t}\n\n\tprivate static createDefaultTexture()\n\t{\n\t\tDefaultMaterialManager._defaultBitmapData = DefaultMaterialManager.createCheckeredBitmapData();\n\t\tDefaultMaterialManager._defaultTexture = new BitmapTexture(DefaultMaterialManager._defaultBitmapData, true);\n\t\tDefaultMaterialManager._defaultTexture.name = \"defaultTexture\";\n\t}\n\n\tpublic static createCheckeredBitmapData():BitmapData\n\t{\n\t\tvar b:BitmapData = new BitmapData(8, 8, false, 0x000000);\n\n\t\t//create chekerboard\n\t\tvar i:number, j:number;\n\t\tfor (i = 0; i < 8; i++) {\n\t\t\tfor (j = 0; j < 8; j++) {\n\t\t\t\tif ((j & 1) ^ (i & 1)) {\n\t\t\t\t\tb.setPixel(i, j, 0XFFFFFF);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn b;\n\t}\n\n\tprivate static createDefaultTriangleMaterial()\n\t{\n\t\tif (!DefaultMaterialManager._defaultTexture)\n\t\t\tDefaultMaterialManager.createDefaultTexture();\n\n\t\tDefaultMaterialManager._defaultTriangleMaterial = new BasicMaterial(DefaultMaterialManager._defaultTexture);\n\t\tDefaultMaterialManager._defaultTriangleMaterial.mipmap = false;\n\t\tDefaultMaterialManager._defaultTriangleMaterial.smooth = false;\n\t\tDefaultMaterialManager._defaultTriangleMaterial.name = \"defaultTriangleMaterial\";\n\t}\n\n\tprivate static createDefaultLineMaterial()\n\t{\n\t\tDefaultMaterialManager._defaultLineMaterial = new BasicMaterial();\n\t\tDefaultMaterialManager._defaultLineMaterial.name = \"defaultLineMaterial\";\n\t}\n}\n\nexport = DefaultMaterialManager;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport View\t\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport AwayMouseEvent\t\t\t\t= require(\"awayjs-display/lib/events/MouseEvent\");\n\n/**\n * MouseManager enforces a singleton pattern and is not intended to be instanced.\n * it provides a manager class for detecting mouse hits on scene objects and sending out mouse events.\n */\nclass MouseManager\n{\n\tprivate static _instance:MouseManager;\n\n\tprivate _viewLookup:Array = new Array();\n\n\tpublic _iActiveDiv:HTMLDivElement;\n\tpublic _iUpdateDirty:boolean;\n\tpublic _iCollidingObject:PickingCollisionVO;\n\t\n\tprivate _nullVector:Vector3D = new Vector3D();\n\tprivate _previousCollidingObject:PickingCollisionVO;\n\tprivate _queuedEvents:Array = new Array();\n\n\tprivate _mouseMoveEvent:MouseEvent;\n\n\tprivate _mouseUp:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_UP);\n\tprivate _mouseClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.CLICK);\n\tprivate _mouseOut:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OUT);\n\tprivate _mouseDown:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_DOWN);\n\tprivate _mouseMove:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_MOVE);\n\tprivate _mouseOver:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_OVER);\n\tprivate _mouseWheel:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.MOUSE_WHEEL);\n\tprivate _mouseDoubleClick:AwayMouseEvent = new AwayMouseEvent(AwayMouseEvent.DOUBLE_CLICK);\n\n\tprivate onClickDelegate:(event:MouseEvent) => void;\n\tprivate onDoubleClickDelegate:(event:MouseEvent) => void;\n\tprivate onMouseDownDelegate:(event:MouseEvent) => void;\n\tprivate onMouseMoveDelegate:(event:MouseEvent) => void;\n\tprivate onMouseUpDelegate:(event:MouseEvent) => void;\n\tprivate onMouseWheelDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOverDelegate:(event:MouseEvent) => void;\n\tprivate onMouseOutDelegate:(event:MouseEvent) => void;\n\n\t/**\n\t * Creates a new MouseManager object.\n\t */\n\tconstructor()\n\t{\n\t\tthis.onClickDelegate = (event:MouseEvent) => this.onClick(event);\n\t\tthis.onDoubleClickDelegate = (event:MouseEvent) => this.onDoubleClick(event);\n\t\tthis.onMouseDownDelegate = (event:MouseEvent) => this.onMouseDown(event);\n\t\tthis.onMouseMoveDelegate = (event:MouseEvent) => this.onMouseMove(event);\n\t\tthis.onMouseUpDelegate = (event:MouseEvent) => this.onMouseUp(event);\n\t\tthis.onMouseWheelDelegate = (event:MouseEvent) => this.onMouseWheel(event);\n\t\tthis.onMouseOverDelegate = (event:MouseEvent) => this.onMouseOver(event);\n\t\tthis.onMouseOutDelegate = (event:MouseEvent) => this.onMouseOut(event);\n\t}\n\n\tpublic static getInstance():MouseManager\n\t{\n\t\tif (this._instance)\n\t\t\treturn this._instance;\n\n\t\treturn (this._instance = new MouseManager());\n\t}\n\n\tpublic fireMouseEvents(forceMouseMove:boolean)\n\t{\n\t\t // If colliding object has changed, queue over/out events.\n\t\tif (this._iCollidingObject != this._previousCollidingObject) {\n\t\t\tif (this._previousCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOut, this._mouseMoveEvent, this._previousCollidingObject);\n\n\t\t\tif (this._iCollidingObject)\n\t\t\t\tthis.queueDispatch(this._mouseOver, this._mouseMoveEvent);\n\t\t}\n\n\t\t // Fire mouse move events here if forceMouseMove is on.\n\t\tif (forceMouseMove && this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseMove, this._mouseMoveEvent);\n\n\t\tvar event:AwayMouseEvent;\n\t\tvar dispatcher:DisplayObject;\n\n\t\t // Dispatch all queued events.\n\t\tvar len:number = this._queuedEvents.length;\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\t// Only dispatch from first implicitly enabled object ( one that is not a child of a mouseChildren = false hierarchy ).\n\t\t\tevent = this._queuedEvents[i];\n\t\t\tdispatcher = event.object;\n\n\t\t\twhile (dispatcher && !dispatcher._iIsMouseEnabled())\n\t\t\t\tdispatcher = dispatcher.parent;\n\n\t\t\tif (dispatcher)\n\t\t\t\tdispatcher.dispatchEvent(event);\n\t\t}\n\n\t\tthis._queuedEvents.length = 0;\n\n\t\tthis._previousCollidingObject = this._iCollidingObject;\n\n\t\tthis._iUpdateDirty = false;\n\t}\n\n//\t\tpublic addViewLayer(view:View)\n//\t\t{\n//\t\t\tvar stg:Stage = view.stage;\n//\n//\t\t\t// Add instance to mouse3dmanager to fire mouse events for multiple views\n//\t\t\tif (!view.stageGL.mouse3DManager)\n//\t\t\t\tview.stageGL.mouse3DManager = this;\n//\n//\t\t\tif (!hasKey(view))\n//\t\t\t\t_view3Ds[view] = 0;\n//\n//\t\t\t_childDepth = 0;\n//\t\t\ttraverseDisplayObjects(stg);\n//\t\t\t_viewCount = _childDepth;\n//\t\t}\n\n\tpublic registerView(view:View)\n\t{\n\t\tview.htmlElement.addEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.addEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.addEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.addEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.addEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.addEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.push(view);\n\t}\n\n\tpublic unregisterView(view:View)\n\t{\n\t\tview.htmlElement.removeEventListener(\"click\", this.onClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"dblclick\", this.onDoubleClickDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousedown\", this.onMouseDownDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousemove\", this.onMouseMoveDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseup\", this.onMouseUpDelegate);\n\t\tview.htmlElement.removeEventListener(\"mousewheel\", this.onMouseWheelDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseover\", this.onMouseOverDelegate);\n\t\tview.htmlElement.removeEventListener(\"mouseout\", this.onMouseOutDelegate);\n\n\t\tthis._viewLookup.slice(this._viewLookup.indexOf(view), 1);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Private.\n\t// ---------------------------------------------------------------------\n\n\tprivate queueDispatch(event:AwayMouseEvent, sourceEvent:MouseEvent, collider:PickingCollisionVO = null)\n\t{\n\t\t// 2D properties.\n\t\tif (sourceEvent) {\n\t\t\tevent.ctrlKey = sourceEvent.ctrlKey;\n\t\t\tevent.altKey = sourceEvent.altKey;\n\t\t\tevent.shiftKey = sourceEvent.shiftKey;\n\t\t\tevent.screenX = sourceEvent.clientX;\n\t\t\tevent.screenY = sourceEvent.clientY;\n\t\t}\n\n\t\tif (collider == null)\n\t\t\tcollider = this._iCollidingObject;\n\n\t\t// 3D properties.\n\t\tif (collider) {\n\t\t\t// Object.\n\t\t\tevent.object = collider.displayObject;\n\t\t\tevent.renderableOwner = collider.renderableOwner;\n\t\t\t// UV.\n\t\t\tevent.uv = collider.uv;\n\t\t\t// Position.\n\t\t\tevent.localPosition = collider.localPosition? collider.localPosition.clone() : null;\n\t\t\t// Normal.\n\t\t\tevent.localNormal = collider.localNormal? collider.localNormal.clone() : null;\n\t\t\t// Face index.\n\t\t\tevent.index = collider.index;\n\t\t} else {\n\t\t\t// Set all to null.\n\t\t\tevent.uv = null;\n\t\t\tevent.object = null;\n\t\t\tevent.localPosition = this._nullVector;\n\t\t\tevent.localNormal = this._nullVector;\n\t\t\tevent.index = 0;\n\t\t\tevent.subGeometryIndex = 0;\n\t\t}\n\n\t\t// Store event to be dispatched later.\n\t\tthis._queuedEvents.push(event);\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Listeners.\n\t// ---------------------------------------------------------------------\n\n\tprivate onMouseMove(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseMove, this._mouseMoveEvent = event);\n\t}\n\n\tprivate onMouseOut(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = null;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseOut, event);\n\t}\n\n\tprivate onMouseOver(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch( this._mouseOver, event);\n\t}\n\n\tprivate onClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseClick, event);\n\t}\n\n\tprivate onDoubleClick(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDoubleClick, event);\n\t}\n\n\tprivate onMouseDown(event:MouseEvent)\n\t{\n\t\tthis._iActiveDiv = event.target;\n\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseDown, event);\n\t}\n\n\tprivate onMouseUp(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseUp , event);\n\t}\n\n\tprivate onMouseWheel(event:MouseEvent)\n\t{\n\t\tthis.updateColliders(event);\n\n\t\tif (this._iCollidingObject)\n\t\t\tthis.queueDispatch(this._mouseWheel, event);\n\t}\n\n\n\tprivate updateColliders(event:MouseEvent)\n\t{\n\t\tif (this._iUpdateDirty)\n\t\t\treturn;\n\n\t\tvar view:View;\n\t\tvar bounds:ClientRect;\n\t\tvar mouseX:number = event.clientX;\n\t\tvar mouseY:number = event.clientY;\n\t\tvar len:number = this._viewLookup.length;\n\t\tfor (var i:number = 0; i < len; i++) {\n\t\t\tview = this._viewLookup[i];\n\t\t\tbounds = view.htmlElement.getBoundingClientRect();\n\t\t\tif (mouseX < bounds.left || mouseX > bounds.right || mouseY < bounds.top || mouseY > bounds.bottom) {\n\t\t\t\tview._pMouseX = null;\n\t\t\t\tview._pMouseY = null;\n\t\t\t} else {\n\t\t\t\tview._pMouseX = mouseX + bounds.left;\n\t\t\t\tview._pMouseY = mouseY + bounds.top;\n\t\t\t\tview.updateCollider();\n\n\t\t\t\tif (view.layeredView && this._iCollidingObject)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._iUpdateDirty = true;\n\t}\n}\n\nexport = MouseManager;","import Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\n\n/**\n * BasicMaterial forms an abstract base class for the default shaded materials provided by Stage,\n * using material methods to define their appearance.\n */\nclass BasicMaterial extends MaterialBase implements IRenderObjectOwner\n{\n\t/**\n\t * Creates a new BasicMaterial object.\n\t *\n\t * @param texture The texture used for the material's albedo color.\n\t * @param smooth Indicates whether the texture should be filtered when sampled. Defaults to true.\n\t * @param repeat Indicates whether the texture should be tiled when sampled. Defaults to false.\n\t * @param mipmap Indicates whether or not any used textures should use mipmapping. Defaults to false.\n\t */\n\tconstructor(texture?:Texture2DBase, smooth?:boolean, repeat?:boolean, mipmap?:boolean);\n\tconstructor(color?:number, alpha?:number);\n\tconstructor(textureColor:any = null, smoothAlpha:any = null, repeat:boolean = false, mipmap:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tif (textureColor instanceof Texture2DBase) {\n\t\t\tthis.texture = textureColor;\n\n\t\t\tthis.smooth = (smoothAlpha == null)? true : false;\n\t\t\tthis.repeat = repeat;\n\t\t\tthis.mipmap = mipmap;\n\t\t} else {\n\t\t\tthis.color = textureColor? Number(textureColor) : 0xCCCCCC;\n\t\t\tthis.alpha = (smoothAlpha == null)? 1 : Number(smoothAlpha);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool):IRenderObject\n\t{\n\t\treturn renderablePool.getMaterialRenderObject(this);\n\t}\n}\n\nexport = BasicMaterial;","import MaterialBase\t\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport ImageTexture\t\t\t\t\t= require(\"awayjs-core/lib/textures/ImageTexture\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass CSSMaterialBase extends MaterialBase\n{\n\tprivate _imageElement:HTMLImageElement;\n\tprivate _imageStyle:MSStyleCSSProperties;\n\n\n\tpublic get imageElement():HTMLImageElement\n\t{\n\t\treturn this._imageElement;\n\t}\n\n\tpublic get imageStyle():MSStyleCSSProperties\n\t{\n\t\treturn this._imageStyle;\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tif (value instanceof ImageTexture) {\n\t\t\tthis._imageElement = ( value).htmlImageElement;\n\n\t\t\tvar node:HTMLStyleElement = document.createElement(\"style\");\n\t\t\tnode.type = \"text/css\";\n\t\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(node);\n\n\t\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\t\t\tsheet.insertRule(\".material\" + this.id + \"{ }\", 0);\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[0]).style;\n\n\t\t\tstyle.backgroundImage = \"url(\" + this._imageElement.src + \")\";\n\t\t\tstyle.backgroundSize = \"100% 100%\";\n\t\t\tstyle.position = \"absolute\";\n\t\t\tstyle.width = this._imageElement.width + \"px\";\n\t\t\tstyle.height = this._imageElement.height + \"px\";\n\t\t\tstyle.transformOrigin\n\t\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t\tthis._pHeight = this._imageElement.height;\n\t\t\tthis._pWidth = this._imageElement.width;\n\n\t\t\tthis._pNotifySizeChanged();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor(texture:Texture2DBase = null, smooth:boolean = true, repeat:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis.texture = texture;\n\n\t\tthis.smooth = smooth;\n\t\tthis.repeat = repeat;\n\t}\n}\n\nexport = CSSMaterialBase;","/**\n * Enumeration class for defining which lighting types affect the specific material\n * lighting component (diffuse and specular). This can be useful if, for example, you\n * want to use light probes for diffuse global lighting, but want specular reflections from\n * traditional light sources without those affecting the diffuse light.\n *\n * @see away.materials.ColorMaterial.diffuseLightSources\n * @see away.materials.ColorMaterial.specularLightSources\n * @see away.materials.TextureMaterial.diffuseLightSources\n * @see away.materials.TextureMaterial.specularLightSources\n */\nclass LightSources\n{\n\t/**\n\t * Defines normal lights are to be used as the source for the lighting\n\t * component.\n\t */\n\tpublic static LIGHTS:number = 0x01;\n\n\t/**\n\t * Defines that global lighting probes are to be used as the source for the\n\t * lighting component.\n\t */\n\tpublic static PROBES:number = 0x02;\n\n\t/**\n\t * Defines that both normal and global lighting probes are to be used as the\n\t * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES.\n\t */\n\tpublic static ALL:number = 0x03;\n}\n\nexport = LightSources;","import ColorTransform\t\t\t\t= require(\"awayjs-core/lib/geom/ColorTransform\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport Texture2DBase\t\t\t\t= require(\"awayjs-core/lib/textures/Texture2DBase\");\n\nimport IAnimationSet\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimationSet\");\nimport IAnimator\t\t\t\t\t= require(\"awayjs-display/lib/animators/IAnimator\");\nimport BlendMode\t\t\t\t\t= require(\"awayjs-display/lib/base/BlendMode\");\nimport IRenderObjectOwner\t\t\t= require(\"awayjs-display/lib/base/IRenderObjectOwner\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderObject\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderObject\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport MaterialEvent\t\t\t\t= require(\"awayjs-display/lib/events/MaterialEvent\");\nimport RenderableOwnerEvent\t\t\t= require(\"awayjs-display/lib/events/RenderableOwnerEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\n\n\n/**\n * MaterialBase forms an abstract base class for any material.\n * A material consists of several passes, each of which constitutes at least one render call. Several passes could\n * be used for special effects (render lighting for many lights in several passes, render an outline in a separate\n * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space\n * subsurface scattering, or rendering a depth map for specialized self-shadowing).\n *\n * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular\n * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom\n * shaders, or entire new material frameworks.\n */\nclass MaterialBase extends NamedAssetBase implements IRenderObjectOwner\n{\n\tprivate _colorTransform:ColorTransform;\n\tprivate _alphaBlending:boolean = false;\n\tprivate _alpha:number = 1;\n\t\n\tprivate _sizeChanged:MaterialEvent;\n\tprivate _renderObjects:Array = new Array();\n\n\tpublic _pAlphaThreshold:number = 0;\n\tpublic _pAnimateUVs:boolean = false;\n\tprivate _enableLightFallOff:boolean = true;\n\tprivate _specularLightSources:number = 0x01;\n\tprivate _diffuseLightSources:number = 0x03;\n\n\t/**\n\t * An object to contain any extra data.\n\t */\n\tpublic extra:Object;\n\n\t/**\n\t * A value that can be used by materials that only work with a given type of renderer. The renderer can test the\n\t * classification to choose which render path to use. For example, a deferred material could set this value so\n\t * that the deferred renderer knows not to take the forward rendering path.\n\t *\n\t * @private\n\t */\n\tpublic _iClassification:string;\n\n\n\t/**\n\t * An id for this material used to sort the renderables by shader program, which reduces Program state changes.\n\t *\n\t * @private\n\t */\n\tpublic _iMaterialId:number = 0;\n\n\tpublic _iBaseScreenPassIndex:number = 0;\n\n\tprivate _bothSides:boolean = false; // update\n\tprivate _animationSet:IAnimationSet;\n\n\t/**\n\t * A list of material owners, renderables or custom Entities.\n\t */\n\tprivate _owners:Array;\n\n\tprivate _alphaPremultiplied:boolean;\n\n\tpublic _pBlendMode:string = BlendMode.NORMAL;\n\n\tprivate _mipmap:boolean = false;\n\tprivate _smooth:boolean = true;\n\tprivate _repeat:boolean = false;\n\tprivate _color:number = 0xFFFFFF;\n\tpublic _pTexture:Texture2DBase;\n\n\tpublic _pLightPicker:LightPickerBase;\n\n\tpublic _pHeight:number = 1;\n\tpublic _pWidth:number = 1;\n\n\tprivate _onLightChangeDelegate:(event:Event) => void;\n\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.MATERIAL;;\n\t}\n\n\t/**\n\t * Creates a new MaterialBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._iMaterialId = Number(this.id);\n\n\t\tthis._owners = new Array();\n\n\t\tthis._onLightChangeDelegate = (event:Event) => this.onLightsChange(event);\n\n\t\tthis.alphaPremultiplied = false; //TODO: work out why this is different for WebGL\n\t}\n\n\t/**\n\t * The alpha of the surface.\n\t */\n\tpublic get alpha():number\n\t{\n\t\treturn this._alpha;\n\t}\n\n\tpublic set alpha(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1;\n\t\telse if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tif (this._alpha == value)\n\t\t\treturn;\n\n\t\tthis._alpha = value;\n\n\t\tif (this._colorTransform == null)\n\t\t\tthis._colorTransform = new ColorTransform();\n\n\t\tthis._colorTransform.alphaMultiplier = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * The ColorTransform object to transform the colour of the material with. Defaults to null.\n\t */\n\tpublic get colorTransform():ColorTransform\n\t{\n\t\treturn this._colorTransform;\n\t}\n\n\tpublic set colorTransform(value:ColorTransform)\n\t{\n\t\tthis._colorTransform = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether or not the material has transparency. If binary transparency is sufficient, for\n\t * example when using textures of foliage, consider using alphaThreshold instead.\n\t */\n\tpublic get alphaBlending():boolean\n\t{\n\t\treturn this._alphaBlending;\n\t}\n\n\tpublic set alphaBlending(value:boolean)\n\t{\n\t\tif (this._alphaBlending == value)\n\t\t\treturn;\n\n\t\tthis._alphaBlending = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\t\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._pHeight;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get animationSet():IAnimationSet\n\t{\n\t\treturn this._animationSet;\n\t}\n\n\n\t/**\n\t * The light picker used by the material to provide lights to the material if it supports lighting.\n\t *\n\t * @see LightPickerBase\n\t * @see StaticLightPicker\n\t */\n\tpublic get lightPicker():LightPickerBase\n\t{\n\t\treturn this._pLightPicker;\n\t}\n\n\tpublic set lightPicker(value:LightPickerBase)\n\t{\n\t\tif (this._pLightPicker == value)\n\t\t\treturn;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.removeEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pLightPicker = value;\n\n\t\tif (this._pLightPicker)\n\t\t\tthis._pLightPicker.addEventListener(Event.CHANGE, this._onLightChangeDelegate);\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use mipmapping. Defaults to true.\n\t */\n\tpublic get mipmap():boolean\n\t{\n\t\treturn this._mipmap;\n\t}\n\n\tpublic set mipmap(value:boolean)\n\t{\n\t\tif (this._mipmap == value)\n\t\t\treturn;\n\n\t\tthis._mipmap = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should use smoothing.\n\t */\n\tpublic get smooth():boolean\n\t{\n\t\treturn this._smooth;\n\t}\n\n\tpublic set smooth(value:boolean)\n\t{\n\t\tif (this._smooth == value)\n\t\t\treturn;\n\n\t\tthis._smooth = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to\n\t * the texture's borders when the uv coordinates are outside the [0, 1] interval.\n\t */\n\tpublic get repeat():boolean\n\t{\n\t\treturn this._repeat;\n\t}\n\n\tpublic set repeat(value:boolean)\n\t{\n\t\tif (this._repeat == value)\n\t\t\treturn;\n\n\t\tthis._repeat = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The diffuse reflectivity color of the surface.\n\t */\n\tpublic get color():number\n\t{\n\t\treturn this._color;\n\t}\n\n\tpublic set color(value:number)\n\t{\n\t\tif (this._color == value)\n\t\t\treturn;\n\n\t\tthis._color = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The texture object to use for the albedo colour.\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this._pTexture;\n\t}\n\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tif (this._pTexture == value)\n\t\t\treturn;\n\n\t\tthis._pTexture = value;\n\n\t\tthis._pInvalidatePasses();\n\n\t\tthis._pHeight = this._pTexture.height;\n\t\tthis._pWidth = this._pTexture.width;\n\n\t\tthis._pNotifySizeChanged();\n\t}\n\n\t/**\n\t * Specifies whether or not the UV coordinates should be animated using a transformation matrix.\n\t */\n\tpublic get animateUVs():boolean\n\t{\n\t\treturn this._pAnimateUVs;\n\t}\n\n\tpublic set animateUVs(value:boolean)\n\t{\n\t\tif (this._pAnimateUVs == value)\n\t\t\treturn;\n\n\t\tthis._pAnimateUVs = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and\n\t * compatibility for constrained mode.\n\t */\n\tpublic get enableLightFallOff():boolean\n\t{\n\t\treturn this._enableLightFallOff;\n\t}\n\n\tpublic set enableLightFallOff(value:boolean)\n\t{\n\t\tif (this._enableLightFallOff == value)\n\t\t\treturn;\n\n\t\tthis._enableLightFallOff = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for diffuse reflections. This allows choosing between regular lights\n\t * and/or light probes for diffuse reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get diffuseLightSources():number\n\t{\n\t\treturn this._diffuseLightSources;\n\t}\n\n\tpublic set diffuseLightSources(value:number)\n\t{\n\t\tif (this._diffuseLightSources == value)\n\t\t\treturn;\n\n\t\tthis._diffuseLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Define which light source types to use for specular reflections. This allows choosing between regular lights\n\t * and/or light probes for specular reflections.\n\t *\n\t * @see away3d.materials.LightSources\n\t */\n\tpublic get specularLightSources():number\n\t{\n\t\treturn this._specularLightSources;\n\t}\n\n\tpublic set specularLightSources(value:number)\n\t{\n\t\tif (this._specularLightSources == value)\n\t\t\treturn;\n\n\t\tthis._specularLightSources = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they\n\t * could be used by other materials and will not be disposed.\n\t */\n\tpublic dispose()\n\t{\n\t\tvar i:number;\n\t\tvar len:number;\n\n\t\tlen = this._renderObjects.length;\n\t\tfor (i = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].dispose();\n\n\t\tthis._renderObjects = new Array();\n\t}\n\n\t/**\n\t * Defines whether or not the material should cull triangles facing away from the camera.\n\t */\n\tpublic get bothSides():boolean\n\t{\n\t\treturn this._bothSides;\n\t}\n\n\tpublic set bothSides(value:boolean)\n\t{\n\t\tif (this._bothSides = value)\n\t\t\treturn;\n\n\t\tthis._bothSides = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The blend mode to use when drawing this renderable. The following blend modes are supported:\n\t *
    \n\t *
  • BlendMode.NORMAL: No blending, unless the material inherently needs it
  • \n\t *
  • BlendMode.LAYER: Force blending. This will draw the object the same as NORMAL, but without writing depth writes.
  • \n\t *
  • BlendMode.MULTIPLY
  • \n\t *
  • BlendMode.ADD
  • \n\t *
  • BlendMode.ALPHA
  • \n\t *
\n\t */\n\tpublic get blendMode():string\n\t{\n\t\treturn this._pBlendMode;\n\t}\n\n\tpublic set blendMode(value:string)\n\t{\n\t\tif (this._pBlendMode == value)\n\t\t\treturn;\n\n\t\tthis._pBlendMode = value;\n\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\t/**\n\t * Indicates whether visible textures (or other pixels) used by this material have\n\t * already been premultiplied. Toggle this if you are seeing black halos around your\n\t * blended alpha edges.\n\t */\n\tpublic get alphaPremultiplied():boolean\n\t{\n\t\treturn this._alphaPremultiplied;\n\t}\n\n\tpublic set alphaPremultiplied(value:boolean)\n\t{\n\t\tif (this._alphaPremultiplied == value)\n\t\t\treturn;\n\n\t\tthis._alphaPremultiplied = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t * The minimum alpha value for which pixels should be drawn. This is used for transparency that is either\n\t * invisible or entirely opaque, often used with textures for foliage, etc.\n\t * Recommended values are 0 to disable alpha, or 0.5 to create smooth edges. Default value is 0 (disabled).\n\t */\n\tpublic get alphaThreshold():number\n\t{\n\t\treturn this._pAlphaThreshold;\n\t}\n\n\tpublic set alphaThreshold(value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (this._pAlphaThreshold == value)\n\t\t\treturn;\n\n\t\tthis._pAlphaThreshold = value;\n\n\t\tthis._pInvalidatePasses();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._pWidth;\n\t}\n\n\t//\n\t// MATERIAL MANAGEMENT\n\t//\n\t/**\n\t * Mark an IRenderableOwner as owner of this material.\n\t * Assures we're not using the same material across renderables with different animations, since the\n\t * Programs depend on animation. This method needs to be called when a material is assigned.\n\t *\n\t * @param owner The IRenderableOwner that had this material assigned\n\t *\n\t * @internal\n\t */\n\tpublic iAddOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.push(owner);\n\n\t\tvar animationSet:IAnimationSet;\n\t\tvar animator:IAnimator = owner.animator;\n\n\t\tif (animator)\n\t\t\tanimationSet = animator.animationSet;\n\n\t\tif (owner.animator) {\n\t\t\tif (this._animationSet && animationSet != this._animationSet) {\n\t\t\t\tthrow new Error(\"A Material instance cannot be shared across material owners with different animation sets\");\n\t\t\t} else {\n\t\t\t\tif (this._animationSet != animationSet) {\n\n\t\t\t\t\tthis._animationSet = animationSet;\n\n\t\t\t\t\tthis.invalidateAnimation();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\towner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this));\n\t}\n\n\t/**\n\t * Removes an IRenderableOwner as owner.\n\t * @param owner\n\t *\n\t * @internal\n\t */\n\tpublic iRemoveOwner(owner:IRenderableOwner)\n\t{\n\t\tthis._owners.splice(this._owners.indexOf(owner), 1);\n\n\t\tif (this._owners.length == 0) {\n\t\t\tthis._animationSet = null;\n\n\t\t\tthis.invalidateAnimation();\n\t\t}\n\n\t\towner.dispatchEvent(new RenderableOwnerEvent(RenderableOwnerEvent.RENDER_OBJECT_OWNER_UPDATED, this));\n\t}\n\n\t/**\n\t * A list of the IRenderableOwners that use this material\n\t *\n\t * @private\n\t */\n\tpublic get iOwners():Array\n\t{\n\t\treturn this._owners;\n\t}\n\n\t/**\n\t * Marks the shader programs for all passes as invalid, so they will be recompiled before the next use.\n\t *\n\t * @private\n\t */\n\tpublic _pInvalidatePasses()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidatePasses();\n\t}\n\n\tprivate invalidateAnimation()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateAnimation();\n\t}\n\t\n\tpublic _pInvalidateRenderObject()\n\t{\n\t\tvar len:number = this._renderObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tthis._renderObjects[i].invalidateRenderObject();\n\t}\n\n\t/**\n\t * Called when the light picker's configuration changed.\n\t */\n\tprivate onLightsChange(event:Event)\n\t{\n\t\tthis._pInvalidateRenderObject();\n\t}\n\n\tpublic _pNotifySizeChanged()\n\t{\n\t\tif (!this._sizeChanged)\n\t\t\tthis._sizeChanged = new MaterialEvent(MaterialEvent.SIZE_CHANGED);\n\n\t\tthis.dispatchEvent(this._sizeChanged);\n\t}\n\n\tpublic _iAddRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.push(renderObject);\n\n\t\treturn renderObject;\n\t}\n\n\tpublic _iRemoveRenderObject(renderObject:IRenderObject):IRenderObject\n\t{\n\t\tthis._renderObjects.splice(this._renderObjects.indexOf(renderObject), 1);\n\n\t\treturn renderObject;\n\t}\n\n\t/**\n\t *\n\t * @param renderer\n\t *\n\t * @internal\n\t */\n\tpublic getRenderObject(renderablePool:IRenderablePool):IRenderObject\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = MaterialBase;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AssetType\t\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport NamedAssetBase\t\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport IAsset\t\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\n\n/**\n * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for\n * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be\n * extended to provide more application-specific dynamic selection of lights.\n *\n * @see StaticLightPicker\n */\nclass LightPickerBase extends NamedAssetBase implements IAsset\n{\n\tpublic _pNumPointLights:number = 0;\n\tpublic _pNumDirectionalLights:number = 0;\n\tpublic _pNumCastingPointLights:number = 0;\n\tpublic _pNumCastingDirectionalLights:number = 0;\n\tpublic _pNumLightProbes:number = 0;\n\n\tpublic _pAllPickedLights:Array;\n\tpublic _pPointLights:Array;\n\tpublic _pCastingPointLights:Array;\n\tpublic _pDirectionalLights:Array;\n\tpublic _pCastingDirectionalLights:Array;\n\tpublic _pLightProbes:Array;\n\tpublic _pLightProbeWeights:Array;\n\n\t/**\n\t * Creates a new LightPickerBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Disposes resources used by the light picker.\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.LIGHT_PICKER;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that will be provided.\n\t */\n\tpublic get numDirectionalLights():number\n\t{\n\t\treturn this._pNumDirectionalLights;\n\t}\n\n\t/**\n\t * The maximum amount of point lights that will be provided.\n\t */\n\tpublic get numPointLights():number\n\t{\n\t\treturn this._pNumPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of directional lights that cast shadows.\n\t */\n\tpublic get numCastingDirectionalLights():number\n\t{\n\t\treturn this._pNumCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The amount of point lights that cast shadows.\n\t */\n\tpublic get numCastingPointLights():number\n\t{\n\t\treturn this._pNumCastingPointLights;\n\t}\n\n\t/**\n\t * The maximum amount of light probes that will be provided.\n\t */\n\tpublic get numLightProbes():number\n\t{\n\t\treturn this._pNumLightProbes;\n\t}\n\n\t/**\n\t * The collected point lights to be used for shading.\n\t */\n\tpublic get pointLights():Array\n\t{\n\t\treturn this._pPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights to be used for shading.\n\t */\n\tpublic get directionalLights():Array\n\t{\n\t\treturn this._pDirectionalLights;\n\t}\n\n\t/**\n\t * The collected point lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingPointLights():Array\n\t{\n\t\treturn this._pCastingPointLights;\n\t}\n\n\t/**\n\t * The collected directional lights that cast shadows to be used for shading.\n\t */\n\tpublic get castingDirectionalLights():Array\n\t{\n\t\treturn this._pCastingDirectionalLights;\n\t}\n\n\t/**\n\t * The collected light probes to be used for shading.\n\t */\n\tpublic get lightProbes():Array\n\t{\n\t\treturn this._pLightProbes;\n\t}\n\n\t/**\n\t * The weights for each light probe, defining their influence on the object.\n\t */\n\tpublic get lightProbeWeights():Array\n\t{\n\t\treturn this._pLightProbeWeights;\n\t}\n\n\t/**\n\t * A collection of all the collected lights.\n\t */\n\tpublic get allPickedLights():Array\n\t{\n\t\treturn this._pAllPickedLights;\n\t}\n\n\t/**\n\t * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code.\n\t */\n\tpublic collectLights(renderable:IRenderable)\n\t{\n\t\tthis.updateProbeWeights(renderable);\n\t}\n\n\t/**\n\t * Updates the weights for the light probes, based on the renderable's position relative to them.\n\t * @param renderable The renderble for which to calculate the light probes' influence.\n\t */\n\tprivate updateProbeWeights(renderable:IRenderable)\n\t{\n\t\t// todo: this will cause the same calculations to occur per TriangleSubMesh. See if this can be improved.\n\t\tvar objectPos:Vector3D = renderable.sourceEntity.scenePosition;\n\t\tvar lightPos:Vector3D;\n\n\t\tvar rx:number = objectPos.x, ry:number = objectPos.y, rz:number = objectPos.z;\n\t\tvar dx:number, dy:number, dz:number;\n\t\tvar w:number, total:number = 0;\n\t\tvar i:number;\n\n\t\t// calculates weights for probes\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i) {\n\n\t\t\tlightPos = this._pLightProbes[i].scenePosition;\n\t\t\tdx = rx - lightPos.x;\n\t\t\tdy = ry - lightPos.y;\n\t\t\tdz = rz - lightPos.z;\n\t\t\t// weight is inversely proportional to square of distance\n\t\t\tw = dx*dx + dy*dy + dz*dz;\n\n\t\t\t// just... huge if at the same spot\n\t\t\tw = w > .00001? 1/w : 50000000;\n\t\t\tthis._pLightProbeWeights[i] = w;\n\t\t\ttotal += w;\n\t\t}\n\n\t\t// normalize\n\t\ttotal = 1/total;\n\n\t\tfor (i = 0; i < this._pNumLightProbes; ++i)\n\t\t\tthis._pLightProbeWeights[i] *= total;\n\t}\n}\n\nexport = LightPickerBase;","import Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\n\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport LightEvent\t\t\t\t\t= require(\"awayjs-display/lib/events/LightEvent\");\nimport LightPickerBase\t\t\t\t= require(\"awayjs-display/lib/materials/lightpickers/LightPickerBase\");\n\n/**\n * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but\n * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may\n * occur.\n */\nclass StaticLightPicker extends LightPickerBase\n{\n\tprivate _lights:Array;\n\tprivate _onCastShadowChangeDelegate:Function;\n\n\t/**\n\t * Creates a new StaticLightPicker object.\n\t * @param lights The lights to be used for shading.\n\t */\n\tconstructor(lights)\n\t{\n\t\tsuper();\n\n\t\tthis._onCastShadowChangeDelegate = (event:LightEvent) => this.onCastShadowChange(event);\n\n\t\tthis.lights = lights;\n\t}\n\n\t/**\n\t * The lights used for shading.\n\t */\n\tpublic get lights()\n\t{\n\t\treturn this._lights;\n\t}\n\n\tpublic set lights(value:Array)\n\t{\n\t\tvar numPointLights:number = 0;\n\t\tvar numDirectionalLights:number = 0;\n\t\tvar numCastingPointLights:number = 0;\n\t\tvar numCastingDirectionalLights:number = 0;\n\t\tvar numLightProbes:number = 0;\n\t\tvar light:LightBase;\n\n\t\tif (this._lights)\n\t\t\tthis.clearListeners();\n\n\t\tthis._lights = value;\n\t\tthis._pAllPickedLights = value;\n\t\tthis._pPointLights = new Array();\n\t\tthis._pCastingPointLights = new Array();\n\t\tthis._pDirectionalLights = new Array();\n\t\tthis._pCastingDirectionalLights = new Array();\n\t\tthis._pLightProbes = new Array();\n\n\t\tvar len:number = value.length;\n\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tlight = value[i];\n\t\t\tlight.addEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\n\t\t\tif (light instanceof PointLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingPointLights[numCastingPointLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pPointLights[numPointLights++] = light;\n\n\t\t\t} else if (light instanceof DirectionalLight) {\n\t\t\t\tif (light.castsShadows)\n\t\t\t\t\tthis._pCastingDirectionalLights[numCastingDirectionalLights++] = light;\n\t\t\t\telse\n\t\t\t\t\tthis._pDirectionalLights[numDirectionalLights++] = light;\n\n\t\t\t} else if (light instanceof LightProbe) {\n\t\t\t\tthis._pLightProbes[numLightProbes++] = light;\n\t\t\t}\n\t\t}\n\n\t\tif (this._pNumDirectionalLights == numDirectionalLights && this._pNumPointLights == numPointLights && this._pNumLightProbes == numLightProbes && this._pNumCastingPointLights == numCastingPointLights && this._pNumCastingDirectionalLights == numCastingDirectionalLights)\n\t\t\treturn;\n\n\t\tthis._pNumDirectionalLights = numDirectionalLights;\n\t\tthis._pNumCastingDirectionalLights = numCastingDirectionalLights;\n\t\tthis._pNumPointLights = numPointLights;\n\t\tthis._pNumCastingPointLights = numCastingPointLights;\n\t\tthis._pNumLightProbes = numLightProbes;\n\n\t\t// MUST HAVE MULTIPLE OF 4 ELEMENTS!\n\t\tthis._pLightProbeWeights = new Array(Math.ceil(numLightProbes/4)*4);\n\n\t\t// notify material lights have changed\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\n\t}\n\n\t/**\n\t * Remove configuration change listeners on the lights.\n\t */\n\tprivate clearListeners()\n\t{\n\t\tvar len:number = this._lights.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._lights[i].removeEventListener(LightEvent.CASTS_SHADOW_CHANGE, this._onCastShadowChangeDelegate);\n\t}\n\n\t/**\n\t * Notifies the material of a configuration change.\n\t */\n\tprivate onCastShadowChange(event:LightEvent)\n\t{\n\t\t// TODO: Assign to special caster collections, just append it to the lights in SinglePass\n\t\t// But keep seperated in multipass\n\n\t\tvar light:LightBase = event.target;\n\n\t\tif (light instanceof PointLight)\n\t\t\tthis.updatePointCasting( light);\n\t\telse if (light instanceof DirectionalLight)\n\t\t\tthis.updateDirectionalCasting( light);\n\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\t/**\n\t * Called when a directional light's shadow casting configuration changes.\n\t */\n\tprivate updateDirectionalCasting(light:DirectionalLight)\n\t{\n\t\tvar dl:DirectionalLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumDirectionalLights;\n\t\t\t++this._pNumCastingDirectionalLights;\n\n\n\t\t\tthis._pDirectionalLights.splice(this._pDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pCastingDirectionalLights.push(light);\n\n\t\t} else {\n\t\t\t++this._pNumDirectionalLights;\n\t\t\t--this._pNumCastingDirectionalLights;\n\n\t\t\tthis._pCastingDirectionalLights.splice(this._pCastingDirectionalLights.indexOf(dl), 1);\n\t\t\tthis._pDirectionalLights.push(light);\n\t\t}\n\t}\n\n\t/**\n\t * Called when a point light's shadow casting configuration changes.\n\t */\n\tprivate updatePointCasting(light:PointLight)\n\t{\n\t\tvar pl:PointLight = light;\n\n\t\tif (light.castsShadows) {\n\t\t\t--this._pNumPointLights;\n\t\t\t++this._pNumCastingPointLights;\n\t\t\tthis._pPointLights.splice(this._pPointLights.indexOf(pl), 1);\n\t\t\tthis._pCastingPointLights.push(light);\n\t\t} else {\n\t\t\t++this._pNumPointLights;\n\t\t\t--this._pNumCastingPointLights;\n\n\t\t\tthis._pCastingPointLights.splice(this._pCastingPointLights.indexOf(pl), 1);\n\t\t\tthis._pPointLights.push(light);\n\t\t}\n\t}\n}\n\nexport = StaticLightPicker;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3DUtils\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Event\t\t\t\t\t\t= require(\"awayjs-core/lib/events/Event\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IEventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/IEventDispatcher\");\nimport FreeMatrixProjection\t\t\t= require(\"awayjs-core/lib/projections/FreeMatrixProjection\");\nimport IProjection\t\t\t\t\t= require(\"awayjs-core/lib/projections/IProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass CascadeShadowMapper extends DirectionalShadowMapper implements IEventDispatcher\n{\n\tpublic _pScissorRects:Rectangle[];\n\tprivate _pScissorRectsInvalid:boolean = true;\n\tprivate _splitRatios:number[];\n\n\tprivate _numCascades:number /*int*/;\n\tprivate _depthCameras:Array;\n\tprivate _depthLenses:Array;\n\n\tprivate _texOffsetsX:Array;\n\tprivate _texOffsetsY:Array;\n\n\tprivate _changeDispatcher:EventDispatcher;\n\tprivate _nearPlaneDistances:number[];\n\n\tconstructor(numCascades:number /*uint*/ = 3)\n\t{\n\t\tsuper();\n\n\t\tif (numCascades < 1 || numCascades > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = numCascades;\n\t\tthis._changeDispatcher = new EventDispatcher(this);\n\t\tthis.init();\n\t}\n\n\tpublic getSplitRatio(index:number /*uint*/):number\n\t{\n\t\treturn this._splitRatios[index];\n\t}\n\n\tpublic setSplitRatio(index:number /*uint*/, value:number)\n\t{\n\t\tif (value < 0)\n\t\t\tvalue = 0;\n\t\telse if (value > 1)\n\t\t\tvalue = 1;\n\n\t\tif (index >= this._numCascades)\n\t\t\tthrow new Error(\"index must be smaller than the number of cascades!\");\n\n\t\tthis._splitRatios[index] = value;\n\t}\n\n\tpublic getDepthProjections(partition:number /*uint*/):Matrix3D\n\t{\n\t\treturn this._depthCameras[partition].viewProjection;\n\t}\n\n\tprivate init()\n\t{\n\t\tthis._splitRatios = new Array(this._numCascades);\n\t\tthis._nearPlaneDistances = new Array(this._numCascades);\n\n\t\tvar s:number = 1;\n\t\tfor (var i:number /*int*/ = this._numCascades - 1; i >= 0; --i) {\n\t\t\tthis._splitRatios[i] = s;\n\t\t\ts *= .4;\n\t\t}\n\n\t\tthis._texOffsetsX = Array(-1, 1, -1, 1);\n\t\tthis._texOffsetsY = Array(1, 1, -1, -1);\n\t\tthis._pScissorRects = new Array(4);\n\t\tthis._depthLenses = new Array();\n\t\tthis._depthCameras = new Array();\n\n\t\tfor (i = 0; i < this._numCascades; ++i) {\n\t\t\tthis._depthLenses[i] = new FreeMatrixProjection();\n\t\t\tthis._depthCameras[i] = new Camera(this._depthLenses[i]);\n\t\t}\n\t}\n\n\tpublic _pSetDepthMapSize(value:number /*uint*/)\n\t{\n\t\tsuper._pSetDepthMapSize(value);\n\n\t\tthis.invalidateScissorRects();\n\t}\n\n\tprivate invalidateScissorRects()\n\t{\n\t\tthis._pScissorRectsInvalid = true;\n\t}\n\n\tpublic get numCascades():number /*int*/\n\t{\n\t\treturn this._numCascades;\n\t}\n\n\tpublic set numCascades(value:number /*int*/)\n\t{\n\t\tif (value == this._numCascades)\n\t\t\treturn;\n\n\t\tif (value < 1 || value > 4)\n\t\t\tthrow new Error(\"numCascades must be an integer between 1 and 4\");\n\n\t\tthis._numCascades = value;\n\t\tthis.invalidateScissorRects();\n\t\tthis.init();\n\t\tthis.dispatchEvent(new Event(Event.CHANGE));\n\t}\n\n\tpublic pDrawDepthMap(target:RenderTexture, scene:Scene, renderer:IRenderer)\n\t{\n\t\tif (this._pScissorRectsInvalid)\n\t\t\tthis.updateScissorRects();\n\n\t\tthis._pCasterCollector.cullPlanes = this._pCullPlanes;\n\t\tthis._pCasterCollector.camera = this._pOverallDepthCamera;\n\t\tthis._pCasterCollector.clear();\n\t\tscene.traversePartitions(this._pCasterCollector);\n\n\t\trenderer._iRenderCascades(this._pCasterCollector, target, this._numCascades, this._pScissorRects, this._depthCameras);\n\t}\n\n\tprivate updateScissorRects()\n\t{\n\t\tvar half:number = this._pDepthMapSize*.5;\n\n\t\tthis._pScissorRects[0] = new Rectangle(0, 0, half, half);\n\t\tthis._pScissorRects[1] = new Rectangle(half, 0, half, half);\n\t\tthis._pScissorRects[2] = new Rectangle(0, half, half, half);\n\t\tthis._pScissorRects[3] = new Rectangle(half, half, half, half);\n\n\t\tthis._pScissorRectsInvalid = false;\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar matrix:Matrix3D;\n\t\tvar projection:IProjection = viewCamera.projection;\n\t\tvar projectionNear:number = projection.near;\n\t\tvar projectionRange:number = projection.far - projectionNear;\n\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, viewCamera.projection.frustumCorners, this._pMatrix);\n\t\tthis._pMatrix.appendScale(.96, .96, 1);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t\tthis.pUpdateCullPlanes(viewCamera);\n\n\t\tfor (var i:number /*int*/ = 0; i < this._numCascades; ++i) {\n\t\t\tmatrix = this._depthLenses[i].matrix;\n\n\t\t\tthis._nearPlaneDistances[i] = projectionNear + this._splitRatios[i]*projectionRange;\n\t\t\tthis._depthCameras[i].transform = this._pOverallDepthCamera.transform;\n\n\t\t\tthis.updateProjectionPartition(matrix, this._splitRatios[i], this._texOffsetsX[i], this._texOffsetsY[i]);\n\n\t\t\tthis._depthLenses[i].matrix = matrix;\n\t\t}\n\t}\n\n\tprivate updateProjectionPartition(matrix:Matrix3D, splitRatio:number, texOffsetX:number, texOffsetY:number)\n\t{\n\t\tvar raw:Array = Matrix3DUtils.RAW_DATA_CONTAINER;\n\t\tvar xN:number, yN:number, zN:number;\n\t\tvar xF:number, yF:number, zF:number;\n\t\tvar minX:number = Number.POSITIVE_INFINITY, minY:number = Number.POSITIVE_INFINITY, minZ:number;\n\t\tvar maxX:number = Number.NEGATIVE_INFINITY, maxY:number = Number.NEGATIVE_INFINITY, maxZ:number = Number.NEGATIVE_INFINITY;\n\t\tvar i:number /*uint*/ = 0;\n\n\t\twhile (i < 12) {\n\t\t\txN = this._pLocalFrustum[i];\n\t\t\tyN = this._pLocalFrustum[i + 1];\n\t\t\tzN = this._pLocalFrustum[i + 2];\n\t\t\txF = xN + (this._pLocalFrustum[i + 12] - xN)*splitRatio;\n\t\t\tyF = yN + (this._pLocalFrustum[i + 13] - yN)*splitRatio;\n\t\t\tzF = zN + (this._pLocalFrustum[i + 14] - zN)*splitRatio;\n\t\t\tif (xN < minX)\n\t\t\t\tminX = xN;\n\t\t\tif (xN > maxX)\n\t\t\t\tmaxX = xN;\n\t\t\tif (yN < minY)\n\t\t\t\tminY = yN;\n\t\t\tif (yN > maxY)\n\t\t\t\tmaxY = yN;\n\t\t\tif (zN > maxZ)\n\t\t\t\tmaxZ = zN;\n\t\t\tif (xF < minX)\n\t\t\t\tminX = xF;\n\t\t\tif (xF > maxX)\n\t\t\t\tmaxX = xF;\n\t\t\tif (yF < minY)\n\t\t\t\tminY = yF;\n\t\t\tif (yF > maxY)\n\t\t\t\tmaxY = yF;\n\t\t\tif (zF > maxZ)\n\t\t\t\tmaxZ = zF;\n\t\t\ti += 3;\n\t\t}\n\n\t\tminZ = 1;\n\n\t\tvar w:number = (maxX - minX);\n\t\tvar h:number = (maxY - minY);\n\t\tvar d:number = 1/(maxZ - minZ);\n\n\t\tif (minX < 0)\n\t\t\tminX -= this._pSnap; // because int() rounds up for < 0\n\t\tif (minY < 0)\n\t\t\tminY -= this._pSnap;\n\t\tminX = Math.floor(minX/this._pSnap)*this._pSnap;\n\t\tminY = Math.floor(minY/this._pSnap)*this._pSnap;\n\n\t\tvar snap2:number = 2*this._pSnap;\n\t\tw = Math.floor(w/snap2 + 1)*snap2;\n\t\th = Math.floor(h/snap2 + 1)*snap2;\n\n\t\tmaxX = minX + w;\n\t\tmaxY = minY + h;\n\n\t\tw = 1/w;\n\t\th = 1/h;\n\n\t\traw[0] = 2*w;\n\t\traw[5] = 2*h;\n\t\traw[10] = d;\n\t\traw[12] = -(maxX + minX)*w;\n\t\traw[13] = -(maxY + minY)*h;\n\t\traw[14] = -minZ*d;\n\t\traw[15] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\n\t\tmatrix.copyRawDataFrom(raw);\n\t\tmatrix.appendScale(.96, .96, 1);\n\t\tmatrix.appendTranslation(texOffsetX, texOffsetY, 0);\n\t\tmatrix.appendScale(.5, .5, 1);\n\t}\n\n\tpublic addEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.addEventListener(type, listener);\n\t}\n\n\tpublic removeEventListener(type:string, listener:Function)\n\t{\n\t\tthis._changeDispatcher.removeEventListener(type, listener);\n\t}\n\n\tpublic dispatchEvent(event:Event)\n\t{\n\t\treturn this._changeDispatcher.dispatchEvent(event);\n\t}\n\n\tpublic hasEventListener(type:string):boolean\n\t{\n\t\treturn this._changeDispatcher.hasEventListener(type);\n\t}\n\n\tget _iNearPlaneDistances():Array\n\t{\n\t\treturn this._nearPlaneDistances;\n\t}\n}\n\nexport = CascadeShadowMapper;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PartialImplementationError\t= require(\"awayjs-core/lib/errors/PartialImplementationError\");\nimport PerspectiveProjection\t\t= require(\"awayjs-core/lib/projections/PerspectiveProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport ShadowMapperBase\t\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass CubeMapShadowMapper extends ShadowMapperBase\n{\n\tprivate _depthCameras:Array;\n\tprivate _projections:Array;\n\tprivate _needsRender:Array;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pDepthMapSize = 512;\n\t\tthis._needsRender = new Array();\n\t\tthis.initCameras();\n\t}\n\n\tprivate initCameras()\n\t{\n\t\tthis._depthCameras = new Array();\n\t\tthis._projections = new Array();\n\n\t\t// posX, negX, posY, negY, posZ, negZ\n\t\tthis.addCamera(0, 90, 0);\n\t\tthis.addCamera(0, -90, 0);\n\t\tthis.addCamera(-90, 0, 0);\n\t\tthis.addCamera(90, 0, 0);\n\t\tthis.addCamera(0, 0, 0);\n\t\tthis.addCamera(0, 180, 0);\n\t}\n\n\tprivate addCamera(rotationX:number, rotationY:number, rotationZ:number)\n\t{\n\t\tvar cam:Camera = new Camera();\n\t\tcam.rotationX = rotationX;\n\t\tcam.rotationY = rotationY;\n\t\tcam.rotationZ = rotationZ;\n\t\tcam.projection.near = .01;\n\n\t\tvar projection:PerspectiveProjection = cam.projection;\n\t\tprojection.fieldOfView = 90;\n\t\tthis._projections.push(projection);\n\t\tcam.projection._iAspectRatio = 1;\n\t\tthis._depthCameras.push(cam);\n\t}\n\n\t//@override\n\tpublic pCreateDepthTexture():TextureProxyBase\n\t{\n\t\tthrow new PartialImplementationError();\n\t\t/*\n\t\t return new RenderCubeTexture( this._depthMapSize );\n\t\t */\n\t}\n\n\t//@override\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar light:PointLight = (this._pLight);\n\t\tvar maxDistance:number = light._pFallOff;\n\t\tvar pos:Vector3D = this._pLight.scenePosition;\n\n\t\t// todo: faces outside frustum which are pointing away from camera need not be rendered!\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tthis._projections[i].far = maxDistance;\n\t\t\tthis._depthCameras[i].transform.position = pos;\n\t\t\tthis._needsRender[i] = true;\n\t\t}\n\t}\n\n\t//@override\n\tpublic pDrawDepthMap(target:RenderTexture, scene:Scene, renderer:IRenderer)\n\t{\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tif (this._needsRender[i]) {\n\t\t\t\tthis._pCasterCollector.camera = this._depthCameras[i];\n\t\t\t\tthis._pCasterCollector.clear();\n\t\t\t\tscene.traversePartitions(this._pCasterCollector);\n\t\t\t\trenderer._iRender(this._pCasterCollector, target, null, i)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport = CubeMapShadowMapper;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport FreeMatrixProjection\t\t\t= require(\"awayjs-core/lib/projections/FreeMatrixProjection\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport ShadowMapperBase\t\t\t\t= require(\"awayjs-display/lib/materials/shadowmappers/ShadowMapperBase\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass DirectionalShadowMapper extends ShadowMapperBase\n{\n\tpublic _pOverallDepthCamera:Camera;\n\tpublic _pLocalFrustum:Array;\n\n\tpublic _pLightOffset:number = 10000;\n\tpublic _pMatrix:Matrix3D;\n\tpublic _pOverallDepthProjection:FreeMatrixProjection;\n\tpublic _pSnap:number = 64;\n\n\tpublic _pCullPlanes:Array;\n\tpublic _pMinZ:number;\n\tpublic _pMaxZ:number;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pCullPlanes = [];\n\t\tthis._pOverallDepthProjection = new FreeMatrixProjection();\n\t\tthis._pOverallDepthCamera = new Camera(this._pOverallDepthProjection);\n\t\tthis._pLocalFrustum = [];\n\t\tthis._pMatrix = new Matrix3D();\n\t}\n\n\tpublic get snap():number\n\t{\n\t\treturn this._pSnap;\n\t}\n\n\tpublic set snap(value:number)\n\t{\n\t\tthis._pSnap = value;\n\t}\n\n\tpublic get lightOffset():number\n\t{\n\t\treturn this._pLightOffset;\n\t}\n\n\tpublic set lightOffset(value:number)\n\t{\n\t\tthis._pLightOffset = value;\n\t}\n\n\t//@arcane\n\tpublic get iDepthProjection():Matrix3D\n\t{\n\t\treturn this._pOverallDepthCamera.viewProjection;\n\t}\n\n\t//@arcane\n\tpublic get depth():number\n\t{\n\t\treturn this._pMaxZ - this._pMinZ;\n\t}\n\n\t//@override\n\tpublic pDrawDepthMap(target:TextureProxyBase, scene:Scene, renderer:IRenderer)\n\t{\n\t\tthis._pCasterCollector.camera = this._pOverallDepthCamera;\n\t\tthis._pCasterCollector.cullPlanes = this._pCullPlanes;\n\t\tthis._pCasterCollector.clear();\n\t\tscene.traversePartitions(this._pCasterCollector);\n\t\trenderer._iRender(this._pCasterCollector, target);\n\t}\n\n\t//@protected\n\tpublic pUpdateCullPlanes(viewCamera:Camera)\n\t{\n\t\tvar lightFrustumPlanes:Array = this._pOverallDepthCamera.frustumPlanes;\n\t\tvar viewFrustumPlanes:Array = viewCamera.frustumPlanes;\n\t\tthis._pCullPlanes.length = 4;\n\n\t\tthis._pCullPlanes[0] = lightFrustumPlanes[0];\n\t\tthis._pCullPlanes[1] = lightFrustumPlanes[1];\n\t\tthis._pCullPlanes[2] = lightFrustumPlanes[2];\n\t\tthis._pCullPlanes[3] = lightFrustumPlanes[3];\n\n\t\tvar light:DirectionalLight = this._pLight;\n\t\tvar dir:Vector3D = light.sceneDirection;\n\t\tvar dirX:number = dir.x;\n\t\tvar dirY:number = dir.y;\n\t\tvar dirZ:number = dir.z;\n\t\tvar j:number = 4;\n\t\tfor (var i:number = 0; i < 6; ++i) {\n\t\t\tvar plane:Plane3D = viewFrustumPlanes[i];\n\t\t\tif (plane.a*dirX + plane.b*dirY + plane.c*dirZ < 0)\n\t\t\t\tthis._pCullPlanes[j++] = plane;\n\t\t}\n\t}\n\n\t//@override\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, viewCamera.projection.frustumCorners, this._pMatrix);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t\tthis.pUpdateCullPlanes(viewCamera);\n\t}\n\n\tpublic pUpdateProjectionFromFrustumCorners(viewCamera:Camera, corners:Array, matrix:Matrix3D)\n\t{\n\t\tvar raw:Array = new Array();\n\t\tvar dir:Vector3D;\n\t\tvar x:number, y:number, z:number;\n\t\tvar minX:number, minY:number;\n\t\tvar maxX:number, maxY:number;\n\t\tvar i:number;\n\n\t\tvar light:DirectionalLight = this._pLight;\n\t\tdir = light.sceneDirection;\n\t\tthis._pOverallDepthCamera.transform.matrix3D = this._pLight.sceneTransform;\n\t\tx = Math.floor((viewCamera.x - dir.x*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\ty = Math.floor((viewCamera.y - dir.y*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\tz = Math.floor((viewCamera.z - dir.z*this._pLightOffset)/this._pSnap)*this._pSnap;\n\t\tthis._pOverallDepthCamera.x = x;\n\t\tthis._pOverallDepthCamera.y = y;\n\t\tthis._pOverallDepthCamera.z = z;\n\n\t\tthis._pMatrix.copyFrom(this._pOverallDepthCamera.inverseSceneTransform);\n\t\tthis._pMatrix.prepend(viewCamera.sceneTransform);\n\t\tthis._pMatrix.transformVectors(corners, this._pLocalFrustum);\n\n\t\tminX = maxX = this._pLocalFrustum[0];\n\t\tminY = maxY = this._pLocalFrustum[1];\n\t\tthis._pMaxZ = this._pLocalFrustum[2];\n\n\t\ti = 3;\n\t\twhile (i < 24) {\n\t\t\tx = this._pLocalFrustum[i];\n\t\t\ty = this._pLocalFrustum[i + 1];\n\t\t\tz = this._pLocalFrustum[i + 2];\n\t\t\tif (x < minX)\n\t\t\t\tminX = x;\n\t\t\tif (x > maxX)\n\t\t\t\tmaxX = x;\n\t\t\tif (y < minY)\n\t\t\t\tminY = y;\n\t\t\tif (y > maxY)\n\t\t\t\tmaxY = y;\n\t\t\tif (z > this._pMaxZ)\n\t\t\t\tthis._pMaxZ = z;\n\t\t\ti += 3;\n\t\t}\n\n\t\tthis._pMinZ = 1;\n\n\t\tvar w:number = maxX - minX;\n\t\tvar h:number = maxY - minY;\n\t\tvar d:number = 1/(this._pMaxZ - this._pMinZ);\n\n\t\tif (minX < 0)\n\t\t\tminX -= this._pSnap; // because int() rounds up for < 0\n\n\t\tif (minY < 0)\n\t\t\tminY -= this._pSnap;\n\n\t\tminX = Math.floor(minX/this._pSnap)*this._pSnap;\n\t\tminY = Math.floor(minY/this._pSnap)*this._pSnap;\n\n\t\tvar snap2:number = 2*this._pSnap;\n\t\tw = Math.floor(w/snap2 + 2)*snap2;\n\t\th = Math.floor(h/snap2 + 2)*snap2;\n\n\t\tmaxX = minX + w;\n\t\tmaxY = minY + h;\n\n\t\tw = 1/w;\n\t\th = 1/h;\n\n\t\traw[0] = 2*w;\n\t\traw[5] = 2*h;\n\t\traw[10] = d;\n\t\traw[12] = -(maxX + minX)*w;\n\t\traw[13] = -(maxY + minY)*h;\n\t\traw[14] = -this._pMinZ*d;\n\t\traw[15] = 1;\n\t\traw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;\n\n\t\tmatrix.copyRawDataFrom(raw);\n\t}\n}\n\nexport = DirectionalShadowMapper;","import Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport DirectionalShadowMapper\t\t= require(\"awayjs-display/lib/materials/shadowmappers/DirectionalShadowMapper\");\n\nclass NearDirectionalShadowMapper extends DirectionalShadowMapper\n{\n\tprivate _coverageRatio:number;\n\n\tconstructor(coverageRatio:number = .5)\n\t{\n\t\tsuper();\n\n\t\tthis.coverageRatio = coverageRatio;\n\t}\n\n\t/**\n\t * A value between 0 and 1 to indicate the ratio of the view frustum that needs to be covered by the shadow map.\n\t */\n\tpublic get coverageRatio():number\n\t{\n\t\treturn this._coverageRatio;\n\t}\n\n\tpublic set coverageRatio(value:number)\n\t{\n\t\tif (value > 1)\n\t\t\tvalue = 1; else if (value < 0)\n\t\t\tvalue = 0;\n\n\t\tthis._coverageRatio = value;\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tvar corners:Array = viewCamera.projection.frustumCorners;\n\n\t\tfor (var i:number /*int*/ = 0; i < 12; ++i) {\n\t\t\tvar v:number = corners[i];\n\t\t\tthis._pLocalFrustum[i] = v;\n\t\t\tthis._pLocalFrustum[i + 12] = v + (corners[i + 12] - v)*this._coverageRatio;\n\t\t}\n\n\t\tthis.pUpdateProjectionFromFrustumCorners(viewCamera, this._pLocalFrustum, this._pMatrix);\n\t\tthis._pOverallDepthProjection.matrix = this._pMatrix;\n\t}\n}\n\nexport = NearDirectionalShadowMapper;","import AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ShadowCasterCollector\t\t= require(\"awayjs-display/lib/traverse/ShadowCasterCollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport RenderTexture\t\t\t\t= require(\"awayjs-core/lib/textures/RenderTexture\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\nclass ShadowMapperBase\n{\n\n\tpublic _pCasterCollector:ShadowCasterCollector;\n\n\tprivate _depthMap:TextureProxyBase;\n\tpublic _pDepthMapSize:number = 2048;\n\tpublic _pLight:LightBase;\n\tprivate _explicitDepthMap:boolean;\n\tprivate _autoUpdateShadows:boolean = true;\n\tpublic _iShadowsInvalid:boolean;\n\n\tconstructor()\n\t{\n\t\tthis._pCasterCollector = this.pCreateCasterCollector();\n\t}\n\n\tpublic pCreateCasterCollector()\n\t{\n\t\treturn new ShadowCasterCollector();\n\t}\n\n\tpublic get autoUpdateShadows():boolean\n\t{\n\t\treturn this._autoUpdateShadows;\n\t}\n\n\tpublic set autoUpdateShadows(value:boolean)\n\t{\n\t\tthis._autoUpdateShadows = value;\n\t}\n\n\tpublic updateShadows()\n\t{\n\t\tthis._iShadowsInvalid = true;\n\t}\n\n\tpublic iSetDepthMap(depthMap:TextureProxyBase)\n\t{\n\t\tif (this._depthMap == depthMap)\n\t\t\treturn;\n\n\t\tif (this._depthMap && !this._explicitDepthMap)\n\t\t\tthis._depthMap.dispose();\n\n\t\tthis._depthMap = depthMap;\n\n\t\tif (this._depthMap) {\n\t\t\tthis._explicitDepthMap = true;\n\t\t\tthis._pDepthMapSize = this._depthMap.size;\n\t\t} else {\n\t\t\tthis._explicitDepthMap = false;\n\t\t}\n\t}\n\n\tpublic get light():LightBase\n\t{\n\t\treturn this._pLight;\n\t}\n\n\tpublic set light(value:LightBase)\n\t{\n\t\tthis._pLight = value;\n\t}\n\n\tpublic get depthMap():TextureProxyBase\n\t{\n\t\tif (!this._depthMap)\n\t\t\tthis._depthMap = this.pCreateDepthTexture();\n\n\t\treturn this._depthMap;\n\t}\n\n\tpublic get depthMapSize():number\n\t{\n\t\treturn this._pDepthMapSize;\n\t}\n\n\tpublic set depthMapSize(value:number)\n\t{\n\t\tif (value == this._pDepthMapSize)\n\t\t\treturn;\n\n\t\tthis._pSetDepthMapSize(value);\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._pCasterCollector = null;\n\n\t\tif (this._depthMap && !this._explicitDepthMap)\n\t\t\tthis._depthMap.dispose();\n\n\t\tthis._depthMap = null;\n\t}\n\n\tpublic pCreateDepthTexture():TextureProxyBase\n\t{\n\t\treturn new RenderTexture(this._pDepthMapSize, this._pDepthMapSize);\n\t}\n\n\tpublic iRenderDepthMap(entityCollector:EntityCollector, renderer:IRenderer)\n\t{\n\t\tthis._iShadowsInvalid = false;\n\n\t\tthis.pUpdateDepthProjection(entityCollector.camera);\n\n\t\tif (!this._depthMap)\n\t\t\tthis._depthMap = this.pCreateDepthTexture();\n\n\t\tthis.pDrawDepthMap(this._depthMap, entityCollector.scene, renderer);\n\t}\n\n\tpublic pUpdateDepthProjection(viewCamera:Camera)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic pDrawDepthMap(target:TextureProxyBase, scene:Scene, renderer:IRenderer)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _pSetDepthMapSize(value)\n\t{\n\t\tthis._pDepthMapSize = value;\n\n\t\tif (this._explicitDepthMap) {\n\t\t\tthrow Error(\"Cannot set depth map size for the current renderer.\");\n\t\t} else if (this._depthMap) {\n\t\t\tthis._depthMap.dispose();\n\t\t\tthis._depthMap = null;\n\t\t}\n\t}\n}\n\nexport = ShadowMapperBase;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.CameraNode\n */\nclass CameraNode extends EntityNode\n{\n\tconstructor(camera:IEntity)\n\t{\n\t\tsuper(camera);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\t// todo: dead end for now, if it has a debug mesh, then sure accept that\n\t}\n}\n\nexport = CameraNode;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.DirectionalLightNode\n */\nclass DirectionalLightNode extends EntityNode\n{\n\tprivate _directionalLight:IEntity;\n\n\t/**\n\t *\n\t * @param directionalLight\n\t */\n\tconstructor(directionalLight:IEntity)\n\t{\n\t\tsuper(directionalLight);\n\n\t\tthis._directionalLight = directionalLight;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyDirectionalLight(this._directionalLight);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = DirectionalLightNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport PartialImplementationError\t= require(\"awayjs-core/lib/errors/PartialImplementationError\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.EntityNode\n */\nclass EntityNode extends NodeBase\n{\n\n\tprivate _entity:IEntity;\n\tpublic _iUpdateQueueNext:EntityNode;\n\n\tconstructor(entity:IEntity)\n\t{\n\t\tsuper();\n\t\tthis._entity = entity;\n\t\tthis._iNumEntities = 1;\n\t}\n\n\tpublic get entity():IEntity\n\t{\n\t\treturn this._entity;\n\t}\n\n\tpublic removeFromParent():void\n\t{\n\t\tif (this._iParent)\n\t\t\tthis._iParent.iRemoveNode(this);\n\n\t\tthis._iParent = null;\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn this.entity.castsShadows;\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\tif (!this._entity._iIsVisible())\n\t\t\treturn false;\n\n\t\treturn this._entity.worldBounds.isInFrustum(planes, numPlanes);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyEntity(this._entity);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\tif (!this._entity._iIsVisible())\n\t\t\treturn false;\n\n\t\treturn this._entity.isIntersectingRay(rayPosition, rayDirection);\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic _pCreateBoundsPrimitive():IEntity\n\t{\n\t\tthrow new PartialImplementationError();\n\t\t//return this._entity.bounds.boundingEntity;\n\t}\n}\n\nexport = EntityNode;","import EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.LightProbeNode\n */\nclass LightProbeNode extends EntityNode\n{\n\tprivate _lightProbe:IEntity;\n\n\t/**\n\t *\n\t * @param lightProbe\n\t */\n\tconstructor(lightProbe:IEntity)\n\t{\n\t\tsuper(lightProbe);\n\n\t\tthis._lightProbe = lightProbe;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode(this))\n\t\t\ttraverser.applyLightProbe(this._lightProbe);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = LightProbeNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.NodeBase\n */\nclass NodeBase\n{\n\tprivate _boundsChildrenVisible:boolean;\n\tprivate _explicitBoundsVisible:boolean;\n\tprivate _implicitBoundsVisible:boolean;\n\tpublic _iParent:NodeBase;\n\tpublic _pChildNodes:Array;\n\tpublic _pNumChildNodes:number = 0;\n\tpublic _pBoundsPrimitive:IEntity;\n\n\tpublic _iNumEntities:number = 0;\n\tpublic _iCollectionMark:number;// = 0;\n\n\t/**\n\t *\n\t */\n\tpublic get boundsVisible():boolean\n\t{\n\t\treturn this._explicitBoundsVisible;\n\t}\n\n\tpublic set boundsVisible(value:boolean)\n\t{\n\t\tif (this._explicitBoundsVisible == value)\n\t\t\treturn;\n\n\t\tthis._explicitBoundsVisible = value;\n\n\t\tthis._iUpdateImplicitBoundsVisible(this._iParent? this._iParent.boundsChildrenVisible : false);\n\n\t}\n\n\tpublic get boundsChildrenVisible():boolean\n\t{\n\t\treturn this._boundsChildrenVisible;\n\t}\n\n\tpublic set boundsChildrenVisible(value:boolean)\n\t{\n\t\tif (this._boundsChildrenVisible == value)\n\t\t\treturn;\n\n\t\tthis._boundsChildrenVisible = value;\n\n\t\tfor (var i:number = 0; i < this._pNumChildNodes; ++i)\n\t\t\tthis._pChildNodes[i]._iUpdateImplicitBoundsVisible(this._boundsChildrenVisible);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get parent():NodeBase\n\t{\n\t\treturn this._iParent;\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic get _pNumEntities():number\n\t{\n\t\treturn this._iNumEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tthis._pChildNodes = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t * @internal\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @param rayPosition\n\t * @param rayDirection\n\t * @returns {boolean}\n\t */\n\tpublic isIntersectingRay(rayPosition:Vector3D, rayDirection:Vector3D):boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn true;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t * @returns {away.partition.NodeBase}\n\t */\n\tpublic findPartitionForEntity(entity:IEntity):NodeBase\n\t{\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param traverser\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (this._pNumEntities == 0 && !this._implicitBoundsVisible)\n\t\t\treturn;\n\n\t\tif (traverser.enterNode(this)) {\n\t\t\tvar i:number = 0;\n\n\t\t\twhile (i < this._pNumChildNodes)\n\t\t\t\tthis._pChildNodes[i++].acceptTraverser(traverser);\n\n\t\t\tif (this._implicitBoundsVisible)\n\t\t\t\tthis._pBoundsPrimitive.partitionNode.acceptTraverser(traverser);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @protected\n\t */\n\tpublic _pCreateBoundsPrimitive():IEntity\n\t{\n\t\treturn null;\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @internal\n\t */\n\tpublic iAddNode(node:NodeBase)\n\t{\n\t\tnode._iParent = this;\n\t\tthis._iNumEntities += node._pNumEntities;\n\t\tthis._pChildNodes[ this._pNumChildNodes++ ] = node;\n\n\t\tnode._iUpdateImplicitBoundsVisible(this.boundsChildrenVisible);\n\n\t\tvar numEntities:number = node._pNumEntities;\n\t\tnode = this;\n\n\t\tdo {\n\t\t\tnode._iNumEntities += numEntities;\n\t\t} while ((node = node._iParent) != null);\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @internal\n\t */\n\tpublic iRemoveNode(node:NodeBase)\n\t{\n\t\tvar index:number = this._pChildNodes.indexOf(node);\n\t\tthis._pChildNodes[index] = this._pChildNodes[--this._pNumChildNodes];\n\t\tthis._pChildNodes.pop();\n\n\t\tnode._iUpdateImplicitBoundsVisible(false);\n\n\t\tvar numEntities:number = node._pNumEntities;\n\t\tnode = this;\n\n\t\tdo {\n\t\t\tnode._pNumEntities -= numEntities;\n\t\t} while ((node = node._iParent) != null);\n\t}\n\n\tprivate _iUpdateImplicitBoundsVisible(value:boolean)\n\t{\n\t\tif (this._implicitBoundsVisible == this._explicitBoundsVisible || value)\n\t\t\treturn;\n\n\t\tthis._implicitBoundsVisible = this._explicitBoundsVisible || value;\n\n\t\tthis._iUpdateEntityBounds();\n\n\t\tfor (var i:number = 0; i < this._pNumChildNodes; ++i)\n\t\t\tthis._pChildNodes[i]._iUpdateImplicitBoundsVisible(this._boundsChildrenVisible);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _iIsBoundsVisible():boolean\n\t{\n\t\treturn this._implicitBoundsVisible;\n\t}\n\n//\t\tpublic _pUpdateNumEntities(value:number)\n//\t\t{\n//\t\t\tvar diff:number = value - this._pNumEntities;\n//\t\t\tvar node:NodeBase = this;\n//\n//\t\t\tdo {\n//\t\t\t\tnode._pNumEntities += diff;\n//\t\t\t} while ((node = node._iParent) != null);\n//\t\t}\n\n\tpublic _iUpdateEntityBounds()\n\t{\n\t\tif (this._pBoundsPrimitive) {\n\t\t\tthis._pBoundsPrimitive.dispose();\n\t\t\tthis._pBoundsPrimitive = null;\n\t\t}\n\n\t\tif (this._implicitBoundsVisible)\n\t\t\tthis._pBoundsPrimitive = this._pCreateBoundsPrimitive();\n\t}\n}\n\nexport = NodeBase;","/**\n * @class away.partition.NullNode\n */\nclass NullNode\n{\n\tconstructor()\n\t{\n\t}\n}\n\nexport = NullNode;","import DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport NullNode\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NullNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\n/**\n * @class away.partition.Partition\n */\nclass Partition\n{\n\n\tpublic _rootNode:NodeBase;\n\tprivate _updatesMade:Boolean = false;\n\tprivate _updateQueue:EntityNode;\n\n\tconstructor(rootNode:NodeBase)\n\t{\n\t\tthis._rootNode = rootNode || new NullNode();\n\t}\n\n\tpublic get rootNode():NodeBase\n\t{\n\t\treturn this._rootNode;\n\t}\n\n\tpublic traverse(traverser:ICollector)\n\t{\n\t\tif (this._updatesMade)\n\t\t\tthis.updateEntities();\n\n\t\tthis._rootNode.acceptTraverser(traverser);\n\t}\n\n\tpublic iMarkForUpdate(entity:DisplayObject)\n\t{\n\t\tvar node:EntityNode = entity.partitionNode;\n\t\tvar t:EntityNode = this._updateQueue;\n\n\t\twhile (t) {\n\t\t\tif (node == t)\n\t\t\t\treturn;\n\n\t\t\tt = t._iUpdateQueueNext;\n\t\t}\n\n\t\tnode._iUpdateQueueNext = this._updateQueue;\n\n\t\tthis._updateQueue = node;\n\t\tthis._updatesMade = true;\n\t}\n\n\tpublic iRemoveEntity(entity:DisplayObject)\n\t{\n\t\tvar node:EntityNode = entity.partitionNode;\n\t\tvar t:EntityNode;\n\n\t\tnode.removeFromParent();\n\n\t\tif (node == this._updateQueue) {\n\t\t\tthis._updateQueue = node._iUpdateQueueNext;\n\t\t} else {\n\t\t\tt = this._updateQueue;\n\t\t\twhile (t && t._iUpdateQueueNext != node)\n\t\t\t\tt = t._iUpdateQueueNext;\n\n\t\t\tif (t)\n\t\t\t\tt._iUpdateQueueNext = node._iUpdateQueueNext;\n\t\t}\n\n\t\tnode._iUpdateQueueNext = null;\n\n\t\tif (!this._updateQueue)\n\t\t\tthis._updatesMade = false;\n\t}\n\n\tprivate updateEntities()\n\t{\n\t\tvar node:EntityNode = this._updateQueue;\n\t\tvar targetNode:NodeBase;\n\t\tvar t:EntityNode;\n\t\tthis._updateQueue = null;\n\t\tthis._updatesMade = false;\n\n\t\tdo {\n\t\t\ttargetNode = this._rootNode.findPartitionForEntity(node.entity);\n\n\t\t\tif (node.parent != targetNode) {\n\t\t\t\tif (node)\n\t\t\t\t\tnode.removeFromParent();\n\n\t\t\t\ttargetNode.iAddNode(node);\n\t\t\t}\n\n\t\t\tt = node._iUpdateQueueNext;\n\t\t\tnode._iUpdateQueueNext = null;\n\n\t\t\t//required for controllers with autoUpdate set to true\n\t\t\tnode.entity._iInternalUpdate();\n\n\t\t} while ((node = t) != null);\n\t}\n}\n\nexport = Partition;","import NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.partition.PointLightNode\n */\nclass PointLightNode extends EntityNode\n{\n\tprivate _pointLight:IEntity;\n\n\t/**\n\t *\n\t * @param pointLight\n\t */\n\tconstructor(pointLight:IEntity)\n\t{\n\t\tsuper(pointLight);\n\n\t\tthis._pointLight = pointLight;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode( this))\n\t\t\ttraverser.applyPointLight(this._pointLight);\n\t}\n\n\t/**\n\t *\n\t * @returns {boolean}\n\t */\n\tpublic isCastingShadow():boolean\n\t{\n\t\treturn false;\n\t}\n}\n\nexport = PointLightNode;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport EntityNode\t\t\t\t\t= require(\"awayjs-display/lib/partition/EntityNode\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * SkyboxNode is a space partitioning leaf node that contains a Skybox object.\n *\n * @class away.partition.SkyboxNode\n */\nclass SkyboxNode extends EntityNode\n{\n\tprivate _skyBox:IEntity;\n\n\t/**\n\t * Creates a new SkyboxNode object.\n\t * @param skyBox The Skybox to be contained in the node.\n\t */\n\tconstructor(skyBox:IEntity)\n\t{\n\t\tsuper(skyBox);\n\n\t\tthis._skyBox = skyBox;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic acceptTraverser(traverser:ICollector)\n\t{\n\t\tif (traverser.enterNode( this))\n\t\t\ttraverser.applySkybox(this._skyBox);\n\t}\n\n\t/**\n\t *\n\t * @param planes\n\t * @param numPlanes\n\t * @returns {boolean}\n\t */\n\tpublic isInFrustum(planes:Array, numPlanes:number):boolean\n\t{\n\t\tif (!this._skyBox._iIsVisible)\n\t\t\treturn false;\n\n\t\t//a skybox is always in view unless its visibility is set to false\n\t\treturn true;\n\t}\n}\n\nexport = SkyboxNode;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport DisplayObject\t\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\n\n/**\n * Value object for a picking collision returned by a picking collider. Created as unique objects on display objects\n *\n * @see away.base.DisplayObject#pickingCollisionVO\n * @see away.core.pick.IPickingCollider\n *\n * @class away.pick.PickingCollisionVO\n */\nclass PickingCollisionVO\n{\n\t/**\n\t * The display object to which this collision object belongs.\n\t */\n\tpublic displayObject:DisplayObject;\n\n\t/**\n\t * The local position of the collision on the entity's surface.\n\t */\n\tpublic localPosition:Vector3D;\n\n\t/**\n\t * The local normal vector at the position of the collision.\n\t */\n\tpublic localNormal:Vector3D;\n\n\t/**\n\t * The uv coordinate at the position of the collision.\n\t */\n\tpublic uv:Point;\n\n\t/**\n\t * The index of the face where the event took pl ace.\n\t */\n\tpublic index:number;\n\n\t/**\n\t * The index of the subGeometry where the event took place.\n\t */\n//\t\tpublic subGeometryIndex:number;\n\n\t/**\n\t * The starting position of the colliding ray in local coordinates.\n\t */\n\tpublic localRayPosition:Vector3D;\n\n\t/**\n\t * The direction of the colliding ray in local coordinates.\n\t */\n\tpublic localRayDirection:Vector3D;\n\n\t/**\n\t * The starting position of the colliding ray in scene coordinates.\n\t */\n\tpublic rayPosition:Vector3D;\n\n\t/**\n\t * The direction of the colliding ray in scene coordinates.\n\t */\n\tpublic rayDirection:Vector3D;\n\n\t/**\n\t * Determines if the ray position is contained within the entity bounds.\n\t *\n\t * @see away3d.entities.Entity#bounds\n\t */\n\tpublic rayOriginIsInsideBounds:boolean;\n\n\t/**\n\t * The distance along the ray from the starting position to the calculated intersection entry point with the entity.\n\t */\n\tpublic rayEntryDistance:number;\n\n\t/**\n\t * The material ownwer associated with a collision.\n\t */\n\tpublic renderableOwner:IRenderableOwner;\n\n\t/**\n\t * Creates a new PickingCollisionVO object.\n\t *\n\t * @param entity The entity to which this collision object belongs.\n\t */\n\tconstructor(displayObject:DisplayObject)\n\t{\n\t\tthis.displayObject = displayObject;\n\t}\n\n}\n\nexport = PickingCollisionVO;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport View\t\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/View\");\nimport IPicker\t\t\t\t\t\t= require(\"awayjs-display/lib/pick/IPicker\");\nimport PickingCollisionVO\t\t\t= require(\"awayjs-display/lib/pick/PickingCollisionVO\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport RaycastCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/RaycastCollector\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * Picks a 3d object from a view or scene by 3D raycast calculations.\n * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,\n * then triggers an optional picking collider on individual entity objects to further determine the precise values of the picking ray collision.\n *\n * @class away.pick.RaycastPicker\n */\nclass RaycastPicker implements IPicker\n{\n\tprivate _findClosestCollision:boolean;\n\tprivate _raycastCollector:RaycastCollector;\n\tprivate _ignoredEntities = [];\n\tprivate _onlyMouseEnabled:boolean = true;\n\n\tprivate _entities:Array;\n\tprivate _numEntities:number = 0;\n\tprivate _hasCollisions:boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get onlyMouseEnabled():boolean\n\t{\n\t\treturn this._onlyMouseEnabled;\n\t}\n\n\tpublic set onlyMouseEnabled(value:boolean)\n\t{\n\t\tthis._onlyMouseEnabled = value;\n\t}\n\n\t/**\n\t * Creates a new RaycastPicker object.\n\t *\n\t * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,\n\t * or simply returns the first collision encountered. Defaults to false.\n\t */\n\tconstructor(findClosestCollision:boolean = false)\n\t{\n\t\tthis._raycastCollector = new RaycastCollector();\n\n\t\tthis._findClosestCollision = findClosestCollision;\n\t\tthis._entities = new Array();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getViewCollision(x:number, y:number, view:View):PickingCollisionVO\n\t{\n\t\t//update ray\n\t\tvar rayPosition:Vector3D = view.unproject(x, y, 0);\n\t\tvar rayDirection:Vector3D = view.unproject(x, y, 1).subtract(rayPosition);\n\n\t\treturn this.getSceneCollision(rayPosition, rayDirection, view.scene);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getSceneCollision(rayPosition:Vector3D, rayDirection:Vector3D, scene:Scene):PickingCollisionVO\n\t{\n\t\t//clear collector\n\t\tthis._raycastCollector.clear();\n\n\t\t//setup ray vectors\n\t\tthis._raycastCollector.rayPosition = rayPosition;\n\t\tthis._raycastCollector.rayDirection = rayDirection;\n\n\t\t// collect entities to test\n\t\tscene.traversePartitions(this._raycastCollector);\n\n\t\tthis._numEntities = 0;\n\t\tvar node:EntityListItem = this._raycastCollector.entityHead;\n\t\tvar entity:IEntity;\n\n\t\twhile (node) {\n\t\t\tif (!this.isIgnored(entity = node.entity))\n\t\t\t\tthis._entities[this._numEntities++] = entity;\n\n\t\t\tnode = node.next;\n\t\t}\n\n\t\t//early out if no collisions detected\n\t\tif (!this._numEntities)\n\t\t\treturn null;\n\n\t\treturn this.getPickingCollisionVO(this._raycastCollector);\n\t}\n\n//\t\tpublic getEntityCollision(position:Vector3D, direction:Vector3D, entities:Array):PickingCollisionVO\n//\t\t{\n//\t\t\tthis._numEntities = 0;\n//\n//\t\t\tvar entity:IEntity;\n//\t\t\tvar l:number = entities.length;\n//\n//\t\t\tfor (var c:number = 0; c < l; c++) {\n//\t\t\t\tentity = entities[c];\n//\n//\t\t\t\tif (entity.isIntersectingRay(position, direction))\n//\t\t\t\t\tthis._entities[this._numEntities++] = entity;\n//\t\t\t}\n//\n//\t\t\treturn this.getPickingCollisionVO(this._raycastCollector);\n//\t\t}\n\n\tpublic setIgnoreList(entities)\n\t{\n\t\tthis._ignoredEntities = entities;\n\t}\n\n\tprivate isIgnored(entity:IEntity):boolean\n\t{\n\t\tif (this._onlyMouseEnabled && !entity._iIsMouseEnabled())\n\t\t\treturn true;\n\n\t\tvar len:number = this._ignoredEntities.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\tif (this._ignoredEntities[i] == entity)\n\t\t\t\treturn true;\n\n\t\treturn false;\n\t}\n\n\tprivate sortOnNearT(entity1:IEntity, entity2:IEntity):number\n\t{\n\t\treturn entity1._iPickingCollisionVO.rayEntryDistance > entity2._iPickingCollisionVO.rayEntryDistance? 1 : -1;\n\t}\n\n\tprivate getPickingCollisionVO(collector:ICollector):PickingCollisionVO\n\t{\n\t\t// trim before sorting\n\t\tthis._entities.length = this._numEntities;\n\n\t\t// Sort entities from closest to furthest.\n\t\tthis._entities = this._entities.sort(this.sortOnNearT); // TODO - test sort filter in JS\n\n\t\t// ---------------------------------------------------------------------\n\t\t// Evaluate triangle collisions when needed.\n\t\t// Replaces collision data provided by bounds collider with more precise data.\n\t\t// ---------------------------------------------------------------------\n\n\t\tvar shortestCollisionDistance:number = Number.MAX_VALUE;\n\t\tvar bestCollisionVO:PickingCollisionVO;\n\t\tvar pickingCollisionVO:PickingCollisionVO;\n\t\tvar entity:IEntity;\n\t\tvar i:number;\n\n\t\tfor (i = 0; i < this._numEntities; ++i) {\n\t\t\tentity = this._entities[i];\n\t\t\tpickingCollisionVO = entity._iPickingCollisionVO;\n\t\t\tif (entity.pickingCollider) {\n\t\t\t\t// If a collision exists, update the collision data and stop all checks.\n\t\t\t\tif ((bestCollisionVO == null || pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance) && entity._iTestCollision(shortestCollisionDistance, this._findClosestCollision)) {\n\t\t\t\t\tshortestCollisionDistance = pickingCollisionVO.rayEntryDistance;\n\t\t\t\t\tbestCollisionVO = pickingCollisionVO;\n\t\t\t\t\tif (!this._findClosestCollision) {\n\t\t\t\t\t\tthis.updateLocalPosition(pickingCollisionVO);\n\t\t\t\t\t\treturn pickingCollisionVO;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (bestCollisionVO == null || pickingCollisionVO.rayEntryDistance < bestCollisionVO.rayEntryDistance) { // A bounds collision with no triangle collider stops all checks.\n\t\t\t\t// Note: a bounds collision with a ray origin inside its bounds is ONLY ever used\n\t\t\t\t// to enable the detection of a corresponsding triangle collision.\n\t\t\t\t// Therefore, bounds collisions with a ray origin inside its bounds can be ignored\n\t\t\t\t// if it has been established that there is NO triangle collider to test\n\t\t\t\tif (!pickingCollisionVO.rayOriginIsInsideBounds) {\n\t\t\t\t\tthis.updateLocalPosition(pickingCollisionVO);\n\t\t\t\t\treturn pickingCollisionVO;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn bestCollisionVO;\n\t}\n\n\tprivate updateLocalPosition(pickingCollisionVO:PickingCollisionVO)\n\t{\n\t\tvar collisionPos:Vector3D = ( pickingCollisionVO.localPosition == null )? new Vector3D() : pickingCollisionVO.localPosition;\n\n\t\tvar rayDir:Vector3D = pickingCollisionVO.localRayDirection;\n\t\tvar rayPos:Vector3D = pickingCollisionVO.localRayPosition;\n\t\tvar t:number = pickingCollisionVO.rayEntryDistance;\n\t\tcollisionPos.x = rayPos.x + t*rayDir.x;\n\t\tcollisionPos.y = rayPos.y + t*rayDir.y;\n\t\tcollisionPos.z = rayPos.z + t*rayDir.z;\n\t}\n\n\tpublic dispose()\n\t{\n\t\t//TODO\n\t}\n}\n\nexport = RaycastPicker;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSBillboardRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"billboard\";\n\n\tconstructor(pool:IRenderablePool, billboard:Billboard)\n\t{\n\t\tsuper(pool, billboard, billboard);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\tvar img:HTMLDivElement = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + billboard.material.id;\n\t}\n}\n\nexport = CSSBillboardRenderable;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport LineSegment\t\t\t\t\t= require(\"awayjs-display/lib/entities/LineSegment\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSLineSegmentRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"lineSegment\";\n\n\tconstructor(pool:IRenderablePool, lineSegment:LineSegment)\n\t{\n\t\tsuper(pool, lineSegment, lineSegment);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\tvar img:HTMLDivElement = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + lineSegment.material.id;\n\t}\n}\n\nexport = CSSLineSegmentRenderable;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\n\nimport IRenderableOwner\t\t\t\t= require(\"awayjs-display/lib/base/IRenderableOwner\");\nimport IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.pool.RenderableListItem\n */\nclass CSSRenderableBase implements IRenderable\n{\n\t/**\n\t *\n\t */\n\tprivate _pool:IRenderablePool;\n\n\t/**\n\t *\n\t */\n\tpublic next:CSSRenderableBase;\n\n\t/**\n\t *\n\t */\n\tpublic materialId:number;\n\n\t/**\n\t *\n\t */\n\tpublic renderOrderId:number;\n\n\t/**\n\t *\n\t */\n\tpublic zIndex:number;\n\n\t/**\n\t *\n\t */\n\tpublic cascaded:boolean;\n\n\t/**\n\t *\n\t */\n\tpublic renderSceneTransform:Matrix3D;\n\n\t/**\n\t *\n\t */\n\tpublic sourceEntity:IEntity;\n\n\t/**\n\t *\n\t */\n\tpublic renderObjectId:number;\n\n\t/**\n\t *\n\t */\n\tpublic renderableOwner:IRenderableOwner;\n\n\t/**\n\t *\n\t */\n\tpublic htmlElement:HTMLElement;\n\n\t/**\n\t *\n\t * @param sourceEntity\n\t * @param material\n\t * @param animator\n\t */\n\tconstructor(pool:IRenderablePool, sourceEntity:IEntity, renderableOwner:IRenderableOwner)\n\t{\n\t\t//store a reference to the pool for later disposal\n\t\tthis._pool = pool;\n\n\t\tthis.sourceEntity = sourceEntity;\n\n\t\tthis.renderableOwner = renderableOwner;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic dispose()\n\t{\n\t\tthis._pool.disposeItem(this.renderableOwner);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateGeometry()\n\t{\n\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateIndexData()\n\t{\n\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic invalidateVertexData(dataType:string)\n\t{\n\n\t}\n}\n\nexport = CSSRenderableBase;","import CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n\n/**\n * @class away.pool.CSSSkyboxRenderable\n */\nclass CSSSkyboxRenderable extends CSSRenderableBase\n{\n\tpublic static id:string = \"skybox\";\n\n\tconstructor(pool:IRenderablePool, skyBox:Skybox)\n\t{\n\t\tsuper(pool, skyBox, skyBox);\n\n\t\tvar div:HTMLDivElement = document.createElement(\"div\");\n\t\tdiv.onmousedown = (event:MouseEvent) => false;\n\n\t\tthis.htmlElement = div;\n\n\t\tvar style:MSStyleCSSProperties = div.style;\n\t\tvar img:HTMLDivElement;\n\n\t\t//create the six images that make up the skybox\n\t\tstyle.position = \"absolute\";\n\t\tstyle.transformOrigin\n\t\t\t= style[\"-webkit-transform-origin\"]\n\t\t\t= style[\"-moz-transform-origin\"]\n\t\t\t= style[\"-o-transform-origin\"]\n\t\t\t= style[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\timg = document.createElement(\"div\");\n\n\t\tdiv.appendChild(img);\n\n\t\timg.className = \"material\" + skyBox.id;\n\t}\n}\n\nexport = CSSSkyboxRenderable;","import EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\n\n/**\n * @class away.pool.EntityListItemPool\n */\nclass EntityListItemPool\n{\n\tprivate _pool:Array;\n\tprivate _index:number = 0;\n\tprivate _poolSize:number = 0;\n\n\t/**\n\t *\n\t */\n\tconstructor()\n\t{\n\t\tthis._pool = new Array();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic getItem():EntityListItem\n\t{\n\t\tvar item:EntityListItem;\n\t\tif (this._index == this._poolSize) {\n\t\t\titem = new EntityListItem();\n\t\t\tthis._pool[this._index++] = item;\n\t\t\t++this._poolSize;\n\t\t} else {\n\t\t\titem = this._pool[this._index++];\n\t\t}\n\t\treturn item;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic freeAll()\n\t{\n\t\tthis._index = 0;\n\t}\n\n\tpublic dispose()\n\t{\n\t\tthis._pool.length = 0;\n\t}\n}\n\nexport = EntityListItemPool;","import IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.pool.EntityListItem\n */\nclass EntityListItem\n{\n\t/**\n\t *\n\t */\n\tpublic entity:IEntity;\n\n\t/**\n\t *\n\t */\n\tpublic next:EntityListItem;\n}\n\nexport = EntityListItem;","import NamedAssetBase\t\t\t= require(\"awayjs-core/lib/library/NamedAssetBase\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\n\n/**\n * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating\n */\nclass PrefabBase extends NamedAssetBase\n{\n\tpublic _pObjects:Array = new Array();\n\n//\t\tpublic _pBatchObjects:Array = new Array();\n\n\t/**\n\t * Creates a new PrefabBase object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Returns a display object generated from this prefab\n\t */\n\tpublic getNewObject():DisplayObject\n\t{\n\t\tvar object:DisplayObject = this._pCreateObject();\n\n\t\tthis._pObjects.push(object);\n\n\t\treturn object;\n\t}\n\n//\t\tpublic getNewBatchObject():BatchObject\n//\t\t{\n//\t\t\tvar object:BatchObject = this._pCreateBatchObject();\n//\n//\t\t\tthis._pBatchObjects.push(object);\n//\n//\t\t\treturn object;\n//\t\t}\n\n\tpublic _pCreateObject():DisplayObject\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic _iValidate()\n\t{\n\t\t// To be overridden when necessary\n\t}\n}\n\nexport = PrefabBase;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Capsule primitive mesh.\n */\nclass PrimitiveCapsulePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _height:number;\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the capsule.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The height of the capsule.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = (value%2 == 0)? value + 1 : value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Capsule object.\n\t * @param radius The radius of the capsule.\n\t * @param height The height of the capsule.\n\t * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value.\n\t * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 15, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._height = height;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = (segmentsH%2 == 0)? segmentsH + 1 : segmentsH;\n\t\tthis._yUp = yUp;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar triIndex:number = 0;\n\t\tvar index:number = 0;\n\t\tvar startIndex:number;\n\t\tvar comp1:number, comp2:number, t1:number, t2:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsH + 1)*(this._segmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of closure\n\t\t\tnumIndices = (this._segmentsH - 1)*this._segmentsW*6; // each level has segmentH quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tstartIndex = index;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar offset:number = j > this._segmentsH/2? this._height/2 : -this._height/2;\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\t\t\t\t\tvar normLen:number = 1/Math.sqrt(x*x + y*y + z*z);\n\t\t\t\t\tvar tanLen:number = Math.sqrt(y*y + x*x);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsW) {\n\n\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\t\t\t\t\t\tnormals[index] = (normals[startIndex] + (x*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 1] = (normals[startIndex + 1] + ( comp1*normLen))*.5;\n\t\t\t\t\t\tnormals[index + 2] = (normals[startIndex + 2] + (comp2*normLen))*.5;\n\t\t\t\t\t\ttangents[index] = (tangents[startIndex] + (tanLen > .007? -y/tanLen : 1))*.5;\n\t\t\t\t\t\ttangents[index + 1] = (tangents[startIndex + 1] + t1)*.5;\n\t\t\t\t\t\ttangents[index + 2] = (tangents[startIndex + 2] + t2)*.5;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// vertex\n\t\t\t\t\t\tpositions[index] = x;\n\t\t\t\t\t\tpositions[index + 1] = (this._yUp)? comp1 - offset : comp1;\n\t\t\t\t\t\tpositions[index + 2] = (this._yUp)? comp2 : comp2 + offset;\n\t\t\t\t\t\t// normal\n\t\t\t\t\t\tnormals[index] = x*normLen;\n\t\t\t\t\t\tnormals[index + 1] = comp1*normLen;\n\t\t\t\t\t\tnormals[index + 2] = comp2*normLen;\n\t\t\t\t\t\t// tangent\n\t\t\t\t\t\ttangents[index] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[index + 1] = t1;\n\t\t\t\t\t\ttangents[index + 2] = t2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\tvar a:number = (this._segmentsW + 1)*j + i;\n\t\t\t\t\t\tvar b:number = (this._segmentsW + 1)*j + i - 1;\n\t\t\t\t\t\tvar c:number = (this._segmentsW + 1)*(j - 1) + i - 1;\n\t\t\t\t\t\tvar d:number = (this._segmentsW + 1)*(j - 1) + i;\n\n\t\t\t\t\t\tif (j == this._segmentsH) {\n\t\t\t\t\t\t\tpositions[index] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[index + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[index + 2] = positions[startIndex + 2];\n\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\n\t\t\t\t\t\t} else if (j == 1) {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = b;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = a;\n\t\t\t\t\t\t\tindices[triIndex++] = c;\n\t\t\t\t\t\t\tindices[triIndex++] = d;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tindex += 3;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsH )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCapsulePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport PrimitiveCylinderPrefab\t= require(\"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab\");\n\n/**\n * A UV Cone primitive mesh.\n */\nclass PrimitiveConePrefab extends PrimitiveCylinderPrefab implements IAsset\n{\n\n\t/**\n\t * The radius of the bottom end of the cone.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Cone object.\n\t * @param radius The radius of the bottom end of the cone\n\t * @param height The height of the cone\n\t * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1.\n\t * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 1, closed:boolean = true, yUp:boolean = true)\n\t{\n\t\tsuper(0, radius, height, segmentsW, segmentsH, false, closed, true, yUp);\n\t}\n}\n\nexport = PrimitiveConePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Cube primitive prefab.\n */\nclass PrimitiveCubePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _width:number;\n\tprivate _height:number;\n\tprivate _depth:number;\n\tprivate _tile6:boolean;\n\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _segmentsD:number;\n\n\t/**\n\t * Creates a new Cube object.\n\t * @param width The size of the cube along its X-axis.\n\t * @param height The size of the cube along its Y-axis.\n\t * @param depth The size of the cube along its Z-axis.\n\t * @param segmentsW The number of segments that make up the cube along the X-axis.\n\t * @param segmentsH The number of segments that make up the cube along the Y-axis.\n\t * @param segmentsD The number of segments that make up the cube along the Z-axis.\n\t * @param tile6 The type of uv mapping to use. When true, a texture will be subdivided in a 2x3 grid, each used for a single face. When false, the entire image is mapped on each face.\n\t */\n\tconstructor(width:number = 100, height:number = 100, depth:number = 100, segmentsW:number = 1, segmentsH:number = 1, segmentsD:number = 1, tile6:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._depth = depth;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._segmentsD = segmentsD;\n\t\tthis._tile6 = tile6;\n\t}\n\n\t/**\n\t * The size of the cube along its X-axis.\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tthis._width = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The size of the cube along its Y-axis.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The size of the cube along its Z-axis.\n\t */\n\tpublic get depth():number\n\t{\n\t\treturn this._depth;\n\t}\n\n\tpublic set depth(value:number)\n\t{\n\t\tthis._depth = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The type of uv mapping to use. When false, the entire image is mapped on each face.\n\t * When true, a texture will be subdivided in a 3x2 grid, each used for a single face.\n\t * Reading the tiles from left to right, top to bottom they represent the faces of the\n\t * cube in the following order: bottom, top, back, left, front, right. This creates\n\t * several shared edges (between the top, front, left and right faces) which simplifies\n\t * texture painting.\n\t */\n\tpublic get tile6():boolean\n\t{\n\t\treturn this._tile6;\n\t}\n\n\tpublic set tile6(value:boolean)\n\t{\n\t\tthis._tile6 = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the X-axis. Defaults to 1.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the Y-axis. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * The number of segments that make up the cube along the Z-axis. Defaults to 1.\n\t */\n\tpublic get segmentsD():number\n\t{\n\t\treturn this._segmentsD;\n\t}\n\n\tpublic set segmentsD(value:number)\n\t{\n\t\tthis._segmentsD = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar tl:number, tr:number, bl:number, br:number;\n\t\tvar i:number, j:number, inc:number = 0;\n\n\t\tvar vidx:number, fidx:number; // indices\n\t\tvar hw:number, hh:number, hd:number; // halves\n\t\tvar dw:number, dh:number, dd:number; // deltas\n\n\t\tvar outer_pos:number;\n\t\tvar numIndices:number;\n\t\tvar numVertices:number;\n\n\t\t// half cube dimensions\n\t\thw = this._width/2;\n\t\thh = this._height/2;\n\t\thd = this._depth/2;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tnumVertices = ((this._segmentsW + 1)*(this._segmentsH + 1) + (this._segmentsW + 1)*(this._segmentsD + 1) + (this._segmentsH + 1)*(this._segmentsD + 1))*2;\n\n\t\t\tnumIndices = ((this._segmentsW*this._segmentsH + this._segmentsW*this._segmentsD + this._segmentsH*this._segmentsD)*12);\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.indices != null) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices);\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// Segment dimensions\n\t\t\tdw = this._width/this._segmentsW;\n\t\t\tdh = this._height/this._segmentsH;\n\t\t\tdd = this._depth/this._segmentsD;\n\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\touter_pos = -hw + i*dw;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\t// front\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx + 2] = -hd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\tnormals[vidx + 2] = -1;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// back\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx + 2] = hd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\tnormals[vidx + 2] = 1;\n\t\t\t\t\ttangents[vidx] = -1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = 2*((i - 1)*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\ttr = 2*(i*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinc += 2*(this._segmentsW + 1)*(this._segmentsH + 1);\n\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\touter_pos = -hw + i*dw;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsD; j++) {\n\t\t\t\t\t// top\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = hh;\n\t\t\t\t\tpositions[vidx + 2] = -hd + j*dd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = 1;\n\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// bottom\n\t\t\t\t\tpositions[vidx] = outer_pos;\n\t\t\t\t\tpositions[vidx + 1] = -hh;\n\t\t\t\t\tpositions[vidx + 2] = -hd + j*dd;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = -1;\n\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = inc + 2*((i - 1)*(this._segmentsD + 1) + (j - 1));\n\t\t\t\t\t\ttr = inc + 2*(i*(this._segmentsD + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinc += 2*(this._segmentsW + 1)*(this._segmentsD + 1);\n\n\t\t\tfor (i = 0; i <= this._segmentsD; i++) {\n\t\t\t\touter_pos = hd - i*dd;\n\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\t// left\n\t\t\t\t\tpositions[vidx] = -hw;\n\t\t\t\t\tpositions[vidx+1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx+2] = outer_pos;\n\t\t\t\t\tnormals[vidx] = -1;\n\t\t\t\t\tnormals[vidx+1] = 0;\n\t\t\t\t\tnormals[vidx+2] = 0;\n\t\t\t\t\ttangents[vidx] = 0;\n\t\t\t\t\ttangents[vidx+1] = 0;\n\t\t\t\t\ttangents[vidx+2] = -1;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// right\n\t\t\t\t\tpositions[vidx] = hw;\n\t\t\t\t\tpositions[vidx+1] = -hh + j*dh;\n\t\t\t\t\tpositions[vidx+2] = outer_pos;\n\t\t\t\t\tnormals[vidx] = 1;\n\t\t\t\t\tnormals[vidx+1] = 0;\n\t\t\t\t\tnormals[vidx+2] = 0;\n\t\t\t\t\ttangents[vidx] = 0;\n\t\t\t\t\ttangents[vidx+1] = 0;\n\t\t\t\t\ttangents[vidx+2] = 1;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i && j) {\n\t\t\t\t\t\ttl = inc + 2*((i - 1)*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\ttr = inc + 2*(i*(this._segmentsH + 1) + (j - 1));\n\t\t\t\t\t\tbl = tl + 2;\n\t\t\t\t\t\tbr = tr + 2;\n\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = bl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tl;\n\t\t\t\t\t\tindices[fidx++] = br;\n\t\t\t\t\t\tindices[fidx++] = tr;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = br + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tr + 1;\n\t\t\t\t\t\tindices[fidx++] = bl + 1;\n\t\t\t\t\t\tindices[fidx++] = tl + 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = this._segmentsH*4 + this._segmentsW*4 + this._segmentsD*4;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\t//front/back face\n\t\t\tfor (i = 0; i < this._segmentsH; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = i*this._height/this._segmentsH - hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = i*this._height/this._segmentsH - hh\n\t\t\t\tendPositions[vidx + 2] = -hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tstartPositions[vidx + 2] = hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsW; ++i) {\n\t\t\t\tstartPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = -hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd;\n\n\t\t\t\tendPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t//left/right face\n\t\t\tfor (i = 0; i < this._segmentsH; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = i*this._height/this._segmentsH - hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = -hw;\n\t\t\t\tendPositions[vidx + 1] = i*this._height/this._segmentsH - hh\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = hw;\n\t\t\t\tstartPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh - i*this._height/this._segmentsH;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsD; ++i) {\n\t\t\t\tstartPositions[vidx] = hw\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tendPositions[vidx] = -hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\n\t\t\t//top/bottom face\n\t\t\tfor (i = 0; i < this._segmentsD; ++i) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = -hh;\n\t\t\t\tendPositions[vidx + 2] = hd - i*this._depth/this._segmentsD;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = hh;\n\t\t\t\tstartPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = i*this._depth/this._segmentsD - hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < this._segmentsW; ++i) {\n\t\t\t\tstartPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tstartPositions[vidx + 1] = -hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = hw - i*this._width/this._segmentsW;\n\t\t\t\tendPositions[vidx + 1] = -hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\n\t\t\t\tstartPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tstartPositions[vidx + 1] = hh;\n\t\t\t\tstartPositions[vidx + 2] = -hd;\n\n\t\t\t\tendPositions[vidx] = i*this._width/this._segmentsW - hw;\n\t\t\t\tendPositions[vidx + 1] = hh;\n\t\t\t\tendPositions[vidx + 2] = hd;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number, index:number;\n\t\tvar uvs:Array;\n\n\t\tvar u_tile_dim:number, v_tile_dim:number;\n\t\tvar u_tile_step:number, v_tile_step:number;\n\t\tvar tl0u:number, tl0v:number;\n\t\tvar tl1u:number, tl1v:number;\n\t\tvar du:number, dv:number;\n\t\tvar numVertices:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = ((this._segmentsW + 1)*(this._segmentsH + 1) + (this._segmentsW + 1)*(this._segmentsD + 1) + (this._segmentsH + 1)*(this._segmentsD + 1))*2;\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.uvs != null) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t}\n\n\t\t\tif (this._tile6) {\n\t\t\t\tu_tile_dim = u_tile_step = 1/3;\n\t\t\t\tv_tile_dim = v_tile_step = 1/2;\n\t\t\t} else {\n\t\t\t\tu_tile_dim = v_tile_dim = 1;\n\t\t\t\tu_tile_step = v_tile_step = 0;\n\t\t\t}\n\n\t\t\t// Create planes two and two, the same way that they were\n\t\t\t// constructed in the buildGeometry() function. First calculate\n\t\t\t// the top-left UV coordinate for both planes, and then loop\n\t\t\t// over the points, calculating the UVs from these numbers.\n\n\t\t\t// When tile6 is true, the layout is as follows:\n\t\t\t// .-----.-----.-----. (1,1)\n\t\t\t// | Bot | T | Bak |\n\t\t\t// |-----+-----+-----|\n\t\t\t// | L | F | R |\n\t\t\t// (0,0)'-----'-----'-----'\n\n\t\t\tindex = 0;\n\n\t\t\t// FRONT / BACK\n\t\t\ttl0u = 1*u_tile_step;\n\t\t\ttl0v = 1*v_tile_step;\n\t\t\ttl1u = 2*u_tile_step;\n\t\t\ttl1v = 0*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsW;\n\t\t\tdv = v_tile_dim/this._segmentsH;\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + (u_tile_dim - i*du))*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TOP / BOTTOM\n\t\t\ttl0u = 1*u_tile_step;\n\t\t\ttl0v = 0*v_tile_step;\n\t\t\ttl1u = 0*u_tile_step;\n\t\t\ttl1v = 0*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsW;\n\t\t\tdv = v_tile_dim/this._segmentsD;\n\t\t\tfor (i = 0; i <= this._segmentsW; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsD; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + j*dv)*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// LEFT / RIGHT\n\t\t\ttl0u = 0*u_tile_step;\n\t\t\ttl0v = 1*v_tile_step;\n\t\t\ttl1u = 2*u_tile_step;\n\t\t\ttl1v = 1*v_tile_step;\n\t\t\tdu = u_tile_dim/this._segmentsD;\n\t\t\tdv = v_tile_dim/this._segmentsH;\n\t\t\tfor (i = 0; i <= this._segmentsD; i++) {\n\t\t\t\tfor (j = 0; j <= this._segmentsH; j++) {\n\t\t\t\t\tuvs[index++] = ( tl0u + i*du)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl0v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = ( tl1u + (u_tile_dim - i*du))*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( tl1v + (v_tile_dim - j*dv))*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCubePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Cylinder primitive mesh.\n */\nclass PrimitiveCylinderPrefab extends PrimitivePrefabBase implements IAsset\n{\n\tpublic _pBottomRadius:number;\n\tpublic _pSegmentsW:number;\n\tpublic _pSegmentsH:number;\n\n\tprivate _topRadius:number;\n\tprivate _height:number;\n\n\tprivate _topClosed:boolean;\n\tprivate _bottomClosed:boolean;\n\tprivate _surfaceClosed:boolean;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the top end of the cylinder.\n\t */\n\tpublic get topRadius():number\n\t{\n\t\treturn this._topRadius;\n\t}\n\n\tpublic set topRadius(value:number)\n\t{\n\t\tthis._topRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the bottom end of the cylinder.\n\t */\n\tpublic get bottomRadius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set bottomRadius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the top end of the cylinder.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._pSegmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis.setSegmentsW(value);\n\t}\n\n\tpublic setSegmentsW(value:number)\n\t{\n\t\tthis._pSegmentsW = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the cylinder. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._pSegmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\n\t\tthis.setSegmentsH(value)\n\n\t}\n\n\tpublic setSegmentsH(value:number)\n\t{\n\t\tthis._pSegmentsH = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * Defines whether the top end of the cylinder is closed (true) or open.\n\t */\n\tpublic get topClosed():boolean\n\t{\n\t\treturn this._topClosed;\n\t}\n\n\tpublic set topClosed(value:boolean)\n\t{\n\t\tthis._topClosed = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the bottom end of the cylinder is closed (true) or open.\n\t */\n\tpublic get bottomClosed():boolean\n\t{\n\t\treturn this._bottomClosed;\n\t}\n\n\tpublic set bottomClosed(value:boolean)\n\t{\n\t\tthis._bottomClosed = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the cylinder poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Cylinder object.\n\t * @param topRadius The radius of the top end of the cylinder.\n\t * @param bottomRadius The radius of the bottom end of the cylinder\n\t * @param height The radius of the bottom end of the cylinder\n\t * @param segmentsW Defines the number of horizontal segments that make up the cylinder. Defaults to 16.\n\t * @param segmentsH Defines the number of vertical segments that make up the cylinder. Defaults to 1.\n\t * @param topClosed Defines whether the top end of the cylinder is closed (true) or open.\n\t * @param bottomClosed Defines whether the bottom end of the cylinder is closed (true) or open.\n\t * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(topRadius:number = 50, bottomRadius:number = 50, height:number = 100, segmentsW:number = 16, segmentsH:number = 1, topClosed:boolean = true, bottomClosed:boolean = true, surfaceClosed:boolean = true, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._topRadius = topRadius;\n\t\tthis._pBottomRadius = bottomRadius;\n\t\tthis._height = height;\n\t\tthis._pSegmentsW = segmentsW;\n\t\tthis._pSegmentsH = segmentsH;\n\t\tthis._topClosed = topClosed;\n\t\tthis._bottomClosed = bottomClosed;\n\t\tthis._surfaceClosed = surfaceClosed;\n\t\tthis._yUp = yUp;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar x:number;\n\t\tvar y:number;\n\t\tvar z:number;\n\t\tvar vidx:number;\n\t\tvar fidx:number;\n\n\t\tvar radius:number;\n\t\tvar revolutionAngle:number;\n\n\t\tvar dr:number;\n\t\tvar latNormElev:number;\n\t\tvar latNormBase:number;\n\t\tvar numIndices:number = 0;\n\n\t\tvar comp1:number;\n\t\tvar comp2:number;\n\t\tvar startIndex:number = 0;\n\t\tvar nextVertexIndex:number = 0;\n\n\t\tvar t1:number;\n\t\tvar t2:number;\n\n\t\t// reset utility variables\n\t\tthis._numVertices = 0;\n\n\t\t// evaluate revolution steps\n\t\tvar revolutionAngleDelta:number = 2*Math.PI/this._pSegmentsW;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tthis._numVertices += (this._pSegmentsH + 1)*(this._pSegmentsW + 1); // segmentsH + 1 because of closure, segmentsW + 1 because of UV unwrapping\n\t\t\t\tnumIndices += this._pSegmentsH*this._pSegmentsW*6; // each level has segmentW quads, each of 2 triangles\n\t\t\t}\n\t\t\tif (this._topClosed) {\n\t\t\t\tthis._numVertices += 2*(this._pSegmentsW + 1); // segmentsW + 1 because of unwrapping\n\t\t\t\tnumIndices += this._pSegmentsW*3; // one triangle for each segment\n\t\t\t}\n\t\t\tif (this._bottomClosed) {\n\t\t\t\tthis._numVertices += 2*(this._pSegmentsW + 1);\n\t\t\t\tnumIndices += this._pSegmentsW*3;\n\t\t\t}\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// top\n\t\t\tif (this._topClosed && this._topRadius > 0) {\n\n\t\t\t\tz = -0.5*this._height;\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t// central vertex\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = 1;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = 0;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = -1;\n\t\t\t\t\t\tcomp1 = 0;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpositions[vidx] = 0;\n\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = this._topRadius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = this._topRadius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex + 3];\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 4];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 5];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t// add triangle\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 1;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 2;\n\n\t\t\t\t\t\tnextVertexIndex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnextVertexIndex += 2;\n\t\t\t}\n\n\t\t\t// bottom\n\t\t\tif (this._bottomClosed && this._pBottomRadius > 0) {\n\n\t\t\t\tz = 0.5*this._height;\n\n\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tt1 = -1;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = 1;\n\t\t\t\t\t\tcomp1 = 0;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tpositions[vidx] = 0;\n\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = this._pBottomRadius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = this._pBottomRadius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex + 3];\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 4];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 5];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\t\t\t\t\tnormals[vidx + 1] = t1;\n\t\t\t\t\tnormals[vidx + 2] = t2;\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t// add triangle\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 2;\n\t\t\t\t\t\tindices[fidx++] = nextVertexIndex + 1;\n\n\t\t\t\t\t\tnextVertexIndex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnextVertexIndex += 2;\n\t\t\t}\n\n\t\t\t// The normals on the lateral surface all have the same incline, i.e.\n\t\t\t// the \"elevation\" component (Y or Z depending on yUp) is constant.\n\t\t\t// Same principle goes for the \"base\" of these vectors, which will be\n\t\t\t// calculated such that a vector [base,elev] will be a unit vector.\n\t\t\tdr = (this._pBottomRadius - this._topRadius);\n\t\t\tlatNormElev = dr/this._height;\n\t\t\tlatNormBase = (latNormElev == 0)? 1 : this._height/dr;\n\n\t\t\t// lateral surface\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tvar a:number;\n\t\t\t\tvar b:number;\n\t\t\t\tvar c:number;\n\t\t\t\tvar d:number;\n\t\t\t\tvar na0:number, na1:number, naComp1:number, naComp2:number;\n\n\t\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\t\tradius = this._topRadius - ((j/this._pSegmentsH)*(this._topRadius - this._pBottomRadius));\n\t\t\t\t\tz = -(this._height/2) + (j/this._pSegmentsH*this._height);\n\n\t\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t\t// revolution vertex\n\t\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\t\tx = radius*Math.cos(revolutionAngle);\n\t\t\t\t\t\ty = radius*Math.sin(revolutionAngle);\n\t\t\t\t\t\tna0 = latNormBase*Math.cos(revolutionAngle);\n\t\t\t\t\t\tna1 = latNormBase*Math.sin(revolutionAngle);\n\n\t\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\t\tt2 = -na0;\n\t\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t\t\tnaComp1 = latNormElev;\n\t\t\t\t\t\t\tnaComp2 = na1;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt1 = -na0;\n\t\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t\t\tnaComp1 = na1;\n\t\t\t\t\t\t\tnaComp2 = latNormElev;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (i == this._pSegmentsW) {\n\t\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\t\t\t\t\t\t\tnormals[vidx] = na0;\n\t\t\t\t\t\t\tnormals[vidx + 1] = latNormElev;\n\t\t\t\t\t\t\tnormals[vidx + 2] = na1;\n\t\t\t\t\t\t\ttangents[vidx] = na1;\n\t\t\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\t\t\ttangents[vidx + 2] = t2;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t\t\tnormals[vidx] = na0;\n\t\t\t\t\t\t\tnormals[vidx + 1] = naComp1;\n\t\t\t\t\t\t\tnormals[vidx + 2] = naComp2;\n\t\t\t\t\t\t\ttangents[vidx] = -na1;\n\t\t\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\t\t\ttangents[vidx + 2] = t2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t\t// close triangle\n\t\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\t\ta = nextVertexIndex; // current\n\t\t\t\t\t\t\tb = nextVertexIndex - 1; // previous\n\t\t\t\t\t\t\tc = b - this._pSegmentsW - 1; // previous of last level\n\t\t\t\t\t\t\td = a - this._pSegmentsW - 1; // current of last level\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnextVertexIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._pSegmentsH + 1)*(this._pSegmentsW) + this._pSegmentsW;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\t//horizonal lines\n\n\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\tradius = this._topRadius - ((j/this._pSegmentsH)*(this._topRadius - this._pBottomRadius));\n\t\t\t\tz = this._height*(j/this._pSegmentsH - 0.5);\n\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = radius*Math.cos(revolutionAngle);\n\t\t\t\t\ty = radius*Math.sin(revolutionAngle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t\t//vertical lines\n\t\t\t\t\t\tstartPositions[vidx] = endPositions[vidx - this._pSegmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 1] = endPositions[vidx + 1 - this._pSegmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 2] = endPositions[vidx + 2 - this._pSegmentsW*6];\n\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i < this._pSegmentsW) {\n\t\t\t\t\t\tstartPositions[vidx] = x;\n\t\t\t\t\t\tstartPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tstartPositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar x:number;\n\t\tvar y:number;\n\t\tvar revolutionAngle:number;\n\t\tvar uvs:Array;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// evaluate revolution steps\n\t\t\tvar revolutionAngleDelta:number = 2*Math.PI/this._pSegmentsW;\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// top\n\t\t\tif (this._topClosed) {\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = 0.5 + 0.5* -Math.cos(revolutionAngle);\n\t\t\t\t\ty = 0.5 + 0.5*Math.sin(revolutionAngle);\n\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleU; // central vertex\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = x*triangleGeometry.scaleU; // revolution vertex\n\t\t\t\t\tuvs[index++] = y*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bottom\n\t\t\tif (this._bottomClosed) {\n\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\n\t\t\t\t\trevolutionAngle = i*revolutionAngleDelta;\n\t\t\t\t\tx = 0.5 + 0.5*Math.cos(revolutionAngle);\n\t\t\t\t\ty = 0.5 + 0.5*Math.sin(revolutionAngle);\n\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleU; // central vertex\n\t\t\t\t\tuvs[index++] = 0.5*triangleGeometry.scaleV;\n\n\t\t\t\t\tuvs[index++] = x*triangleGeometry.scaleU; // revolution vertex\n\t\t\t\t\tuvs[index++] = y*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// lateral surface\n\t\t\tif (this._surfaceClosed) {\n\t\t\t\tfor (j = 0; j <= this._pSegmentsH; ++j) {\n\t\t\t\t\tfor (i = 0; i <= this._pSegmentsW; ++i) {\n\t\t\t\t\t\t// revolution vertex\n\t\t\t\t\t\tuvs[index++] = ( i/this._pSegmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\t\tuvs[index++] = ( j/this._pSegmentsH )*triangleGeometry.scaleV;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveCylinderPrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A Plane primitive mesh.\n */\nclass PrimitivePlanePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\tprivate _width:number;\n\tprivate _height:number;\n\tprivate _doubleSided:boolean;\n\n\t/**\n\t * Creates a new Plane object.\n\t * @param width The width of the plane.\n\t * @param height The height of the plane.\n\t * @param segmentsW The number of segments that make up the plane along the X-axis.\n\t * @param segmentsH The number of segments that make up the plane along the Y or Z-axis.\n\t * @param yUp Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false).\n\t * @param doubleSided Defines whether the plane will be visible from both sides, with correct vertex normals.\n\t */\n\tconstructor(width:number = 100, height:number = 100, segmentsW:number = 1, segmentsH:number = 1, yUp:boolean = true, doubleSided:boolean = false)\n\t{\n\n\t\tsuper();\n\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._yUp = yUp;\n\t\tthis._width = width;\n\t\tthis._height = height;\n\t\tthis._doubleSided = doubleSided;\n\n\t}\n\n\t/**\n\t * The number of segments that make up the plane along the X-axis. Defaults to 1.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or\n\t * false, respectively. Defaults to 1.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\n\t}\n\n\t/**\n\t * Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). Defaults to true.\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines whether the plane will be visible from both sides, with correct vertex normals (as opposed to bothSides on Material). Defaults to false.\n\t */\n\tpublic get doubleSided():boolean\n\t{\n\t\treturn this._doubleSided;\n\t}\n\n\tpublic set doubleSided(value:boolean)\n\t{\n\t\tthis._doubleSided = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The width of the plane.\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tthis._width = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The height of the plane.\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tthis._height = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar x:number, y:number;\n\t\tvar numIndices:number;\n\t\tvar base:number;\n\t\tvar tw:number = this._segmentsW + 1;\n\t\tvar numVertices:number;\n\n\t\tvar vidx:number, fidx:number; // indices\n\n\t\tvar xi:number;\n\t\tvar yi:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tvar numVertices:number = (this._segmentsH + 1)*tw;\n\t\t\tvar positions:Array;\n\t\t\tvar normals:Array;\n\t\t\tvar tangents:Array;\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumVertices *= 2;\n\n\t\t\tnumIndices = this._segmentsH*this._segmentsW*6;\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumIndices *= 2;\n\n\t\t\tif (triangleGeometry.indices != null && numIndices == triangleGeometry.indices.length) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tif (numVertices == triangleGeometry.numVertices) {\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tfidx = 0;\n\n\t\t\tvidx = 0;\n\n\t\t\tfor (yi = 0; yi <= this._segmentsH; ++yi) {\n\n\t\t\t\tfor (xi = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\t\tx = (xi/this._segmentsW - .5)*this._width;\n\t\t\t\t\ty = (yi/this._segmentsH - .5)*this._height;\n\n\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tpositions[vidx + 1] = 0;\n\t\t\t\t\t\tpositions[vidx + 2] = y;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx + 1] = y;\n\t\t\t\t\t\tpositions[vidx + 2] = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = 0;\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tnormals[vidx + 1] = 1;\n\t\t\t\t\t\tnormals[vidx + 2] = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnormals[vidx + 1] = 0;\n\t\t\t\t\t\tnormals[vidx + 2] = -1;\n\t\t\t\t\t}\n\n\t\t\t\t\ttangents[vidx] = 1;\n\t\t\t\t\ttangents[vidx + 1] = 0;\n\t\t\t\t\ttangents[vidx + 2] = 0;\n\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// add vertex with same position, but with inverted normal & tangent\n\t\t\t\t\tif (this._doubleSided) {\n\n\t\t\t\t\t\tfor (var i:number = vidx; i < vidx + 3; ++i) {\n\t\t\t\t\t\t\tpositions[i] = positions[i - 3];\n\t\t\t\t\t\t\tnormals[i] = -normals[i - 3];\n\t\t\t\t\t\t\ttangents[i] = -tangents[i - 3];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif (xi != this._segmentsW && yi != this._segmentsH) {\n\n\t\t\t\t\t\tbase = xi + yi*tw;\n\t\t\t\t\t\tvar mult:number = this._doubleSided? 2 : 1;\n\n\t\t\t\t\t\tindices[fidx++] = base*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw)*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult;\n\t\t\t\t\t\tindices[fidx++] = base*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult;\n\t\t\t\t\t\tindices[fidx++] = (base + 1)*mult;\n\n\t\t\t\t\t\tif (this._doubleSided) {\n\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = base*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = (base + tw + 1)*mult + 1;\n\t\t\t\t\t\t\tindices[fidx++] = base*mult + 1;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._segmentsH + 1) + tw;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tvar hw:number = this._width/2;\n\t\t\tvar hh:number = this._height/2;\n\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tfidx = 0;\n\n\t\t\tvidx = 0;\n\n\t\t\tfor (yi = 0; yi <= this._segmentsH; ++yi) {\n\t\t\t\tstartPositions[vidx] = -hw;\n\t\t\t\tstartPositions[vidx + 1] = 0;\n\t\t\t\tstartPositions[vidx + 2] = yi*this._height - hh;\n\n\t\t\t\tendPositions[vidx] = hw;\n\t\t\t\tendPositions[vidx + 1] = 0;\n\t\t\t\tendPositions[vidx + 2] = yi*this._height - hh;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\n\t\t\tfor (xi = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\tstartPositions[vidx] = xi*this._width - hw;\n\t\t\t\tstartPositions[vidx + 1] = 0;\n\t\t\t\tstartPositions[vidx + 2] = -hh;\n\n\t\t\t\tendPositions[vidx] = xi*this._width - hw;\n\t\t\t\tendPositions[vidx + 1] = 0;\n\t\t\t\tendPositions[vidx + 2] = hh;\n\n\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\tvidx += 3;\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar uvs:Array;\n\t\tvar numVertices:number;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = ( this._segmentsH + 1 )*( this._segmentsW + 1 );\n\n\t\t\tif (this._doubleSided)\n\t\t\t\tnumVertices *= 2;\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (triangleGeometry.uvs && numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t\tthis._pInvalidateGeometry()\n\t\t\t}\n\n\t\t\tvar index:number = 0;\n\n\t\t\tfor (var yi:number = 0; yi <= this._segmentsH; ++yi) {\n\n\t\t\t\tfor (var xi:number = 0; xi <= this._segmentsW; ++xi) {\n\t\t\t\t\tuvs[index] = (xi/this._segmentsW)*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index + 1] = (1 - yi/this._segmentsH)*triangleGeometry.scaleV;\n\t\t\t\t\tindex += 2;\n\n\t\t\t\t\tif (this._doubleSided) {\n\t\t\t\t\t\tuvs[index] = (xi/this._segmentsW)*triangleGeometry.scaleU;\n\t\t\t\t\t\tuvs[index+1] = (1 - yi/this._segmentsH)*triangleGeometry.scaleV;\n\t\t\t\t\t\tindex += 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitivePlanePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport PrimitiveCylinderPrefab\t= require(\"awayjs-display/lib/prefabs/PrimitiveCylinderPrefab\");\n\n/**\n * A UV RegularPolygon primitive mesh.\n */\nclass PrimitivePolygonPrefab extends PrimitiveCylinderPrefab implements IAsset\n{\n\n\t/**\n\t * The radius of the regular polygon.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._pBottomRadius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._pBottomRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The number of sides of the regular polygon.\n\t */\n\tpublic get sides():number\n\t{\n\t\treturn this._pSegmentsW;\n\t}\n\n\tpublic set sides(value:number)\n\t{\n\t\tthis.setSegmentsW(value);\n\t}\n\n\t/**\n\t * The number of subdivisions from the edge to the center of the regular polygon.\n\t */\n\tpublic get subdivisions():number\n\t{\n\t\treturn this._pSegmentsH;\n\t}\n\n\tpublic set subdivisions(value:number)\n\t{\n\t\tthis.setSegmentsH(value);\n\t}\n\n\t/**\n\t * Creates a new RegularPolygon disc object.\n\t * @param radius The radius of the regular polygon\n\t * @param sides Defines the number of sides of the regular polygon.\n\t * @param yUp Defines whether the regular polygon should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 100, sides:number = 16, yUp:boolean = true)\n\t{\n\t\tsuper(radius, 0, 0, sides, 1, true, false, false, yUp);\n\t}\n}\n\nexport = PrimitivePolygonPrefab;","import AssetType\t\t\t\t= require(\"awayjs-core/lib/library/AssetType\");\nimport AbstractMethodError\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\n\nimport DisplayObject\t\t\t= require(\"awayjs-display/lib/base/DisplayObject\");\nimport Geometry\t\t\t\t\t= require(\"awayjs-display/lib/base/Geometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport Mesh\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Mesh\");\nimport MaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/MaterialBase\");\nimport PrefabBase\t\t\t\t= require(\"awayjs-display/lib/prefabs/PrefabBase\");\n\n/**\n * PrimitivePrefabBase is an abstract base class for polytope prefabs, which are simple pre-built geometric shapes\n */\nclass PrimitivePrefabBase extends PrefabBase\n{\n\tpublic _geomDirty:boolean = true;\n\tpublic _uvDirty:boolean = true;\n\n\tprivate _material:MaterialBase;\n\tprivate _geometry:Geometry;\n\tprivate _subGeometry:SubGeometryBase;\n\tprivate _geometryType:string;\n\tprivate _geometryTypeDirty:boolean = true;\n\n\n\t/**\n\t *\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.PRIMITIVE_PREFAB;\n\t}\n\n\t/**\n\t * \n\t */\n\tpublic get geometryType():string\n\t{\n\t\treturn this._geometryType;\n\t}\n\t\n\tpublic set geometryType(value:string)\n\t{\n\t\tif (this._geometryType == value)\n\t\t\treturn;\n\n\t\tthis._geometryType = value;\n\t\t\n\t\tthis.invalidateGeometryType();\n\t}\n\n\tpublic get geometry():Geometry\n\t{\n\t\tthis._iValidate();\n\n\t\treturn this._geometry;\n\t}\n\n\t/**\n\t * The material with which to render the primitive.\n\t */\n\tpublic get material():MaterialBase\n\t{\n\t\treturn this._material;\n\t}\n\n\tpublic set material(value:MaterialBase)\n\t{\n\t\tif (value == this._material)\n\t\t\treturn;\n\n\t\tthis._material = value;\n\n\t\tvar len:number = this._pObjects.length;\n\t\tfor (var i:number = 0; i < len; i++)\n\t\t\t( this._pObjects[i]).material = this._material;\n\t}\n\n\t/**\n\t * Creates a new PrimitivePrefabBase object.\n\t *\n\t * @param material The material with which to render the object\n\t */\n\tconstructor(material:MaterialBase = null, geometryType:string = \"triangleSubGeometry\")\n\t{\n\t\tsuper();\n\n\t\tthis._geometry = new Geometry();\n\t\tthis._material = material;\n\t\tthis._geometryType = geometryType;\n\t}\n\n\t/**\n\t * Builds the primitive's geometry when invalid. This method should not be called directly. The calling should\n\t * be triggered by the invalidateGeometry method (and in turn by updateGeometry).\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * Builds the primitive's uv coordinates when invalid. This method should not be called directly. The calling\n\t * should be triggered by the invalidateUVs method (and in turn by updateUVs).\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * Invalidates the primitive's geometry type, causing it to be updated when requested.\n\t */\n\tpublic invalidateGeometryType()\n\t{\n\t\tthis._geometryTypeDirty = true;\n\t\tthis._geomDirty = true;\n\t\tthis._uvDirty = true;\n\t}\n\t\n\t/**\n\t * Invalidates the primitive's geometry, causing it to be updated when requested.\n\t */\n\tpublic _pInvalidateGeometry()\n\t{\n\t\tthis._geomDirty = true;\n\t}\n\n\t/**\n\t * Invalidates the primitive's uv coordinates, causing them to be updated when requested.\n\t */\n\tpublic _pInvalidateUVs()\n\t{\n\t\tthis._uvDirty = true;\n\t}\n\n\t/**\n\t * Updates the subgeometry when invalid.\n\t */\n\tprivate updateGeometryType()\n\t{\n\t\t//remove any existing sub geometry\n\t\tif (this._subGeometry)\n\t\t\tthis._geometry.removeSubGeometry(this._subGeometry);\n\n\t\tif (this._geometryType == \"triangleSubGeometry\") {\n\t\t\tvar triangleGeometry:TriangleSubGeometry = new TriangleSubGeometry(true);\n\t\t\ttriangleGeometry.autoDeriveNormals = false;\n\t\t\ttriangleGeometry.autoDeriveTangents = false;\n\t\t\ttriangleGeometry.autoDeriveUVs = false;\n\t\t\tthis._geometry.addSubGeometry(triangleGeometry);\n\t\t\tthis._subGeometry = triangleGeometry;\n\t\t} else if (this._geometryType == \"lineSubGeometry\") {\n\t\t\tthis._geometry.addSubGeometry(this._subGeometry = new LineSubGeometry());\n\t\t}\n\n\t\tthis._geometryTypeDirty = false;\n\t}\n\n\t\n\t/**\n\t * Updates the geometry when invalid.\n\t */\n\tprivate updateGeometry()\n\t{\n\t\tthis._pBuildGeometry(this._subGeometry, this._geometryType);\n\n\t\tthis._geomDirty = false;\n\t}\n\n\t/**\n\t * Updates the uv coordinates when invalid.\n\t */\n\tprivate updateUVs()\n\t{\n\t\tthis._pBuildUVs(this._subGeometry, this._geometryType);\n\n\t\tthis._uvDirty = false;\n\t}\n\n\tpublic _iValidate()\n\t{\n\t\tif (this._geometryTypeDirty)\n\t\t\tthis.updateGeometryType();\n\t\t\n\t\tif (this._geomDirty)\n\t\t\tthis.updateGeometry();\n\n\t\tif (this._uvDirty)\n\t\t\tthis.updateUVs();\n\t}\n\n\n\tpublic _pCreateObject():DisplayObject\n\t{\n\t\tvar mesh:Mesh = new Mesh(this._geometry, this._material);\n\t\tmesh._iSourcePrefab = this;\n\n\t\treturn mesh;\n\t}\n\n\n//\t\tpublic _pCreateBatchObject():BatchObject\n//\t\t{\n//\t\t\tvar batch:BatchObject = new BatchObject(this._geometry, this._material);\n//\t\t\tbatch._iSourcePrefab = this;\n//\n//\t\t\treturn batch;\n//\t\t}\n}\n\nexport = PrimitivePrefabBase;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport LineSubGeometry\t\t\t= require(\"awayjs-display/lib/base/LineSubGeometry\");\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A UV Sphere primitive mesh.\n */\nclass PrimitiveSpherePrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _segmentsW:number;\n\tprivate _segmentsH:number;\n\tprivate _yUp:boolean;\n\n\t/**\n\t * The radius of the sphere.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the sphere. Defaults to 16.\n\t */\n\tpublic get segmentsW():number\n\t{\n\t\treturn this._segmentsW;\n\t}\n\n\tpublic set segmentsW(value:number)\n\t{\n\t\tthis._segmentsW = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the sphere. Defaults to 12.\n\t */\n\tpublic get segmentsH():number\n\t{\n\t\treturn this._segmentsH;\n\t}\n\n\tpublic set segmentsH(value:number)\n\t{\n\t\tthis._segmentsH = value;\n\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Sphere object.\n\t *\n\t * @param radius The radius of the sphere.\n\t * @param segmentsW Defines the number of horizontal segments that make up the sphere.\n\t * @param segmentsH Defines the number of vertical segments that make up the sphere.\n\t * @param yUp Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, segmentsW:number = 16, segmentsH:number = 12, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._segmentsW = segmentsW;\n\t\tthis._segmentsH = segmentsH;\n\t\tthis._yUp = yUp;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number;\n\t\tvar j:number;\n\t\tvar vidx:number, fidx:number; // indices\n\n\t\tvar comp1:number;\n\t\tvar comp2:number;\n\t\tvar numVertices:number;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tnumVertices = (this._segmentsH + 1)*(this._segmentsW + 1);\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.indices != null) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array((this._segmentsH - 1)*this._segmentsW*6);\n\t\t\t\tpositions = new Array(numVertices*3);\n\t\t\t\tnormals = new Array(numVertices*3);\n\t\t\t\ttangents = new Array(numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\tvar startIndex:number;\n\t\t\tvar t1:number;\n\t\t\tvar t2:number;\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tstartIndex = vidx;\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\t\t\t\t\tvar normLen:number = 1/Math.sqrt(x*x + y*y + z*z);\n\t\t\t\t\tvar tanLen:number = Math.sqrt(y*y + x*x);\n\n\t\t\t\t\tif (this._yUp) {\n\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt1 = tanLen > .007? x/tanLen : 0;\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsW) {\n\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\tpositions[vidx+1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[vidx+2] = positions[startIndex + 2];\n\t\t\t\t\t\tnormals[vidx] = normals[startIndex] + (x*normLen)*.5;\n\t\t\t\t\t\tnormals[vidx+1] = normals[startIndex + 1] + ( comp1*normLen)*.5;\n\t\t\t\t\t\tnormals[vidx+2] = normals[startIndex + 2] + (comp2*normLen)*.5;\n\t\t\t\t\t\ttangents[vidx] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[vidx+1] = t1;\n\t\t\t\t\t\ttangents[vidx+2] = t2;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx+1] = comp1;\n\t\t\t\t\t\tpositions[vidx+2] = comp2;\n\t\t\t\t\t\tnormals[vidx] = x*normLen;\n\t\t\t\t\t\tnormals[vidx+1] = comp1*normLen;\n\t\t\t\t\t\tnormals[vidx+2] = comp2*normLen;\n\t\t\t\t\t\ttangents[vidx] = tanLen > .007? -y/tanLen : 1;\n\t\t\t\t\t\ttangents[vidx+1] = t1;\n\t\t\t\t\t\ttangents[vidx+2] = t2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\n\t\t\t\t\t\tvar a:number = (this._segmentsW + 1)*j + i;\n\t\t\t\t\t\tvar b:number = (this._segmentsW + 1)*j + i - 1;\n\t\t\t\t\t\tvar c:number = (this._segmentsW + 1)*(j - 1) + i - 1;\n\t\t\t\t\t\tvar d:number = (this._segmentsW + 1)*(j - 1) + i;\n\n\t\t\t\t\t\tif (j == this._segmentsH) {\n\n\t\t\t\t\t\t\tpositions[vidx] = positions[startIndex];\n\t\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\n\t\t\t\t\t\t} else if (j == 1) {\n\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvidx += 3;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\n\t\t\tvar lineGeometry:LineSubGeometry = target;\n\n\t\t\tvar numSegments:number = (this._segmentsH - 1)*this._segmentsW*2;\n\t\t\tvar startPositions:Array;\n\t\t\tvar endPositions:Array;\n\t\t\tvar thickness:Array;\n\n\t\t\tif (lineGeometry.indices != null && numSegments == lineGeometry.numSegments) {\n\t\t\t\tstartPositions = lineGeometry.startPositions;\n\t\t\t\tendPositions = lineGeometry.endPositions;\n\t\t\t\tthickness = lineGeometry.thickness;\n\t\t\t} else {\n\t\t\t\tstartPositions = new Array(numSegments*3);\n\t\t\t\tendPositions = new Array(numSegments*3);\n\t\t\t\tthickness = new Array(numSegments);\n\t\t\t}\n\n\t\t\tvidx = 0;\n\n\t\t\tfidx = 0;\n\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\n\t\t\t\tvar horangle:number = Math.PI*j/this._segmentsH;\n\t\t\t\tvar z:number = -this._radius*Math.cos(horangle);\n\t\t\t\tvar ringradius:number = this._radius*Math.sin(horangle);\n\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tvar verangle:number = 2*Math.PI*i/this._segmentsW;\n\t\t\t\t\tvar x:number = ringradius*Math.cos(verangle);\n\t\t\t\t\tvar y:number = ringradius*Math.sin(verangle);\n\n\t\t\t\t\tif (this._yUp) {\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\t//horizonal lines\n\t\t\t\t\t\tif (j < this._segmentsH) {\n\t\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//vertical lines\n\t\t\t\t\t\tstartPositions[vidx] = endPositions[vidx - this._segmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 1] = endPositions[vidx + 1 - this._segmentsW*6];\n\t\t\t\t\t\tstartPositions[vidx + 2] = endPositions[vidx + 2 - this._segmentsW*6];\n\n\t\t\t\t\t\tendPositions[vidx] = x;\n\t\t\t\t\t\tendPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tendPositions[vidx + 2] = comp2;\n\n\t\t\t\t\t\tthickness[fidx++] = 1;\n\n\t\t\t\t\t\tvidx += 3;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i < this._segmentsW && j > 0 && j < this._segmentsH) {\n\t\t\t\t\t\tstartPositions[vidx] = x;\n\t\t\t\t\t\tstartPositions[vidx + 1] = comp1;\n\t\t\t\t\t\tstartPositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\tlineGeometry.updatePositions(startPositions, endPositions);\n\t\t\tlineGeometry.updateThickness(thickness);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar i:number, j:number;\n\t\tvar numVertices:number = (this._segmentsH + 1)*(this._segmentsW + 1);\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tnumVertices = (this._segmentsH + 1)*(this._segmentsW + 1);\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\tif (numVertices == triangleGeometry.numVertices && triangleGeometry.uvs != null) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(numVertices*2);\n\t\t\t}\n\n\t\t\tvar index:number = 0;\n\t\t\tfor (j = 0; j <= this._segmentsH; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsW; ++i) {\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsW )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsH )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveSpherePrefab;","import IAsset\t\t\t\t\t= require(\"awayjs-core/lib/library/IAsset\");\n\nimport SubGeometryBase\t\t\t= require(\"awayjs-display/lib/base/SubGeometryBase\");\nimport TriangleSubGeometry\t\t= require(\"awayjs-display/lib/base/TriangleSubGeometry\");\nimport PrimitivePrefabBase\t\t= require(\"awayjs-display/lib/prefabs/PrimitivePrefabBase\");\n\n/**\n * A UV Cylinder primitive mesh.\n */\nclass PrimitiveTorusPrefab extends PrimitivePrefabBase implements IAsset\n{\n\tprivate _radius:number;\n\tprivate _tubeRadius:number;\n\tprivate _segmentsR:number;\n\tprivate _segmentsT:number;\n\tprivate _yUp:boolean;\n\tprivate _numVertices:number = 0;\n\n\t/**\n\t * The radius of the torus.\n\t */\n\tpublic get radius():number\n\t{\n\t\treturn this._radius;\n\t}\n\n\tpublic set radius(value:number)\n\t{\n\t\tthis._radius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * The radius of the inner tube of the torus.\n\t */\n\tpublic get tubeRadius():number\n\t{\n\t\treturn this._tubeRadius;\n\t}\n\n\tpublic set tubeRadius(value:number)\n\t{\n\t\tthis._tubeRadius = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Defines the number of horizontal segments that make up the torus. Defaults to 16.\n\t */\n\tpublic get segmentsR():number\n\t{\n\t\treturn this._segmentsR;\n\t}\n\n\tpublic set segmentsR(value:number)\n\t{\n\t\tthis._segmentsR = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines the number of vertical segments that make up the torus. Defaults to 8.\n\t */\n\tpublic get segmentsT():number\n\t{\n\t\treturn this._segmentsT;\n\t}\n\n\tpublic set segmentsT(value:number)\n\t{\n\t\tthis._segmentsT = value;\n\t\tthis._pInvalidateGeometry();\n\t\tthis._pInvalidateUVs();\n\t}\n\n\t/**\n\t * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tpublic get yUp():boolean\n\t{\n\t\treturn this._yUp;\n\t}\n\n\tpublic set yUp(value:boolean)\n\t{\n\t\tthis._yUp = value;\n\t\tthis._pInvalidateGeometry();\n\t}\n\n\t/**\n\t * Creates a new Torus object.\n\t * @param radius The radius of the torus.\n\t * @param tuebRadius The radius of the inner tube of the torus.\n\t * @param segmentsR Defines the number of horizontal segments that make up the torus.\n\t * @param segmentsT Defines the number of vertical segments that make up the torus.\n\t * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).\n\t */\n\tconstructor(radius:number = 50, tubeRadius:number = 50, segmentsR:number = 16, segmentsT:number = 8, yUp:boolean = true)\n\t{\n\t\tsuper();\n\n\t\tthis._radius = radius;\n\t\tthis._tubeRadius = tubeRadius;\n\t\tthis._segmentsR = segmentsR;\n\t\tthis._segmentsT = segmentsT;\n\t\tthis._yUp = yUp;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildGeometry(target:SubGeometryBase, geometryType:string)\n\t{\n\t\tvar indices:Array /*uint*/;\n\t\tvar positions:Array;\n\t\tvar normals:Array;\n\t\tvar tangents:Array;\n\n\t\tvar i:number, j:number;\n\t\tvar x:number, y:number, z:number, nx:number, ny:number, nz:number, revolutionAngleR:number, revolutionAngleT:number;\n\t\tvar vidx:number;\n\t\tvar fidx:number;\n\t\tvar numIndices:number = 0;\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// evaluate target number of vertices, triangles and indices\n\t\t\tthis._numVertices = (this._segmentsT + 1)*(this._segmentsR + 1); // segmentsT + 1 because of closure, segmentsR + 1 because of closure\n\t\t\tnumIndices = this._segmentsT*this._segmentsR*6; // each level has segmentR quads, each of 2 triangles\n\n\t\t\t// need to initialize raw arrays or can be reused?\n\t\t\tif (this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tindices = triangleGeometry.indices;\n\t\t\t\tpositions = triangleGeometry.positions;\n\t\t\t\tnormals = triangleGeometry.vertexNormals;\n\t\t\t\ttangents = triangleGeometry.vertexTangents;\n\t\t\t} else {\n\t\t\t\tindices = new Array(numIndices)\n\t\t\t\tpositions = new Array(this._numVertices*3);\n\t\t\t\tnormals = new Array(this._numVertices*3);\n\t\t\t\ttangents = new Array(this._numVertices*3);\n\n\t\t\t\tthis._pInvalidateUVs();\n\t\t\t}\n\n\n\t\t\tvidx = 0;\n\t\t\tfidx = 0;\n\n\t\t\t// evaluate revolution steps\n\t\t\tvar revolutionAngleDeltaR:number = 2*Math.PI/this._segmentsR;\n\t\t\tvar revolutionAngleDeltaT:number = 2*Math.PI/this._segmentsT;\n\n\t\t\tvar comp1:number, comp2:number;\n\t\t\tvar t1:number, t2:number, n1:number, n2:number;\n\t\t\tvar startIndex:number = 0;\n\t\t\tvar nextVertexIndex:number = 0;\n\n\t\t\t// surface\n\t\t\tvar a:number, b:number, c:number, d:number, length:number;\n\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\n\t\t\t\tstartIndex = nextVertexIndex*3;\n\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\trevolutionAngleR = i*revolutionAngleDeltaR;\n\t\t\t\t\trevolutionAngleT = j*revolutionAngleDeltaT;\n\n\t\t\t\t\tlength = Math.cos(revolutionAngleT);\n\t\t\t\t\tnx = length*Math.cos(revolutionAngleR);\n\t\t\t\t\tny = length*Math.sin(revolutionAngleR);\n\t\t\t\t\tnz = Math.sin(revolutionAngleT);\n\n\t\t\t\t\tx = this._radius*Math.cos(revolutionAngleR) + this._tubeRadius*nx;\n\t\t\t\t\ty = this._radius*Math.sin(revolutionAngleR) + this._tubeRadius*ny;\n\t\t\t\t\tz = (j == this._segmentsT)? 0 : this._tubeRadius*nz;\n\n\t\t\t\t\tif (this._yUp) {\n\n\t\t\t\t\t\tn1 = -nz;\n\t\t\t\t\t\tn2 = ny;\n\t\t\t\t\t\tt1 = 0;\n\t\t\t\t\t\tt2 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tcomp1 = -z;\n\t\t\t\t\t\tcomp2 = y;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tn1 = ny;\n\t\t\t\t\t\tn2 = nz;\n\t\t\t\t\t\tt1 = (length? nx/length : x/this._radius);\n\t\t\t\t\t\tt2 = 0;\n\t\t\t\t\t\tcomp1 = y;\n\t\t\t\t\t\tcomp2 = z;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (i == this._segmentsR) {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = positions[startIndex + 1];\n\t\t\t\t\t\tpositions[vidx + 2] = positions[startIndex + 2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpositions[vidx] = x;\n\t\t\t\t\t\tpositions[vidx + 1] = comp1;\n\t\t\t\t\t\tpositions[vidx + 2] = comp2;\n\t\t\t\t\t}\n\n\t\t\t\t\tnormals[vidx] = nx;\n\t\t\t\t\tnormals[vidx + 1] = n1;\n\t\t\t\t\tnormals[vidx + 2] = n2;\n\t\t\t\t\ttangents[vidx] = -(length? ny/length : y/this._radius);\n\t\t\t\t\ttangents[vidx + 1] = t1;\n\t\t\t\t\ttangents[vidx + 2] = t2;\n\n\t\t\t\t\tvidx += 3;\n\n\t\t\t\t\t// close triangle\n\t\t\t\t\tif (i > 0 && j > 0) {\n\t\t\t\t\t\ta = nextVertexIndex; // current\n\t\t\t\t\t\tb = nextVertexIndex - 1; // previous\n\t\t\t\t\t\tc = b - this._segmentsR - 1; // previous of last level\n\t\t\t\t\t\td = a - this._segmentsR - 1; // current of last level\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = b;\n\t\t\t\t\t\tindices[fidx++] = c;\n\n\t\t\t\t\t\tindices[fidx++] = a;\n\t\t\t\t\t\tindices[fidx++] = c;\n\t\t\t\t\t\tindices[fidx++] = d;\n\t\t\t\t\t}\n\n\t\t\t\t\tnextVertexIndex++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateIndices(indices);\n\n\t\t\ttriangleGeometry.updatePositions(positions);\n\t\t\ttriangleGeometry.updateVertexNormals(normals);\n\t\t\ttriangleGeometry.updateVertexTangents(tangents);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//TODO\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pBuildUVs(target:SubGeometryBase, geometryType:string)\n\t{\n\n\t\tvar i:number, j:number;\n\t\tvar uvs:Array;\n\n\n\t\tif (geometryType == \"triangleSubGeometry\") {\n\n\t\t\tvar triangleGeometry:TriangleSubGeometry = target;\n\n\t\t\t// need to initialize raw array or can be reused?\n\t\t\tif (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {\n\t\t\t\tuvs = triangleGeometry.uvs;\n\t\t\t} else {\n\t\t\t\tuvs = new Array(this._numVertices*2);\n\t\t\t}\n\n\t\t\t// current uv component index\n\t\t\tvar index:number = 0;\n\n\t\t\t// surface\n\t\t\tfor (j = 0; j <= this._segmentsT; ++j) {\n\t\t\t\tfor (i = 0; i <= this._segmentsR; ++i) {\n\t\t\t\t\t// revolution vertex\n\t\t\t\t\tuvs[index++] = ( i/this._segmentsR )*triangleGeometry.scaleU;\n\t\t\t\t\tuvs[index++] = ( j/this._segmentsT )*triangleGeometry.scaleV;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// build real data from raw data\n\t\t\ttriangleGeometry.updateUVs(uvs);\n\n\t\t} else if (geometryType == \"lineSubGeometry\") {\n\t\t\t//nothing to do here\n\t\t}\n\t}\n}\n\nexport = PrimitiveTorusPrefab;","import Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Matrix3D\");\nimport CoordinateSystem\t\t\t\t= require(\"awayjs-core/lib/projections/CoordinateSystem\");\n\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport CSSRendererBase\t\t\t\t= require(\"awayjs-display/lib/render/CSSRendererBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\n\n\n/**\n * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the\n * materials assigned to them.\n *\n * @class away.render.DefaultRenderer\n */\nclass CSSDefaultRenderer extends CSSRendererBase implements IRenderer\n{\n\tprivate _container:HTMLDivElement;\n\tprivate _context:HTMLDivElement;\n\tprivate _contextStyle:MSStyleCSSProperties;\n\tprivate _contextMatrix:Matrix3D = new Matrix3D();\n\t\n\tprivate _activeMaterial:CSSMaterialBase;\n\tprivate _skyboxProjection:Matrix3D = new Matrix3D();\n\tprivate _transform:Matrix3D = new Matrix3D();\n\n\t/**\n\t * Creates a new CSSDefaultRenderer object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t//create container for the renderer\n\t\tthis._container = document.createElement(\"div\");\n\t\tthis._container.style.overflow = \"hidden\";\n\t\tthis._container.style.position = \"absolute\";\n\t\t\n\t\t//add container to body\n\t\tdocument.body.appendChild(this._container);\n\n\t\t//create conxtext for the renderer\n\t\tthis._context = document.createElement(\"div\");\n\t\tthis._contextStyle = this._context.style;\n\t\tthis._contextStyle.position = \"absolute\";\n\t\tthis._contextStyle.transformStyle\n\t\t\t= this._contextStyle[\"-webkit-transform-style\"]\n\t\t\t= this._contextStyle[\"-moz-transform-style\"]\n\t\t\t= this._contextStyle[\"-o-transform-style\"]\n\t\t\t= this._contextStyle[\"-ms-transform-style\"] = \"preserve-3d\";\n\t\tthis._contextStyle.transformOrigin\n\t\t\t= this._contextStyle[\"-webkit-transform-origin\"]\n\t\t\t= this._contextStyle[\"-moz-transform-origin\"]\n\t\t\t= this._contextStyle[\"-o-transform-origin\"]\n\t\t\t= this._contextStyle[\"-ms-transform-origin\"] = \"0% 0%\";\n\n\t\t//add context to container\n\t\tthis._container.appendChild(this._context);\n\t}\n\n\t/**\n\t *\n\t * @param entityCollector\n\t */\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tsuper.render(entityCollector);\n\n\t\tif (this._pBackBufferInvalid)// reset or update render settings\n\t\t\tthis.pUpdateBackBuffer();\n\n\t\tthis._iRender( entityCollector);\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic pDraw(entityCollector:EntityCollector)\n\t{\n//\t\t\tif (entityCollector.skyBox) {\n//\t\t\t\tif (this._activeMaterial)\n//\t\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n//\n//\t\t\t\tthis._activeMaterial = null;\n//\n//\t\t\t\tthis._pContext.setDepthTest(false, away.gl.ContextGLCompareMode.ALWAYS);\n//\t\t\t\tthis.drawSkybox(entityCollector);\n//\n//\t\t\t}\n//\n//\t\t\tvar which:number = target? DefaultRenderer.SCREEN_PASSES : DefaultRenderer.ALL_PASSES;\n\n\t\tvar sheet:CSSStyleSheet = document.styleSheets[document.styleSheets.length - 1];\n\n\t\tfor (var i:number = 0; i < sheet.cssRules.length; i++) {\n\t\t\tvar style:MSStyleCSSProperties = ( sheet.cssRules[i]).style;\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = (entityCollector.camera.projection.coordinateSystem == CoordinateSystem.RIGHT_HANDED)? \"\" : \"scale3d(1, -1, 1) translateY(-\" + style.height + \")\";\n\t\t}\n\n\t\tthis.drawRenderables(this._renderableHead, entityCollector);\n\n//\t\t\tif (this._activeMaterial)\n//\t\t\t\tthis._activeMaterial.iDeactivate(this._pStageGL);\n\n\t\tthis._activeMaterial = null;\n\t}\n\n\t/**\n\t * Updates the backbuffer properties.\n\t */\n\tpublic pUpdateBackBuffer()\n\t{\n\t\tthis._container.style.width = this._width + \"px\";\n\t\tthis._container.style.height = this._height + \"px\";\n\t\tthis._container.style.clip = \"rect(0px, \" + this._width + \"px, \" + this._height + \"px, 0px)\";\n\n\t\t//update context matrix\n\t\tthis._contextMatrix.rawData[0] = this._width/2;\n\t\tthis._contextMatrix.rawData[5] = -this._height/2;\n\t\tthis._contextMatrix.rawData[10] = -1; //fix for innaccurate z-sort\n\t\tthis._contextMatrix.rawData[12] = this._width/2;\n\t\tthis._contextMatrix.rawData[13] = this._height/2;\n\n\t\t//update context tranform\n\t\tthis._contextStyle.transform\n\t\t\t= this._contextStyle[\"-webkit-transform\"]\n\t\t\t= this._contextStyle[\"-moz-transform\"]\n\t\t\t= this._contextStyle[\"-o-transform\"]\n\t\t\t= this._contextStyle[\"-ms-transform\"] = this._contextMatrix.toString();\n\n\t\tthis._pBackBufferInvalid = false;\n\t}\n\n\t/**\n\t * Draw the skybox if present.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawSkybox(entityCollector:CSSEntityCollector)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Draw a list of renderables.\n\t * @param renderables The renderables to draw.\n\t * @param entityCollector The EntityCollector containing all potentially visible information.\n\t */\n\tprivate drawRenderables(item:CSSRenderableBase, entityCollector:EntityCollector)\n\t{\n\t\tvar viewProjection:Matrix3D = entityCollector.camera.viewProjection.clone();\n\n\t\twhile (item) {\n\t\t\t//this._activeMaterial = item.materialOwner.material;\n\n\t\t\t//serialise transform and apply to html element\n\t\t\tthis._transform.copyRawDataFrom(item.renderSceneTransform.rawData);\n\t\t\tthis._transform.append(viewProjection);\n\n\t\t\tvar style:MSStyleCSSProperties = item.htmlElement.style;\n\n\t\t\tstyle.transform\n\t\t\t\t= style[\"-webkit-transform\"]\n\t\t\t\t= style[\"-moz-transform\"]\n\t\t\t\t= style[\"-o-transform\"]\n\t\t\t\t= style[\"-ms-transform\"] = this._transform.toString();\n\n\t\t\tstyle.transformStyle\n\t\t\t\t= style[\"-webkit-transform-style\"]\n\t\t\t\t= style[\"-moz-transform-style\"]\n\t\t\t\t= style[\"-o-transform-style\"]\n\t\t\t\t= style[\"-ms-transform-style\"] = \"preserve-3d\";\n\n\t\t\t//check if child requires adding to the view\n\t\t\tif (!this._context.contains(item.htmlElement))\n\t\t\t\tthis._context.appendChild(item.htmlElement);\n\n\t\t\titem = item.next;\n\t\t}\n\n//\t\t\tvar numPasses:number;\n//\t\t\tvar j:number;\n//\t\t\tvar camera:away.entities.Camera = entityCollector.camera;\n//\t\t\tvar item2:away.render.CSSRenderableBase;\n//\n//\t\t\twhile (item) {\n//\t\t\t\tthis._activeMaterial = item.material;\n//\n//\t\t\t\tthis._activeMaterial.iUpdateMaterial(this._pContext);\n//\n//\t\t\t\tnumPasses = this._activeMaterial._iNumPasses;\n//\n//\t\t\t\tj = 0;\n//\n//\t\t\t\tdo {\n//\t\t\t\t\titem2 = item;\n//\n//\t\t\t\t\tvar rttMask:number = this._activeMaterial.iPassRendersToTexture(j)? 1 : 2;\n//\n//\t\t\t\t\tif ((rttMask & which) != 0) {\n//\t\t\t\t\t\tthis._activeMaterial.iActivatePass(j, this._pStageGL, camera);\n//\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\tthis._activeMaterial.iRenderPass(j, item2, this._pStageGL, entityCollector);\n//\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.material == this._activeMaterial);\n//\n//\t\t\t\t\t\tthis._activeMaterial.iDeactivatePass(j, this._pStageGL);\n//\n//\t\t\t\t\t} else {\n//\t\t\t\t\t\tdo {\n//\t\t\t\t\t\t\titem2 = item2.next;\n//\n//\t\t\t\t\t\t} while (item2 && item2.renderable.material == this._activeMaterial);\n//\t\t\t\t\t}\n//\t\t\t\t} while (++j < numPasses);\n//\n//\t\t\t\titem = item2;\n//\t\t\t}\n\t}\n\n\tpublic dispose()\n\t{\n\t\tsuper.dispose();\n\n\t\t//TODO\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\treturn new CSSEntityCollector();\n\t}\n}\n\nexport = CSSDefaultRenderer;","import Point\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Point\");\nimport Rectangle\t\t\t\t\t= require(\"awayjs-core/lib/geom/Rectangle\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\nimport AbstractMethodError\t\t\t= require(\"awayjs-core/lib/errors/AbstractMethodError\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\n\nimport LineSubMesh\t\t\t\t\t= require(\"awayjs-display/lib/base/LineSubMesh\");\nimport TriangleSubMesh\t\t\t\t= require(\"awayjs-display/lib/base/TriangleSubMesh\");\nimport CSSBillboardRenderable\t\t= require(\"awayjs-display/lib/pool/CSSBillboardRenderable\");\nimport CSSLineSegmentRenderable\t\t= require(\"awayjs-display/lib/pool/CSSLineSegmentRenderable\");\nimport CSSRenderableBase\t\t\t= require(\"awayjs-display/lib/pool/CSSRenderableBase\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport IRenderablePool\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderablePool\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\nimport CSSEntityCollector\t\t\t= require(\"awayjs-display/lib/traverse/CSSEntityCollector\");\nimport EntityCollector\t\t\t\t= require(\"awayjs-display/lib/traverse/EntityCollector\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Billboard\t\t\t\t\t= require(\"awayjs-display/lib/entities/Billboard\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\nimport RendererEvent\t\t\t\t= require(\"awayjs-display/lib/events/RendererEvent\");\nimport CSSMaterialBase\t\t\t\t= require(\"awayjs-display/lib/materials/CSSMaterialBase\");\nimport TextureProxyBase\t\t\t\t= require(\"awayjs-core/lib/textures/TextureProxyBase\");\n\n/**\n * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render the\n * contents of a partition\n *\n * @class away.render.RendererBase\n */\nclass CSSRendererBase extends EventDispatcher\n{\n\tprivate _billboardRenderablePool:IRenderablePool;\n\tprivate _lineSegmentRenderablePool:IRenderablePool;\n\n\tpublic _pCamera:Camera;\n\tpublic _iEntryPoint:Vector3D;\n\tpublic _pCameraForward:Vector3D;\n\n\tprivate _backgroundR:number = 0;\n\tprivate _backgroundG:number = 0;\n\tprivate _backgroundB:number = 0;\n\tprivate _backgroundAlpha:number = 1;\n\tprivate _shareContext:boolean = false;\n\n\tpublic _pBackBufferInvalid:boolean = true;\n\tpublic _depthTextureInvalid:boolean = true;\n\n\tpublic _renderableHead:CSSRenderableBase;\n\n\tpublic _width:number;\n\tpublic _height:number;\n\n\tprivate _viewPort:Rectangle = new Rectangle();\n\tprivate _viewportDirty:boolean;\n\tprivate _scissorRect:Rectangle = new Rectangle();\n\tprivate _scissorDirty:boolean;\n\n\tprivate _localPos:Point = new Point();\n\tprivate _globalPos:Point = new Point();\n\n\tprivate _scissorUpdated:RendererEvent;\n\tprivate _viewPortUpdated:RendererEvent;\n\n\t/**\n\t * A viewPort rectangle equivalent of the StageGL size and position.\n\t */\n\tpublic get viewPort():Rectangle\n\t{\n\t\treturn this._viewPort;\n\t}\n\n\t/**\n\t * A scissor rectangle equivalent of the view size and position.\n\t */\n\tpublic get scissorRect():Rectangle\n\t{\n\t\treturn this._scissorRect;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get x():number\n\t{\n\t\treturn this._localPos.x;\n\t}\n\n\tpublic set x(value:number)\n\t{\n\t\tif (this.x == value)\n\t\t\treturn;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get y():number\n\t{\n\t\treturn this._localPos.y;\n\t}\n\n\tpublic set y(value:number)\n\t{\n\t\tif (this.y == value)\n\t\t\treturn;\n\n\t\tthis._globalPos.y = this._localPos.y = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get width():number\n\t{\n\t\treturn this._width;\n\t}\n\n\tpublic set width(value:number)\n\t{\n\t\tif (this._width == value)\n\t\t\treturn;\n\n\t\tthis._width = value;\n\t\tthis._scissorRect.width = value;\n\t\tthis._viewPort.width = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get height():number\n\t{\n\t\treturn this._height;\n\t}\n\n\tpublic set height(value:number)\n\t{\n\t\tif (this._height == value)\n\t\t\treturn;\n\n\t\tthis._height = value;\n\t\tthis._scissorRect.height = value;\n\t\tthis._viewPort.height = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t\tthis._depthTextureInvalid = true;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic renderableSorter:IEntitySorter;\n\n\t/**\n\t * Creates a new RendererBase object.\n\t */\n\tconstructor(renderToTexture:boolean = false, forceSoftware:boolean = false, profile:string = \"baseline\")\n\t{\n\t\tsuper();\n\n\t\t//this._billboardRenderablePool = RenderablePool.getPool(CSSBillboardRenderable);\n\t\t//this._lineSegmentRenderablePool = RenderablePool.getPool(CSSLineSegmentRenderable);\n\n\t\tthis._viewPort = new Rectangle();\n\n\t\tif (this._width == 0)\n\t\t\tthis.width = window.innerWidth;\n\n\t\tif (this._height == 0)\n\t\t\tthis.height = window.innerHeight;\n\t}\n\n\t/**\n\t * The background color's red component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundR():number\n\t{\n\t\treturn this._backgroundR;\n\t}\n\n\tpublic set _iBackgroundR(value:number)\n\t{\n\t\tif (this._backgroundR == value)\n\t\t\treturn;\n\n\t\tthis._backgroundR = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's green component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundG():number\n\t{\n\t\treturn this._backgroundG;\n\t}\n\n\tpublic set _iBackgroundG(value:number)\n\t{\n\t\tif (this._backgroundG == value)\n\t\t\treturn;\n\n\t\tthis._backgroundG = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t * The background color's blue component, used when clearing.\n\t *\n\t * @private\n\t */\n\tpublic get _iBackgroundB():number\n\t{\n\t\treturn this._backgroundB;\n\t}\n\n\tpublic set _iBackgroundB(value:number)\n\t{\n\t\tif (this._backgroundB == value)\n\t\t\treturn;\n\n\t\tthis._backgroundB = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\tpublic get shareContext():boolean\n\t{\n\t\treturn this._shareContext;\n\t}\n\n\tpublic set shareContext(value:boolean)\n\t{\n\t\tif (this._shareContext == value)\n\t\t\treturn;\n\n\t\tthis._shareContext = value;\n\n\t\tthis.updateGlobalPos();\n\t}\n\n\t/**\n\t * Disposes the resources used by the RendererBase.\n\t */\n\tpublic dispose()\n\t{\n\t\t/*\n\t\t if (_backgroundImageRenderer) {\n\t\t _backgroundImageRenderer.dispose();\n\t\t _backgroundImageRenderer = null;\n\t\t }\n\t\t */\n\t}\n\n\tpublic render(entityCollector:ICollector)\n\t{\n\t\tthis._viewportDirty = false;\n\t\tthis._scissorDirty = false;\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic _iRender(entityCollector:EntityCollector, target:TextureProxyBase = null, scissorRect:Rectangle = null, surfaceSelector:number = 0)\n\t{\n\t\tif (!entityCollector.entityHead)\n\t\t\treturn;\n\n\t\tthis.pExecuteRender(entityCollector, scissorRect);\n\t}\n\n\tpublic _iRenderCascades(entityCollector:ICollector, target:TextureProxyBase, numCascades:number, scissorRects:Array, cameras:Array)\n\t{\n\n\t}\n\tpublic pCollectRenderables(entityCollector:ICollector)\n\t{\n\t\t//reset head values\n\t\tthis._renderableHead = null;\n\n\t\t//grab entity head\n\t\tvar item:EntityListItem = entityCollector.entityHead;\n\n\t\t//set temp values for entry point and camera forward vector\n\t\tthis._pCamera = entityCollector.camera;\n\t\tthis._iEntryPoint = this._pCamera.scenePosition;\n\t\tthis._pCameraForward = this._pCamera.transform.forwardVector;\n\n\t\t//iterate through all entities\n\t\twhile (item) {\n\t\t\titem.entity._iCollectRenderables(this);\n\t\t\titem = item.next;\n\t\t}\n\t}\n\n\t/**\n\t * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up.\n\t * @param entityCollector The EntityCollector object containing the potentially visible geometry.\n\t * @param scissorRect\n\t */\n\tpublic pExecuteRender(entityCollector:CSSEntityCollector, scissorRect:Rectangle = null)\n\t{\n\t\tthis.pCollectRenderables(entityCollector);\n\n\t\tthis.pDraw(entityCollector);\n\t}\n\n\t/**\n\t * Performs the actual drawing of dom objects to the target.\n\t *\n\t * @param entityCollector The EntityCollector object containing the potentially visible dom objects.\n\t */\n\tpublic pDraw(entityCollector:CSSEntityCollector)\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n\n\tpublic get _iBackgroundAlpha():number\n\t{\n\t\treturn this._backgroundAlpha;\n\t}\n\n\tpublic set _iBackgroundAlpha(value:number)\n\t{\n\t\tif (this._backgroundAlpha == value)\n\t\t\treturn;\n\n\t\tthis._backgroundAlpha = value;\n\n\t\tthis._pBackBufferInvalid = true;\n\t}\n\n\t/**\n\t *\n\t * @param billboard\n\t */\n\tpublic applyBillboard(billboard:Billboard)\n\t{\n\t\t//this._applyRenderable( this._billboardRenderablePool.getItem(billboard));\n\t}\n\n\t/**\n\t *\n\t * @param lineSubMesh\n\t */\n\tpublic applyLineSubMesh(lineSubMesh:LineSubMesh)\n\t{\n\t\t//this._applyRenderable( this._billboardRenderablePool.getItem(lineSegment));\n\t}\n\n\t/**\n\t *\n\t * @param skybox\n\t */\n\tpublic applySkybox(skybox:Skybox)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param triangleSubMesh\n\t */\n\tpublic applyTriangleSubMesh(triangleSubMesh:TriangleSubMesh)\n\t{\n\n\t}\n\n\t/**\n\t *\n\t * @param renderable\n\t * @private\n\t */\n\tprivate _applyRenderable(renderable:CSSRenderableBase)\n\t{\n\t\tvar material:CSSMaterialBase;// = renderable.renderableOwner.material;\n\t\tvar entity:IEntity = renderable.sourceEntity;\n\t\tvar position:Vector3D = entity.scenePosition;\n\n\t\tif (material) {\n\t\t\t//set ids for faster referencing\n\t\t\trenderable.materialId = material._iMaterialId;\n//\t\t\t\trenderable.renderOrderId = material._iRenderOrderId;\n\t\t\trenderable.cascaded = false;\n\n\t\t\t// project onto camera's z-axis\n\t\t\tposition = this._iEntryPoint.subtract(position);\n\t\t\trenderable.zIndex = entity.zOffset - position.dotProduct(this._pCameraForward);\n\n\t\t\t//store reference to scene transform\n\t\t\trenderable.renderSceneTransform = renderable.sourceEntity.getRenderSceneTransform(this._pCamera);\n\n\t\t\t//store reference to next item in list\n\t\t\trenderable.next = this._renderableHead;\n\t\t\tthis._renderableHead = renderable;\n\t\t}\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyScissorUpdate()\n\t{\n\t\tif (this._scissorDirty)\n\t\t\treturn;\n\n\t\tthis._scissorDirty = true;\n\n\t\tif (!this._scissorUpdated)\n\t\t\tthis._scissorUpdated = new RendererEvent(RendererEvent.SCISSOR_UPDATED);\n\n\t\tthis.dispatchEvent(this._scissorUpdated);\n\t}\n\n\n\t/**\n\t * @private\n\t */\n\tprivate notifyViewportUpdate()\n\t{\n\t\tif (this._viewportDirty)\n\t\t\treturn;\n\n\t\tthis._viewportDirty = true;\n\n\t\tif (!this._viewPortUpdated)\n\t\t\tthis._viewPortUpdated = new RendererEvent(RendererEvent.VIEWPORT_UPDATED);\n\n\t\tthis.dispatchEvent(this._viewPortUpdated);\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic updateGlobalPos()\n\t{\n\t\tthis._viewPort.x = this._globalPos.x;\n\t\tthis._viewPort.y = this._globalPos.y;\n\n\t\tthis.notifyViewportUpdate();\n\t\tthis.notifyScissorUpdate();\n\t}\n\n\n\tpublic _iCreateEntityCollector():ICollector\n\t{\n\t\tthrow new AbstractMethodError();\n\t}\n}\n\nexport = CSSRendererBase;","import IRenderable\t\t\t\t\t= require(\"awayjs-display/lib/pool/IRenderable\");\nimport IEntitySorter\t\t\t\t= require(\"awayjs-display/lib/sort/IEntitySorter\");\n\n/**\n * @class away.sort.RenderableMergeSort\n */\nclass RenderableMergeSort implements IEntitySorter\n{\n\tpublic sortBlendedRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable;\n\t\tvar slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortBlendedRenderables(head);\n\t\theadB = this.sortBlendedRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB) {\n\t\t\tif (head.zIndex < headB.zIndex) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result)\n\t\t\t\tresult = l; else\n\t\t\t\tcurr.next = l;\n\n\t\t\tcurr = l;\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n\n\tpublic sortOpaqueRenderables(head:IRenderable):IRenderable\n\t{\n\t\tvar headB:IRenderable;\n\t\tvar fast:IRenderable, slow:IRenderable;\n\n\t\tif (!head || !head.next) {\n\t\t\treturn head;\n\t\t}\n\n\t\t// split in two sublists\n\t\tslow = head;\n\t\tfast = head.next;\n\n\t\twhile (fast) {\n\t\t\tfast = fast.next;\n\t\t\tif (fast) {\n\t\t\t\tslow = slow.next;\n\t\t\t\tfast = fast.next;\n\t\t\t}\n\t\t}\n\n\t\theadB = slow.next;\n\t\tslow.next = null;\n\n\t\t// recurse\n\t\thead = this.sortOpaqueRenderables(head);\n\t\theadB = this.sortOpaqueRenderables(headB);\n\n\t\t// merge sublists while respecting order\n\t\tvar result:IRenderable;\n\t\tvar curr:IRenderable;\n\t\tvar l:IRenderable;\n\t\tvar cmp:number = 0;\n\n\t\tif (!head)\n\t\t\treturn headB;\n\t\tif (!headB)\n\t\t\treturn head;\n\n\t\twhile (head && headB && head != null && headB != null) {\n\n\t\t\t// first sort per render order id (reduces program3D switches),\n\t\t\t// then on render object id (reduces setting props),\n\t\t\t// then on zIndex (reduces overdraw)\n\t\t\tvar aid:number = head.renderOrderId;\n\t\t\tvar bid:number = headB.renderOrderId;\n\n\t\t\tif (aid == bid) {\n\t\t\t\tvar ma:number = head.renderObjectId;\n\t\t\t\tvar mb:number = headB.renderObjectId;\n\n\t\t\t\tif (ma == mb) {\n\t\t\t\t\tif (head.zIndex < headB.zIndex)\n\t\t\t\t\t\tcmp = 1; else\n\t\t\t\t\t\tcmp = -1;\n\t\t\t\t} else if (ma > mb) {\n\t\t\t\t\tcmp = 1;\n\t\t\t\t} else {\n\t\t\t\t\tcmp = -1;\n\t\t\t\t}\n\t\t\t} else if (aid > bid) {\n\t\t\t\tcmp = 1;\n\t\t\t} else {\n\t\t\t\tcmp = -1;\n\t\t\t}\n\n\t\t\tif (cmp < 0) {\n\t\t\t\tl = head;\n\t\t\t\thead = head.next;\n\t\t\t} else {\n\t\t\t\tl = headB;\n\t\t\t\theadB = headB.next;\n\t\t\t}\n\n\t\t\tif (!result) {\n\t\t\t\tresult = l;\n\t\t\t\tcurr = l;\n\t\t\t} else {\n\t\t\t\tcurr.next = l;\n\t\t\t\tcurr = l;\n\t\t\t}\n\t\t}\n\n\t\tif (head)\n\t\t\tcurr.next = head; else if (headB)\n\t\t\tcurr.next = headB;\n\n\t\treturn result;\n\t}\n}\n\nexport = RenderableMergeSort;","/**\n * The AntiAliasType class provides values for anti-aliasing in the\n * away.text.TextField class.\n */\nclass AntiAliasType\n{\n\t/**\n\t * Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing\n\t * allows font faces to be rendered at very high quality at small sizes. It\n\t * is best used with applications that have a lot of small text. Advanced\n\t * anti-aliasing is not recommended for very large fonts(larger than 48\n\t * points). This constant is used for the antiAliasType property\n\t * in the TextField class. Use the syntax\n\t * AntiAliasType.ADVANCED.\n\t */\n\tpublic static ADVANCED:string = \"advanced\";\n\n\t/**\n\t * Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and\n\t * earlier. This setting is recommended for applications that do not have a\n\t * lot of text. This constant is used for the antiAliasType\n\t * property in the TextField class. Use the syntax\n\t * AntiAliasType.NORMAL.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n}\n\nexport = AntiAliasType;","/**\n * The GridFitType class defines values for grid fitting in the TextField class.\n */\nclass GridFitType\n{\n\t/**\n\t * Doesn't set grid fitting. Horizontal and vertical lines in the glyphs are\n\t * not forced to the pixel grid. This constant is used in setting the\n\t * gridFitType property of the TextField class. This is often a\n\t * good setting for animation or for large font sizes. Use the syntax\n\t * GridFitType.NONE.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Fits strong horizontal and vertical lines to the pixel grid. This constant\n\t * is used in setting the gridFitType property of the TextField\n\t * class. This setting only works for left-justified text fields and acts\n\t * like the GridFitType.SUBPIXEL constant in static text. This\n\t * setting generally provides the best readability for left-aligned text. Use\n\t * the syntax GridFitType.PIXEL.\n\t */\n\tpublic static PIXEL:string = \"pixel\";\n\n\t/**\n\t * Fits strong horizontal and vertical lines to the sub-pixel grid on LCD\n\t * monitors. (Red, green, and blue are actual pixels on an LCD screen.) This\n\t * is often a good setting for right-aligned or center-aligned dynamic text,\n\t * and it is sometimes a useful tradeoff for animation vs. text quality. This\n\t * constant is used in setting the gridFitType property of the\n\t * TextField class. Use the syntax GridFitType.SUBPIXEL.\n\t */\n\tpublic static SUBPIXEL:string = \"subpixel\";\n}\n\nexport = GridFitType;","/**\n * The TextFieldAutoSize class is an enumeration of constant values used in\n * setting the autoSize property of the TextField class.\n */\nclass TextFieldAutoSize\n{\n\t/**\n\t * Specifies that the text is to be treated as center-justified text. Any\n\t * resizing of a single line of a text field is equally distributed to both\n\t * the right and left sides.\n\t */\n\tpublic static CENTER:string = \"center\";\n\n\t/**\n\t * Specifies that the text is to be treated as left-justified text, meaning\n\t * that the left side of the text field remains fixed and any resizing of a\n\t * single line is on the right side.\n\t */\n\tpublic static LEFT:string = \"left\";\n\n\t/**\n\t * Specifies that no resizing is to occur.\n\t */\n\tpublic static NONE:string = \"none\";\n\n\t/**\n\t * Specifies that the text is to be treated as right-justified text, meaning\n\t * that the right side of the text field remains fixed and any resizing of a\n\t * single line is on the left side.\n\t */\n\tpublic static RIGHT:string = \"right\";\n}\n\nexport = TextFieldAutoSize;","/**\n * The TextFieldType class is an enumeration of constant values used in setting the\n * type property of the TextField class.\n *\n * @see away.entities.TextField#type\n */\nclass TextFieldType\n{\n\t/**\n\t * Used to specify a dynamic TextField.\n\t */\n\tpublic static DYNAMIC:string = \"dynamic\";\n\n\t/**\n\t * Used to specify an input TextField.\n\t */\n\tpublic static INPUT:string = \"input\";\n}\n\nexport = TextFieldType;","/**\n * The TextFormatAlign class provides values for text alignment in the\n * TextFormat class.\n */\nclass TextFormatAlign\n{\n\t/**\n\t * Constant; centers the text in the text field. Use the syntax\n\t * TextFormatAlign.CENTER.\n\t */\n\tpublic CENTER:string = \"center\";\n\n\t/**\n\t * Constant; justifies text within the text field. Use the syntax\n\t * TextFormatAlign.JUSTIFY.\n\t */\n\tpublic JUSTIFY:string = \"justify\";\n\n\t/**\n\t * Constant; aligns text to the left within the text field. Use the syntax\n\t * TextFormatAlign.LEFT.\n\t */\n\tpublic LEFT:string = \"left\";\n\n\t/**\n\t * Constant; aligns text to the right within the text field. Use the syntax\n\t * TextFormatAlign.RIGHT.\n\t */\n\tpublic RIGHT:string = \"right\";\n}\n\nexport = TextFormatAlign;","/**\n * The TextFormat class represents character formatting information. Use the\n * TextFormat class to create specific text formatting for text fields. You\n * can apply text formatting to both static and dynamic text fields. The\n * properties of the TextFormat class apply to device and embedded fonts.\n * However, for embedded fonts, bold and italic text actually require specific\n * fonts. If you want to display bold or italic text with an embedded font,\n * you need to embed the bold and italic variations of that font.\n *\n *

You must use the constructor new TextFormat() to create a\n * TextFormat object before setting its properties. When you apply a\n * TextFormat object to a text field using the\n * TextField.defaultTextFormat property or the\n * TextField.setTextFormat() method, only its defined properties\n * are applied. Use the TextField.defaultTextFormat property to\n * apply formatting BEFORE you add text to the TextField, and the\n * setTextFormat() method to add formatting AFTER you add text to\n * the TextField. The TextFormat properties are null\n * by default because if you don't provide values for the properties, Flash\n * Player uses its own default formatting. The default formatting that Flash\n * Player uses for each property(if property's value is null) is\n * as follows:

\n *\n *

The default formatting for each property is also described in each\n * property description.

\n */\nclass TextFormat\n{\n\n\t/**\n\t * Indicates the alignment of the paragraph. Valid values are TextFormatAlign\n\t * constants.\n\t *\n\t * @default TextFormatAlign.LEFT\n\t * @throws ArgumentError The align specified is not a member of\n\t * flash.text.TextFormatAlign.\n\t */\n\tpublic align:string;\n\n\t/**\n\t * Indicates the block indentation in pixels. Block indentation is applied to\n\t * an entire block of text; that is, to all lines of the text. In contrast,\n\t * normal indentation(TextFormat.indent) affects only the first\n\t * line of each paragraph. If this property is null, the\n\t * TextFormat object does not specify block indentation(block indentation is\n\t * 0).\n\t */\n\tpublic blockIndent:number;\n\n\t/**\n\t * Specifies whether the text is boldface. The default value is\n\t * null, which means no boldface is used. If the value is\n\t * true, then the text is boldface.\n\t */\n\tpublic bold:boolean;\n\n\t/**\n\t * Indicates that the text is part of a bulleted list. In a bulleted list,\n\t * each paragraph of text is indented. To the left of the first line of each\n\t * paragraph, a bullet symbol is displayed. The default value is\n\t * null, which means no bulleted list is used.\n\t */\n\tpublic bullet:boolean;\n\n\t/**\n\t * Indicates the color of the text. A number containing three 8-bit RGB\n\t * components; for example, 0xFF0000 is red, and 0x00FF00 is green. The\n\t * default value is null, which means that Flash Player uses the\n\t * color black(0x000000).\n\t */\n\tpublic color:boolean;\n\n\t/**\n\t * The name of the font for text in this text format, as a string. The\n\t * default value is null, which means that Flash Player uses\n\t * Times New Roman font for the text.\n\t */\n\tpublic font:string;\n\n\t/**\n\t * Indicates the indentation from the left margin to the first character in\n\t * the paragraph. The default value is null, which indicates\n\t * that no indentation is used.\n\t */\n\tpublic indent:number;\n\n\t/**\n\t * Indicates whether text in this text format is italicized. The default\n\t * value is null, which means no italics are used.\n\t */\n\tpublic italic:boolean;\n\n\t/**\n\t * A Boolean value that indicates whether kerning is enabled\n\t * (true) or disabled(false). Kerning adjusts the\n\t * pixels between certain character pairs to improve readability, and should\n\t * be used only when necessary, such as with headings in large fonts. Kerning\n\t * is supported for embedded fonts only.\n\t *\n\t *

Certain fonts such as Verdana and monospaced fonts, such as Courier\n\t * New, do not support kerning.

\n\t *\n\t *

The default value is null, which means that kerning is not\n\t * enabled.

\n\t */\n\tpublic kerning:boolean;\n\n\t/**\n\t * An integer representing the amount of vertical space(called\n\t * leading) between lines. The default value is null,\n\t * which indicates that the amount of leading used is 0.\n\t */\n\tpublic leading:number;\n\n\t/**\n\t * The left margin of the paragraph, in pixels. The default value is\n\t * null, which indicates that the left margin is 0 pixels.\n\t */\n\tpublic leftMargin:number;\n\n\t/**\n\t * A number representing the amount of space that is uniformly distributed\n\t * between all characters. The value specifies the number of pixels that are\n\t * added to the advance after each character. The default value is\n\t * null, which means that 0 pixels of letter spacing is used.\n\t * You can use decimal values such as 1.75.\n\t */\n\tpublic letterSpacing:number;\n\n\t/**\n\t * The right margin of the paragraph, in pixels. The default value is\n\t * null, which indicates that the right margin is 0 pixels.\n\t */\n\tpublic rightMargin:number;\n\n\t/**\n\t * The size in pixels of text in this text format. The default value is\n\t * null, which means that a size of 12 is used.\n\t */\n\tpublic size:number;\n\n\t/**\n\t * Specifies custom tab stops as an array of non-negative integers. Each tab\n\t * stop is specified in pixels. If custom tab stops are not specified\n\t * (null), the default tab stop is 4(average character width).\n\t */\n\tpublic tabStops:Array = new Array();\n\n\t/**\n\t * Indicates the target window where the hyperlink is displayed. If the\n\t * target window is an empty string, the text is displayed in the default\n\t * target window _self. You can choose a custom name or one of\n\t * the following four names: _self specifies the current frame\n\t * in the current window, _blank specifies a new window,\n\t * _parent specifies the parent of the current frame, and\n\t * _top specifies the top-level frame in the current window. If\n\t * the TextFormat.url property is an empty string or\n\t * null, you can get or set this property, but the property will\n\t * have no effect.\n\t */\n\tpublic target:string;\n\n\t/**\n\t * Indicates whether the text that uses this text format is underlined\n\t * (true) or not(false). This underlining is\n\t * similar to that produced by the tag, but the latter is\n\t * not true underlining, because it does not skip descenders correctly. The\n\t * default value is null, which indicates that underlining is\n\t * not used.\n\t */\n\tpublic underline:boolean;\n\n\t/**\n\t * Indicates the target URL for the text in this text format. If the\n\t * url property is an empty string, the text does not have a\n\t * hyperlink. The default value is null, which indicates that\n\t * the text does not have a hyperlink.\n\t *\n\t *

Note: The text with the assigned text format must be set with\n\t * the htmlText property for the hyperlink to work.

\n\t */\n\tpublic url:string;\n\n\t/**\n\t * Creates a TextFormat object with the specified properties. You can then\n\t * change the properties of the TextFormat object to change the formatting of\n\t * text fields.\n\t *\n\t *

Any parameter may be set to null to indicate that it is\n\t * not defined. All of the parameters are optional; any omitted parameters\n\t * are treated as null.

\n\t *\n\t * @param font The name of a font for text as a string.\n\t * @param size An integer that indicates the size in pixels.\n\t * @param color The color of text using this text format. A number\n\t * containing three 8-bit RGB components; for example,\n\t * 0xFF0000 is red, and 0x00FF00 is green.\n\t * @param bold A Boolean value that indicates whether the text is\n\t * boldface.\n\t * @param italic A Boolean value that indicates whether the text is\n\t * italicized.\n\t * @param underline A Boolean value that indicates whether the text is\n\t * underlined.\n\t * @param url The URL to which the text in this text format\n\t * hyperlinks. If url is an empty string, the\n\t * text does not have a hyperlink.\n\t * @param target The target window where the hyperlink is displayed. If\n\t * the target window is an empty string, the text is\n\t * displayed in the default target window\n\t * _self. If the url parameter\n\t * is set to an empty string or to the value\n\t * null, you can get or set this property,\n\t * but the property will have no effect.\n\t * @param align The alignment of the paragraph, as a TextFormatAlign\n\t * value.\n\t * @param leftMargin Indicates the left margin of the paragraph, in pixels.\n\t * @param rightMargin Indicates the right margin of the paragraph, in pixels.\n\t * @param indent An integer that indicates the indentation from the left\n\t * margin to the first character in the paragraph.\n\t * @param leading A number that indicates the amount of leading vertical\n\t * space between lines.\n\t */\n\tconstructor(font:string = \"Times New Roman\", size:number = 12, color:number /*int*/ = 0x000000, bold:boolean = false, italic:boolean = false, underline:boolean = false, url:string = \"\", target:string = \"\", align:string = \"left\", leftMargin:number = 0, rightMargin:number = 0, indent:number = 0, leading:number = 0)\n\t{\n\t\tthis.font = font;\n\t\tthis.size = size;\n\t\tthis.bold = bold;\n\t\tthis.italic = italic;\n\t\tthis.underline = underline;\n\t\tthis.url = url;\n\t\tthis.target = target;\n\t\tthis.align = align;\n\t\tthis.leftMargin = leftMargin;\n\t\tthis.rightMargin = rightMargin;\n\t\tthis.indent = indent;\n\t\tthis.leading = leading;\n\t}\n}\n\nexport = TextFormat;","/**\n * A class that defines the Interactive mode of a text field object.\n *\n * @see away.entities.TextField#textInteractionMode\n */\nclass TextInteractionMode\n{\n\t/**\n\t * The text field's default interaction mode is NORMAL and it varies across\n\t * platform. On Desktop, the normal mode implies that the text field is in\n\t * scrollable + selection mode. On Mobile platforms like Android, normal mode\n\t * implies that the text field can only be scrolled but the text can not be\n\t * selected.\n\t */\n\tpublic static NORMAL:string = \"normal\";\n\n\t/**\n\t * On mobile platforms like Android, the text field starts in normal mode\n\t * (which implies scroll and non-selectable mode). The user can switch to\n\t * selection mode through the in-built context menu of the text field object.\n\t */\n\tpublic static SELECTION:string = \"selection\";\n}\n\nexport = TextInteractionMode;","/**\n * The TextLineMetrics class contains information about the text position and\n * measurements of a line of text within a text field. All measurements are in\n * pixels. Objects of this class are returned by the \n * away.entities.TextField.getLineMetrics() method.\n */\nclass TextLineMetrics\n{\n\t/**\n\t * The ascent value of the text is the length from the baseline to the top of\n\t * the line height in pixels.\n\t */\n\tpublic ascent:number;\n\n\t/**\n\t * The descent value of the text is the length from the baseline to the\n\t * bottom depth of the line in pixels.\n\t */\n\tpublic descent:number;\n\n\t/**\n\t * The height value of the text of the selected lines (not necessarily the\n\t * complete text) in pixels. The height of the text line does not include the\n\t * gutter height.\n\t */\n\tpublic height:number;\n\n\t/**\n\t * The leading value is the measurement of the vertical distance between the\n\t * lines of text.\n\t */\n\tpublic leading:number;\n\n\t/**\n\t * The width value is the width of the text of the selected lines (not\n\t * necessarily the complete text) in pixels. The width of the text line is\n\t * not the same as the width of the text field. The width of the text line is\n\t * relative to the text field width, minus the gutter width of 4 pixels\n\t * (2 pixels on each side).\n\t */\n\tpublic width:number;\n\n\t/**\n\t * The x value is the left position of the first character in pixels. This\n\t * value includes the margin, indent (if any), and gutter widths.\n\t */\n\tpublic x:number;\n\n\t/**\n\t * Creates a TextLineMetrics object. The TextLineMetrics object contains\n\t * information about the text metrics of a line of text in a text field.\n\t * Objects of this class are returned by the\n\t * away.entities.TextField.getLineMetrics() method.\n\t *\n\t * @param x The left position of the first character in pixels.\n\t * @param width The width of the text of the selected lines (not\n\t * necessarily the complete text) in pixels.\n\t * @param height The height of the text of the selected lines (not\n\t * necessarily the complete text) in pixels.\n\t * @param ascent The length from the baseline to the top of the line\n\t * height in pixels.\n\t * @param descent The length from the baseline to the bottom depth of\n\t * the line in pixels.\n\t * @param leading The measurement of the vertical distance between the\n\t * lines of text.\n\t */\n\tconstructor(x:number = NaN, width:number = NaN, height:number = NaN, ascent:number = NaN, descent:number = NaN, leading:number = NaN)\n\t{\n\n\t}\n}\n\nexport = TextLineMetrics;","import CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\n\n/**\n * @class away.traverse.CSSEntityCollector\n */\nclass CSSEntityCollector extends CollectorBase implements ICollector\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n}\n\nexport = CSSEntityCollector;","import Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Plane3D\");\n\nimport Scene\t\t\t\t\t\t= require(\"awayjs-display/lib/containers/Scene\");\nimport EntityListItem\t\t\t\t= require(\"awayjs-display/lib/pool/EntityListItem\");\nimport EntityListItemPool\t\t\t= require(\"awayjs-display/lib/pool/EntityListItemPool\");\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport IRenderer\t\t\t\t\t= require(\"awayjs-display/lib/render/IRenderer\");\nimport ICollector\t\t\t\t\t= require(\"awayjs-display/lib/traverse/ICollector\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * @class away.traverse.CollectorBase\n */\nclass CollectorBase implements ICollector\n{\n\tpublic scene:Scene;\n\n\tpublic _pEntityHead:EntityListItem;\n\tpublic _pEntityListItemPool:EntityListItemPool;\n\tpublic _pCamera:Camera;\n\tprivate _customCullPlanes:Array;\n\tprivate _cullPlanes:Array;\n\tprivate _numCullPlanes:number = 0;\n\tpublic _pNumEntities:number = 0;\n\tpublic _pNumInteractiveEntities:number = 0;\n\n\tconstructor()\n\t{\n\t\tthis._pEntityListItemPool = new EntityListItemPool();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get camera():Camera\n\t{\n\t\treturn this._pCamera;\n\t}\n\n\tpublic set camera(value:Camera)\n\t{\n\t\tthis._pCamera = value;\n\t\tthis._cullPlanes = this._pCamera.frustumPlanes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get cullPlanes():Array\n\t{\n\t\treturn this._customCullPlanes;\n\t}\n\n\tpublic set cullPlanes(value:Array)\n\t{\n\t\tthis._customCullPlanes = value;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get entityHead():EntityListItem\n\t{\n\t\treturn this._pEntityHead;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get numEntities():number\n\t{\n\t\treturn this._pNumEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get numInteractiveEntities():number\n\t{\n\t\treturn this._pNumInteractiveEntities;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clear()\n\t{\n\t\tthis._pNumEntities = this._pNumInteractiveEntities = 0;\n\t\tthis._cullPlanes = this._customCullPlanes? this._customCullPlanes : ( this._pCamera? this._pCamera.frustumPlanes : null );\n\t\tthis._numCullPlanes = this._cullPlanes? this._cullPlanes.length : 0;\n\t\tthis._pEntityHead = null;\n\t\tthis._pEntityListItemPool.freeAll();\n\t}\n\n\t/**\n\t *\n\t * @param node\n\t * @returns {boolean}\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\tvar enter:boolean = this.scene._iCollectionMark != node._iCollectionMark && node.isInFrustum(this._cullPlanes, this._numCullPlanes);\n\n\t\tnode._iCollectionMark = this.scene._iCollectionMark;\n\n\t\treturn enter;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyDirectionalLight(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyEntity(entity:IEntity)\n\t{\n\t\tthis._pNumEntities++;\n\n\t\tif (entity._iIsMouseEnabled())\n\t\t\tthis._pNumInteractiveEntities++;\n\n\t\tvar item:EntityListItem = this._pEntityListItemPool.getItem();\n\t\titem.entity = entity;\n\n\t\titem.next = this._pEntityHead;\n\t\tthis._pEntityHead = item;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyLightProbe(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyPointLight(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applySkybox(entity:IEntity)\n\t{\n\t\t//don't do anything here\n\t}\n}\n\nexport = CollectorBase;","import LightBase\t\t\t\t\t= require(\"awayjs-display/lib/base/LightBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport DirectionalLight\t\t\t\t= require(\"awayjs-display/lib/entities/DirectionalLight\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\nimport LightProbe\t\t\t\t\t= require(\"awayjs-display/lib/entities/LightProbe\");\nimport PointLight\t\t\t\t\t= require(\"awayjs-display/lib/entities/PointLight\");\nimport Skybox\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Skybox\");\n\n/**\n * @class away.traverse.EntityCollector\n */\nclass EntityCollector extends CollectorBase\n{\n\tpublic _pSkybox:Skybox;\n\tpublic _pLights:Array;\n\tprivate _directionalLights:Array;\n\tprivate _pointLights:Array;\n\tprivate _lightProbes:Array;\n\n\tpublic _pNumLights:number = 0;\n\n\tprivate _numDirectionalLights:number = 0;\n\tprivate _numPointLights:number = 0;\n\tprivate _numLightProbes:number = 0;\n\n\t/**\n\t *\n\t */\n\tpublic get directionalLights():Array\n\t{\n\t\treturn this._directionalLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get lightProbes():Array\n\t{\n\t\treturn this._lightProbes;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get lights():Array\n\t{\n\t\treturn this._pLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get pointLights():Array\n\t{\n\t\treturn this._pointLights;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get skyBox():Skybox\n\t{\n\t\treturn this._pSkybox;\n\t}\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pLights = new Array();\n\t\tthis._directionalLights = new Array();\n\t\tthis._pointLights = new Array();\n\t\tthis._lightProbes = new Array();\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyDirectionalLight(entity:IEntity)\n\t{\n\t\tthis._directionalLights[ this._numDirectionalLights++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyLightProbe(entity:IEntity)\n\t{\n\t\tthis._lightProbes[ this._numLightProbes++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applyPointLight(entity:IEntity)\n\t{\n\t\tthis._pointLights[ this._numPointLights++ ] = entity;\n\t}\n\n\t/**\n\t *\n\t * @param entity\n\t */\n\tpublic applySkybox(entity:IEntity)\n\t{\n\t\tthis._pSkybox = entity;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic clear()\n\t{\n\t\tsuper.clear();\n\n\t\tthis._pSkybox = null;\n\n\t\tif (this._pNumLights > 0)\n\t\t\tthis._pLights.length = this._pNumLights = 0;\n\n\t\tif (this._numDirectionalLights > 0)\n\t\t\tthis._directionalLights.length = this._numDirectionalLights = 0;\n\n\t\tif (this._numPointLights > 0)\n\t\t\tthis._pointLights.length = this._numPointLights = 0;\n\n\t\tif (this._numLightProbes > 0)\n\t\t\tthis._lightProbes.length = this._numLightProbes = 0;\n\t}\n}\n\nexport = EntityCollector;","import Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/geom/Vector3D\");\n\nimport NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\nimport Camera\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/Camera\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-display/lib/entities/IEntity\");\n\n/**\n * The RaycastCollector class is a traverser for scene partitions that collects all scene graph entities that are\n * considered intersecting with the defined ray.\n *\n * @see away.partition.Partition\n * @see away.entities.IEntity\n *\n * @class away.traverse.RaycastCollector\n */\nclass RaycastCollector extends CollectorBase\n{\n\tprivate _rayPosition:Vector3D = new Vector3D();\n\tprivate _rayDirection:Vector3D = new Vector3D();\n\n\tpublic _iCollectionMark:number = 0;\n\n\t/**\n\t * Provides the starting position of the ray.\n\t */\n\tpublic get rayPosition():Vector3D\n\t{\n\t\treturn this._rayPosition;\n\t}\n\n\tpublic set rayPosition(value:Vector3D)\n\t{\n\t\tthis._rayPosition = value;\n\t}\n\n\t/**\n\t * Provides the direction vector of the ray.\n\t */\n\tpublic get rayDirection():Vector3D\n\t{\n\t\treturn this._rayDirection;\n\t}\n\n\tpublic set rayDirection(value:Vector3D)\n\t{\n\t\tthis._rayDirection = value;\n\t}\n\n\t/**\n\t * Creates a new RaycastCollector object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.\n\t *\n\t * @param node The Partition3DNode object to frustum-test.\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\treturn node.isIntersectingRay(this._rayPosition, this._rayDirection);\n\t}\n}\n\nexport = RaycastCollector;","import NodeBase\t\t\t\t\t\t= require(\"awayjs-display/lib/partition/NodeBase\");\nimport CollectorBase\t\t\t\t= require(\"awayjs-display/lib/traverse/CollectorBase\");\n\n/**\n * @class away.traverse.ShadowCasterCollector\n */\nclass ShadowCasterCollector extends CollectorBase\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic enterNode(node:NodeBase):boolean\n\t{\n\t\tvar enter:boolean = this.scene._iCollectionMark != node._iCollectionMark && node.isCastingShadow();\n\n\t\tif (!enter) {\n\t\t\tnode._iCollectionMark = this.scene._iCollectionMark;\n\n\t\t\treturn false;\n\t\t}\n\n\t\treturn super.enterNode(node);\n\t}\n}\n\nexport = ShadowCasterCollector;","import BitmapData\t\t\t\t= require(\"awayjs-core/lib/base/BitmapData\");\nimport ByteArray\t\t\t\t= require(\"awayjs-core/lib/utils/ByteArray\");\n\nimport CastError\t\t\t\t= require(\"awayjs-display/lib/errors/CastError\");\nimport BitmapTexture\t\t\t= require(\"awayjs-core/lib/textures/BitmapTexture\");\nimport ImageTexture\t\t\t\t= require(\"awayjs-core/lib/textures/ImageTexture\");\n\n/**\n * Helper class for casting assets to usable objects\n */\nclass Cast\n{\n\tprivate static _colorNames:Object;\n\tprivate static _hexChars:string = \"0123456789abcdefABCDEF\";\n\n\tprivate static _notClasses:Object = new Object();\n\tprivate static _classes:Object = new Object();\n\n\tpublic static string(data:any):string\n\t{\n\t\tif (typeof(data) == 'function')\n\t\t\tdata = new data;\n\n\t\tif (typeof(data) == 'string')\n\t\t\treturn data;\n\n\t\treturn data;\n\t}\n\n\tpublic static byteArray(data:any):ByteArray\n\t{\n\t\tif (typeof(data) == 'function')\n\t\t\tdata = new data;\n\n\t\tif (data instanceof ByteArray)\n\t\t\treturn data;\n\n\t\treturn data;\n\t}\n\n\t// public static xml(data:any):XML\n\t// {\n\t// if (typeof(data) == 'function')\n\t// data = new data;\n\t//\n\t// if (data is XML)\n\t// return data;\n\t//\n\t// return XML(data);\n\t// }\n\n\tprivate static isHex(str:string):boolean\n\t{\n\t\tvar length:number /*int*/ = str.length;\n\t\tfor (var i:number /*int*/ = 0; i < length; ++i) {\n\t\t\tif (this._hexChars.indexOf(str.charAt(i)) == -1)\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic static tryColor(data:any):number /*uint*/\n\t{\n\t\tif (typeof(data) == 'number' /*uint*/)\n\t\t\treturn Math.floor( data);\n\n\t\tif (typeof(data) == 'string') {\n\t\t\tif (data == \"random\")\n\t\t\t\treturn Math.floor(Math.random()*0x1000000);\n\n\t\t\tif (this._colorNames == null) {\n\t\t\t\tthis._colorNames = new Object();\n\t\t\t\tthis._colorNames[\"steelblue\"] = 0x4682B4;\n\t\t\t\tthis._colorNames[\"royalblue\"] = 0x041690;\n\t\t\t\tthis._colorNames[\"cornflowerblue\"] = 0x6495ED;\n\t\t\t\tthis._colorNames[\"lightsteelblue\"] = 0xB0C4DE;\n\t\t\t\tthis._colorNames[\"mediumslateblue\"] = 0x7B68EE;\n\t\t\t\tthis._colorNames[\"slateblue\"] = 0x6A5ACD;\n\t\t\t\tthis._colorNames[\"darkslateblue\"] = 0x483D8B;\n\t\t\t\tthis._colorNames[\"midnightblue\"] = 0x191970;\n\t\t\t\tthis._colorNames[\"navy\"] = 0x000080;\n\t\t\t\tthis._colorNames[\"darkblue\"] = 0x00008B;\n\t\t\t\tthis._colorNames[\"mediumblue\"] = 0x0000CD;\n\t\t\t\tthis._colorNames[\"blue\"] = 0x0000FF;\n\t\t\t\tthis._colorNames[\"dodgerblue\"] = 0x1E90FF;\n\t\t\t\tthis._colorNames[\"deepskyblue\"] = 0x00BFFF;\n\t\t\t\tthis._colorNames[\"lightskyblue\"] = 0x87CEFA;\n\t\t\t\tthis._colorNames[\"skyblue\"] = 0x87CEEB;\n\t\t\t\tthis._colorNames[\"lightblue\"] = 0xADD8E6;\n\t\t\t\tthis._colorNames[\"powderblue\"] = 0xB0E0E6;\n\t\t\t\tthis._colorNames[\"azure\"] = 0xF0FFFF;\n\t\t\t\tthis._colorNames[\"lightcyan\"] = 0xE0FFFF;\n\t\t\t\tthis._colorNames[\"paleturquoise\"] = 0xAFEEEE;\n\t\t\t\tthis._colorNames[\"mediumturquoise\"] = 0x48D1CC;\n\t\t\t\tthis._colorNames[\"lightseagreen\"] = 0x20B2AA;\n\t\t\t\tthis._colorNames[\"darkcyan\"] = 0x008B8B;\n\t\t\t\tthis._colorNames[\"teal\"] = 0x008080;\n\t\t\t\tthis._colorNames[\"cadetblue\"] = 0x5F9EA0;\n\t\t\t\tthis._colorNames[\"darkturquoise\"] = 0x00CED1;\n\t\t\t\tthis._colorNames[\"aqua\"] = 0x00FFFF;\n\t\t\t\tthis._colorNames[\"cyan\"] = 0x00FFFF;\n\t\t\t\tthis._colorNames[\"turquoise\"] = 0x40E0D0;\n\t\t\t\tthis._colorNames[\"aquamarine\"] = 0x7FFFD4;\n\t\t\t\tthis._colorNames[\"mediumaquamarine\"] = 0x66CDAA;\n\t\t\t\tthis._colorNames[\"darkseagreen\"] = 0x8FBC8F;\n\t\t\t\tthis._colorNames[\"mediumseagreen\"] = 0x3CB371;\n\t\t\t\tthis._colorNames[\"seagreen\"] = 0x2E8B57;\n\t\t\t\tthis._colorNames[\"darkgreen\"] = 0x006400;\n\t\t\t\tthis._colorNames[\"green\"] = 0x008000;\n\t\t\t\tthis._colorNames[\"forestgreen\"] = 0x228B22;\n\t\t\t\tthis._colorNames[\"limegreen\"] = 0x32CD32;\n\t\t\t\tthis._colorNames[\"lime\"] = 0x00FF00;\n\t\t\t\tthis._colorNames[\"chartreuse\"] = 0x7FFF00;\n\t\t\t\tthis._colorNames[\"lawngreen\"] = 0x7CFC00;\n\t\t\t\tthis._colorNames[\"greenyellow\"] = 0xADFF2F;\n\t\t\t\tthis._colorNames[\"yellowgreen\"] = 0x9ACD32;\n\t\t\t\tthis._colorNames[\"palegreen\"] = 0x98FB98;\n\t\t\t\tthis._colorNames[\"lightgreen\"] = 0x90EE90;\n\t\t\t\tthis._colorNames[\"springgreen\"] = 0x00FF7F;\n\t\t\t\tthis._colorNames[\"mediumspringgreen\"] = 0x00FA9A;\n\t\t\t\tthis._colorNames[\"darkolivegreen\"] = 0x556B2F;\n\t\t\t\tthis._colorNames[\"olivedrab\"] = 0x6B8E23;\n\t\t\t\tthis._colorNames[\"olive\"] = 0x808000;\n\t\t\t\tthis._colorNames[\"darkkhaki\"] = 0xBDB76B;\n\t\t\t\tthis._colorNames[\"darkgoldenrod\"] = 0xB8860B;\n\t\t\t\tthis._colorNames[\"goldenrod\"] = 0xDAA520;\n\t\t\t\tthis._colorNames[\"gold\"] = 0xFFD700;\n\t\t\t\tthis._colorNames[\"yellow\"] = 0xFFFF00;\n\t\t\t\tthis._colorNames[\"khaki\"] = 0xF0E68C;\n\t\t\t\tthis._colorNames[\"palegoldenrod\"] = 0xEEE8AA;\n\t\t\t\tthis._colorNames[\"blanchedalmond\"] = 0xFFEBCD;\n\t\t\t\tthis._colorNames[\"moccasin\"] = 0xFFE4B5;\n\t\t\t\tthis._colorNames[\"wheat\"] = 0xF5DEB3;\n\t\t\t\tthis._colorNames[\"navajowhite\"] = 0xFFDEAD;\n\t\t\t\tthis._colorNames[\"burlywood\"] = 0xDEB887;\n\t\t\t\tthis._colorNames[\"tan\"] = 0xD2B48C;\n\t\t\t\tthis._colorNames[\"rosybrown\"] = 0xBC8F8F;\n\t\t\t\tthis._colorNames[\"sienna\"] = 0xA0522D;\n\t\t\t\tthis._colorNames[\"saddlebrown\"] = 0x8B4513;\n\t\t\t\tthis._colorNames[\"chocolate\"] = 0xD2691E;\n\t\t\t\tthis._colorNames[\"peru\"] = 0xCD853F;\n\t\t\t\tthis._colorNames[\"sandybrown\"] = 0xF4A460;\n\t\t\t\tthis._colorNames[\"darkred\"] = 0x8B0000;\n\t\t\t\tthis._colorNames[\"maroon\"] = 0x800000;\n\t\t\t\tthis._colorNames[\"brown\"] = 0xA52A2A;\n\t\t\t\tthis._colorNames[\"firebrick\"] = 0xB22222;\n\t\t\t\tthis._colorNames[\"indianred\"] = 0xCD5C5C;\n\t\t\t\tthis._colorNames[\"lightcoral\"] = 0xF08080;\n\t\t\t\tthis._colorNames[\"salmon\"] = 0xFA8072;\n\t\t\t\tthis._colorNames[\"darksalmon\"] = 0xE9967A;\n\t\t\t\tthis._colorNames[\"lightsalmon\"] = 0xFFA07A;\n\t\t\t\tthis._colorNames[\"coral\"] = 0xFF7F50;\n\t\t\t\tthis._colorNames[\"tomato\"] = 0xFF6347;\n\t\t\t\tthis._colorNames[\"darkorange\"] = 0xFF8C00;\n\t\t\t\tthis._colorNames[\"orange\"] = 0xFFA500;\n\t\t\t\tthis._colorNames[\"orangered\"] = 0xFF4500;\n\t\t\t\tthis._colorNames[\"crimson\"] = 0xDC143C;\n\t\t\t\tthis._colorNames[\"red\"] = 0xFF0000;\n\t\t\t\tthis._colorNames[\"deeppink\"] = 0xFF1493;\n\t\t\t\tthis._colorNames[\"fuchsia\"] = 0xFF00FF;\n\t\t\t\tthis._colorNames[\"magenta\"] = 0xFF00FF;\n\t\t\t\tthis._colorNames[\"hotpink\"] = 0xFF69B4;\n\t\t\t\tthis._colorNames[\"lightpink\"] = 0xFFB6C1;\n\t\t\t\tthis._colorNames[\"pink\"] = 0xFFC0CB;\n\t\t\t\tthis._colorNames[\"palevioletred\"] = 0xDB7093;\n\t\t\t\tthis._colorNames[\"mediumvioletred\"] = 0xC71585;\n\t\t\t\tthis._colorNames[\"purple\"] = 0x800080;\n\t\t\t\tthis._colorNames[\"darkmagenta\"] = 0x8B008B;\n\t\t\t\tthis._colorNames[\"mediumpurple\"] = 0x9370DB;\n\t\t\t\tthis._colorNames[\"blueviolet\"] = 0x8A2BE2;\n\t\t\t\tthis._colorNames[\"indigo\"] = 0x4B0082;\n\t\t\t\tthis._colorNames[\"darkviolet\"] = 0x9400D3;\n\t\t\t\tthis._colorNames[\"darkorchid\"] = 0x9932CC;\n\t\t\t\tthis._colorNames[\"mediumorchid\"] = 0xBA55D3;\n\t\t\t\tthis._colorNames[\"orchid\"] = 0xDA70D6;\n\t\t\t\tthis._colorNames[\"violet\"] = 0xEE82EE;\n\t\t\t\tthis._colorNames[\"plum\"] = 0xDDA0DD;\n\t\t\t\tthis._colorNames[\"thistle\"] = 0xD8BFD8;\n\t\t\t\tthis._colorNames[\"lavender\"] = 0xE6E6FA;\n\t\t\t\tthis._colorNames[\"ghostwhite\"] = 0xF8F8FF;\n\t\t\t\tthis._colorNames[\"aliceblue\"] = 0xF0F8FF;\n\t\t\t\tthis._colorNames[\"mintcream\"] = 0xF5FFFA;\n\t\t\t\tthis._colorNames[\"honeydew\"] = 0xF0FFF0;\n\t\t\t\tthis._colorNames[\"lightgoldenrodyellow\"] = 0xFAFAD2;\n\t\t\t\tthis._colorNames[\"lemonchiffon\"] = 0xFFFACD;\n\t\t\t\tthis._colorNames[\"cornsilk\"] = 0xFFF8DC;\n\t\t\t\tthis._colorNames[\"lightyellow\"] = 0xFFFFE0;\n\t\t\t\tthis._colorNames[\"ivory\"] = 0xFFFFF0;\n\t\t\t\tthis._colorNames[\"floralwhite\"] = 0xFFFAF0;\n\t\t\t\tthis._colorNames[\"linen\"] = 0xFAF0E6;\n\t\t\t\tthis._colorNames[\"oldlace\"] = 0xFDF5E6;\n\t\t\t\tthis._colorNames[\"antiquewhite\"] = 0xFAEBD7;\n\t\t\t\tthis._colorNames[\"bisque\"] = 0xFFE4C4;\n\t\t\t\tthis._colorNames[\"peachpuff\"] = 0xFFDAB9;\n\t\t\t\tthis._colorNames[\"papayawhip\"] = 0xFFEFD5;\n\t\t\t\tthis._colorNames[\"beige\"] = 0xF5F5DC;\n\t\t\t\tthis._colorNames[\"seashell\"] = 0xFFF5EE;\n\t\t\t\tthis._colorNames[\"lavenderblush\"] = 0xFFF0F5;\n\t\t\t\tthis._colorNames[\"mistyrose\"] = 0xFFE4E1;\n\t\t\t\tthis._colorNames[\"snow\"] = 0xFFFAFA;\n\t\t\t\tthis._colorNames[\"white\"] = 0xFFFFFF;\n\t\t\t\tthis._colorNames[\"whitesmoke\"] = 0xF5F5F5;\n\t\t\t\tthis._colorNames[\"gainsboro\"] = 0xDCDCDC;\n\t\t\t\tthis._colorNames[\"lightgrey\"] = 0xD3D3D3;\n\t\t\t\tthis._colorNames[\"silver\"] = 0xC0C0C0;\n\t\t\t\tthis._colorNames[\"darkgrey\"] = 0xA9A9A9;\n\t\t\t\tthis._colorNames[\"grey\"] = 0x808080;\n\t\t\t\tthis._colorNames[\"lightslategrey\"] = 0x778899;\n\t\t\t\tthis._colorNames[\"slategrey\"] = 0x708090;\n\t\t\t\tthis._colorNames[\"dimgrey\"] = 0x696969;\n\t\t\t\tthis._colorNames[\"darkslategrey\"] = 0x2F4F4F;\n\t\t\t\tthis._colorNames[\"black\"] = 0x000000;\n\t\t\t\tthis._colorNames[\"transparent\"] = 0xFF000000;\n\t\t\t}\n\n\t\t\tif (this._colorNames[data] != null)\n\t\t\t\treturn this._colorNames[data];\n\n\t\t\tif ((( data).length == 6) && this.isHex(data))\n\t\t\t\treturn parseInt(\"0x\" + data);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tpublic static color(data:any):number /*uint*/\n\t{\n\t\tvar result:number /*uint*/ = this.tryColor(data);\n\n\t\tif (result == null)\n\t\t\tthrow new CastError(\"Can't cast to color: \" + data);\n\n\t\treturn result;\n\t}\n\n\tpublic static tryClass(name:string):any\n\t{\n\t\tif (this._notClasses[name])\n\t\t\treturn name;\n\n\t\tvar result:any = this._classes[name];\n\n\t\tif (result != null)\n\t\t\treturn result;\n\n\t\ttry {\n\t\t\tresult = window[name];\n\t\t\tthis._classes[name] = result;\n\t\t\treturn result;\n\t\t} catch (e /*ReferenceError*/) {\n\t\t}\n\n\t\tthis._notClasses[name] = true;\n\n\t\treturn name;\n\t}\n\n\tpublic static bitmapData(data:any):BitmapData\n\t{\n\t\tif (data == null)\n\t\t\treturn null;\n\n\t\tif (typeof(data) == 'string')\n\t\t\tdata = this.tryClass(data);\n\n\t\tif (typeof(data) == 'function') {\n\t\t\ttry {\n\t\t\t\tdata = new data();\n\t\t\t} catch (e /*ArgumentError*/) {\n\t\t\t\tdata = new data(0, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (data instanceof BitmapData)\n\t\t\treturn data;\n\n\t\tif (data instanceof ImageTexture)\n\t\t\tdata = ( data).htmlImageElement;\n\n\t\tif (data instanceof HTMLImageElement) {\n\t\t\tvar imageElement:HTMLImageElement = data;\n\t\t\tvar bitmapData:BitmapData = new BitmapData(imageElement.width, imageElement.height, true, 0x0);\n\t\t\tbitmapData.draw(imageElement)\n\t\t\treturn bitmapData;\n\t\t}\n\n\t\t// if (data is DisplayObject) {\n\t\t// var ds:DisplayObject = data as DisplayObject;\n\t\t// var bmd:BitmapData = new BitmapData(ds.width, ds.height, true, 0x00FFFFFF);\n\t\t// var mat:Matrix = ds.transform.matrix.clone();\n\t\t// mat.tx = 0;\n\t\t// mat.ty = 0;\n\t\t// bmd.draw(ds, mat, ds.transform.colorTransform, ds.blendMode, bmd.rect, true);\n\t\t// return bmd;\n\t\t// }\n\n\t\tthrow new CastError(\"Can't cast to BitmapData: \" + data);\n\t}\n\n\tpublic static bitmapTexture(data:any):BitmapTexture\n\t{\n\t\tif (data == null)\n\t\t\treturn null;\n\n\t\tif (typeof(data) == 'string')\n\t\t\tdata = this.tryClass(data);\n\n\t\tif (typeof(data) == 'function') {\n\t\t\ttry {\n\t\t\t\tdata = new data();\n\t\t\t} catch (e /*ArgumentError*/) {\n\t\t\t\tdata = new data(0, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (data instanceof BitmapTexture)\n\t\t\treturn data;\n\n\t\ttry {\n\t\t\tvar bmd:BitmapData = Cast.bitmapData(data);\n\t\t\treturn new BitmapTexture(bmd);\n\t\t} catch (e /*CastError*/) {\n\t\t}\n\n\t\tthrow new CastError(\"Can't cast to BitmapTexture: \" + data);\n\t}\n}\n\nexport = Cast;"],"sourceRoot":"./"} \ No newline at end of file