;!P      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde f g h i jklmnopqr s t u v w x y z { | } ~          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO NonePQRSTPQRSTPQRST Safe-Inferred &'(2346=JKUV W XY   UV W XY Safe-InferredAn RGBA 32-bit color. Create a  with alpha set to 255.     Safe-Inferred A keyboard key.A mouse button.d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! _~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! Safe-Inferred68:MZ[\]^_`abcdefgh Z[\]^_`abdeghZ[\]a`_^bcdefgh Safe-Inferred$ 4x4 matrix. 3x3 matrix. 2x2 matrix.Four-dimensional vector.Three-dimensional vector.Two-dimensional vector. Create a two-dimensional vector."Create a three-dimensional vector.!Create a four-dimensional vector.3D vector dot product.4D vector dot product.3D vector cross product.3D vector normalization.Create a 2x2 matrix.Create a 3x3 matrix.Create a 4x4 matrix.3x3 matrix multiplication.4x4 matrix multiplication.Transpose a 4x4 matrix.4x4 identity matrix.4x4 translation matrix.4x4 rotation matrix (X axis).4x4 rotation matrix (Y axis).4x4 rotation matrix (Z axis).4x4 rotation matrix.iRotation quaternion.4x4 scale matrix."4x4 perspective projection matrix.#4x4 orthographic projection matrix.4x4 FPS camera matrix.4x4 "look at" camera matrix.jQuaternion to 4x4 matrix.The identity 3x3 matrix.3x3 translation matrix.3x3 rotation matrix.3x3 scale matrix.3klAxis.AngleiFarNearFOV Aspect ratioFarNearLeftRightBottomTopEyePitchYawjmnopqrs((-klijmnopqrs Safe-Inferred367=K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefNone!"(+68gTypes that can be added.tFloats or vectors.hTypes that can be multiplied.iA type in the GPU.oA GPU 4x4 matrix.qA GPU 3x3 matrix.sA GPU 2x2 matrix.uA GPU 4D vector.wA GPU 3D vector.y@A GPU 2D vector. NB: This is a different type from FWGL.Vector. .{!The type of a generic expression.}"A GPU sampler (sampler2D in GLSL). A GPU float.uA GPU boolean./Expressions that are transformed to statements.An expression.v CPU integer.w CPU equality.xCPU and.UAvoid executing this expression more than one time. Conditionals and loops imply it. Rebounded if.=The position of the vertex (only works in the vertex shader).>The color of the fragment (only works in the fragment shader).gthyzijklmnopqrstuvwxyz{|}~u{vwx|WMaximum number of iterations (should be as low as possible, must be an integer literal) Initial value&Iteration -> Old value -> (Next, Stop)}~jghijklmnopqrstuvwxyz{|}~jijklmn{|}~yzwxuvstqrophggthyzijklmnopqrstuvwxyz{|}~u{ vwx|}~wx| None!"&(2346=HJKMA function from a (heterogeneous) set of uniforms and a set of inputs (attributes or varyings) to a set of outputs (varyings).The condition for a valid .An heterogeneous set of is and s.    None &(+3=BHJKM+The RGBA color of the fragment (1.0 = #FF).The position of the vertex.The condition for a valid .A  with only a  output.A  with a  output. None !"&(3=HJKM%The context is where an action should be put. Only for-loops are considered contexts, because there is no reason to put an action inside another block. Of course, an action could have many contexts (e.g. for(..) { for (..) { act; } }), but only one is actually needed to compile the action.7All the contexts (including those of the dependencies).3The contexts of the expressions used in the action.Compile a list of , sharing their actions.,Build an action graph with shallow contexts.Transform every context.Find and build the deep context of this action. Returns a deep context and a new graph with the deep contexts of this action and of its dependencies. Compile an L. Returns the compiled expression, the map of dependencies and the context.& NoneB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd:      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd None68=Ke3CPU types convertible to GPU types (as attributes).h1CPU types convertible to GPU types (as uniforms).efghiefghihiefgefghiNone3=HKMj4x4 matrices in the CPU.k3x3 matrices in the CPU.l2x2 matrices in the CPU.m4D vectors in the CPU.n3D vectors in the CPU.o2D vectors in the CPU.pSamplers in the CPU.qFloats in the CPU.jklmnopqgiopqrstuvwxyz}ehjklmnopqgihe}yzwxuvstqropqponmlkjjklmnopq None!"%(+BvIAn uniform that represents the view matrix used in the default 2D shader.xTAn uniform that represents the transformation matrix used in the default 2D shader.zCAn uniform that represents the depth used in the default 2D shader.|EAn uniform that represents the texture used in the default 2D shader.rstuvwxyz{|}~rstuvwxyz{|}~~|}z{xyvwturs rstuvwxyz{|}~None!"%(+B None!"(6=JKA 2D geometry.A 3D geometry. A set of attributes and indices. Create a 3D 4. The first three lists should have the same length. Create a 2D 2. The first two lists should have the same length.Create a custom .List of vertices.List of UV coordinates.List of normals.FTriangles expressed as triples of indices to the three lists above.List of vertices.List of UV coordinates.DTriangles expressed as triples of indices to the two lists above.None!"&(23468:=HIJKM.The attributes used in the default 2D program.,The uniforms used in the default 2D program..The attributes used in the default 3D program.,The uniforms used in the default 3D program.=A vertex shader associated with a compatible fragment shader. Create a  from the shaders.  None !"(:=BJKMQAn object associated with a program. It can also be a layer included in another.An object is a set of geometries associated with some uniforms. For example, if you want to draw a rotating cube, its vertices, normals, etc. would be the R, the combination of the geometry and the value of the model matrix would be the ,, and the combination of the object with a  would be the  . In fact, es are just descriptions of the actions to perform to draw something. Instead, the Element types in FWGL.Graphics.D2 and FWGL.Graphics.D3T represent managed (high level) objects, and they are ultimately converted to them. A texture.8A monad that represents OpenGL actions with some state ().The state of the  monad.&$$  NoneNoneThe general input.The data carried by an event. An event.Keyboard release.Keyboard press.Keyboard down. Mouse press.Mouse release. Mouse down. Left click.Pointer location in pixels.Window framebuffercanvas/etc. resize.Window framebuffer canvas size. Custom input.# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None67=K!None      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefNone   None6 Creates a  from a list of pixels. Creates a  from an URL or a local file. The same as .Width.Height.List of pixelsURLNone!"(2346 Create a . Execute a  action. Viewport.Clear the buffers. Draw a . Get the dimensions of a . Set the program.Viewport widthViewport heightAction.State.Width.Height.                              None&(3=JK An empty custom object.!A custom object with a specified ..Sets a global variable (uniform) of an object.-Sets a global (uniform) of an object using a .?Sets a global (uniform) of an object using the dimensions of a ./Sets a global (uniform) of an object using the  monad.Join two objects.@Join two objects, even if they don't provide the same variables.#Associate an object with a program.Generate a 1x1 texture.Use a  as a  on another.Use the depth  as a  on another. Texture width.Texture height.Layer to draw on a .Layer to draw on the screen.Texture width.Texture height.Layer to draw on a .Layer to draw on the screen.C NoneTGenerate a view matrix that transforms the pixel coordinates in OpenGL coordinates.NGenerate a perspective view matrix using the aspect ratio of the framebuffer.(Combine a perspective and a view matrix.FarNearFOVFarNearFOVNone&(3=JKA 2D object with a , a depth and a transformation.A rectangle with a specified  and size.An element with a specified  and . 9A rectangle with the aspect ratio adapted to its texture.!Set the depth of an element."WA rectangle with the size and aspect ratio adapted to the screen. You have to use the " view matrix.#Create a graphical  from a list of s and a view matrix.$Create a graphical  from a single W. This lets you set your own globals individually. If the shader uses the view matrix v8 (e.g. the default 2D shader), you have to set it with '.%Create a standard  from a list of s.& Create a " from a view matrix and a list of s.')Set the value of the view matrix of a 2D .( Create a  from a 2D , using the default shader.) Create a  from a 2D , using a custom shader.* Translate an .+ Rotate an ., Scale an .- Scale an  in two dimensions.. Transform an . Width.!"#$%&'()*+,-.?vxz| !"#$%&'()*+,-.5 !"*+,-.%&()#$'|zxv !"#$%&'()*+,-.None&(3=JK/A 3D object with a  and a transformation.0A cube with a specified .1An element with a specified  and .2Create a graphical  from a list of /s and a view matrix.3Create a graphical  from a single /W. This lets you set your own globals individually. If the shader uses the view matrix 8 (e.g. the default 3D shader), you have to set it with 8.4Like 31, but it will only set the transformation matrix.50Like 'object1, but it will only set the texture.6Create a standard  from a list of /s.7 Create a " from a view matrix and a list of /s.8)Set the value of the view matrix of a 3D .9 Create a  from a 3D , using the default shader.: Create a  from a 3D , using a custom shader.; Translate an /.< Rotate an / around the X axis.= Rotate an / around the X axis.> Rotate an / around the X axis.? Rotate an / around an axis and an angle.@ Scale an /.A Scale an / in three dimensions.B Transform an /./0123456789:;<=>?@ABG/0123456789:;<=>?@AB=/01;<=>?@AB679:23458/0123456789:;<=>?@AB Safe-InferredC!It doesn't do anything (for now).CDCDCDCDNone68 EThe general output.F Compose two E effects.GDraw some layers.HPerform an IO action.I Delete a  from the GPU.J Delete a  from the GPU.K Delete a  from the GPU.LRun a FWGL program.M(Run a FWGL program, using custom inputs.N-Load a model from an OBJ file asynchronously.OLoad a model from an OBJ file. EFGHIJKL Main signalM*An IO effect generating the custom inputs.NO6 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGHIJKLMNO GLMONEFHIJK EFGHIJKLMNO#$%#$&#'(#)*#'+#',#'-#'./0123456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq r s t u vwxyz{|}~                "          !"#$%&'()*+,-./0123456789::;<=>?@ABCDEFGHIJKLMNOPQLRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                     ############################      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^^_^^`^a^b^c^d^e^fghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg{g|g}g~gg#### fwgl-0.1.2.2 FWGL.ShaderFWGL.Internal.GLFWGL.Internal.TListFWGL.Graphics.ColorFWGL.Key FWGL.VectorFWGL.Backend.GLESFWGL.Shader.LanguageFWGL.Shader.ShaderFWGL.Shader.StagesFWGL.Shader.GLSLFWGL.Shader.CPUFWGL.Shader.Default2DFWGL.Shader.Default3D FWGL.GeometryFWGL.Shader.ProgramFWGL.Graphics.TypesFWGL.Graphics.Shapes FWGL.InputFWGL.Backend.IOFWGL.Geometry.OBJFWGL.Graphics.TextureFWGL.Graphics.DrawFWGL.Graphics.Custom FWGL.UtilsFWGL.Graphics.D2FWGL.Graphics.D3 FWGL.AudioFWGLFWGL.Internal.STVectorLenFWGL.Internal.ResourceV2 FWGL.Backend screenScalebase Data.TuplefstsndGHC.Base$Data.Typeable.InternalTypeableidflip.consttransformers-0.3.0.0Control.Monad.IO.ClassliftIOUnionReverseInsertAppend DifferenceRemoveSubsetIsSubsetIsMemberMemberEqualColorvisiblewhiteblack transparentredgreenblueyellow$fStorableColor$fHashableColorKey KeyUnknownKeyPad9KeyPad8KeyPad7KeyPad6KeyPad5KeyPad4KeyPad3KeyPad2KeyPad1KeyPad0 KeyPadDot KeyPadEnter KeyPadDiv KeyPadMul KeyPadSub KeyPadAdd KeyPadPgUpKeyPadUp KeyPadHome KeyPadRight KeyPadLeft KeyPadPgDown KeyPadDown KeyPadEnd KeyPadIns KeyPadDelKeyF12KeyF11KeyF10KeyF9KeyF8KeyF7KeyF6KeyF5KeyF4KeyF3KeyF2KeyF1 KeyPgDownKeyPgUpKeyEndKeyHomeKeyDelKeyIns KeyArrowDown KeyArrowRight KeyArrowUp KeyArrowLeft KeyNumLock KeyCapsLockKeyAlt KeyControlKeyShift KeyBackspaceKeyEscKeyTabKeyEnterKeySpaceKey9Key8Key7Key6Key5Key4Key3Key2Key1Key0KeyZKeyYKeyXKeyWKeyVKeyUKeyTKeySKeyRKeyQKeyPKeyOKeyNKeyMKeyLKeyKKeyJKeyIKeyHKeyGKeyFKeyEKeyDKeyCKeyBKeyA MouseButton MouseRight MouseMiddle MouseLeftM4M3M2V4V3vec2vec3vec4dot3dot4cross3 normalize3mat2mat3mat4mul3mul4 transpose4idMat4 transMat4rotXMat4rotYMat4rotZMat4 rotAAMat4 scaleMat4perspectiveMat4 orthoMat4 cameraMat4 lookAtMat4idMat3 transMat3rotMat3 scaleMat3GLESCtxGLEnumGLUIntGLIntGLPtr GLPtrDiffGLSizeGLStringGLBoolBufferUniformLocationTextureShaderProgram FrameBuffer RenderBufferArray Float32Array Int32ArrayImagetruefalse nullGLPtr toGLStringnoBuffer noTexturenoArrayencodeM2encodeM3encodeM4 encodeFloats encodeV2s encodeV3s encodeV4s encodeUShorts encodeColorsglActiveTextureglAttachShaderglBindAttribLocation glBindBufferglBindFramebufferglBindRenderbuffer glBindTexture glBlendColorglBlendEquationglBlendEquationSeparate glBlendFuncglBlendFuncSeparate glBufferDataglBufferSubDataglCheckFramebufferStatusglClear glClearColor glClearDepthglClearStencil glColorMaskglCompileShaderglCompressedTexImage2DglCompressedTexSubImage2DglCopyTexImage2DglCopyTexSubImage2DglCreateBufferglCreateFramebufferglCreateProgramglCreateRenderbufferglCreateShaderglCreateTexture glCullFaceglDeleteBufferglDeleteFramebufferglDeleteProgramglDeleteRenderbufferglDeleteShaderglDeleteTexture glDepthFunc glDepthMask glDepthRangeglDetachShader glDisableglDisableVertexAttribArray glDrawArraysglDrawElementsglEnableglEnableVertexAttribArrayglFinishglFlushglFramebufferRenderbufferglFramebufferTexture2D glFrontFaceglGenerateMipmapglGetAttribLocation glGetErrorglGetProgramInfoLogglGetShaderInfoLogglGetShaderSourceglGetUniformLocationglHint glIsBuffer glIsEnabledglIsFramebuffer glIsProgramglIsRenderbuffer glIsShader glIsTexture glLineWidth glLinkProgram glPixelStoreiglPolygonOffset glReadPixelsglRenderbufferStorageglSampleCoverage glScissorglShaderSource glStencilFuncglStencilFuncSeparate glStencilMaskglStencilMaskSeparate glStencilOpglStencilOpSeparateglTexImage2DBufferglTexImage2DImageglTexParameterfglTexParameteriglTexSubImage2D glUniform1f glUniform1fv glUniform1i glUniform1iv glUniform2f glUniform2fv glUniform2i glUniform2iv glUniform3f glUniform3fv glUniform3i glUniform3iv glUniform4f glUniform4fv glUniform4i glUniform4ivglUniformMatrix2fvglUniformMatrix3fvglUniformMatrix4fv glUseProgramglValidateProgramglVertexAttrib1fglVertexAttrib1fvglVertexAttrib2fglVertexAttrib2fvglVertexAttrib3fglVertexAttrib3fvglVertexAttrib4fglVertexAttrib4fvglVertexAttribPointer glViewportgl_DEPTH_BUFFER_BITgl_STENCIL_BUFFER_BITgl_COLOR_BUFFER_BIT gl_POINTSgl_LINES gl_LINE_LOOP gl_LINE_STRIP gl_TRIANGLESgl_TRIANGLE_STRIPgl_TRIANGLE_FANgl_ZEROgl_ONE gl_SRC_COLORgl_ONE_MINUS_SRC_COLOR gl_SRC_ALPHAgl_ONE_MINUS_SRC_ALPHA gl_DST_ALPHAgl_ONE_MINUS_DST_ALPHA gl_DST_COLORgl_ONE_MINUS_DST_COLORgl_SRC_ALPHA_SATURATE gl_FUNC_ADDgl_BLEND_EQUATIONgl_BLEND_EQUATION_RGBgl_BLEND_EQUATION_ALPHAgl_FUNC_SUBTRACTgl_FUNC_REVERSE_SUBTRACTgl_BLEND_DST_RGBgl_BLEND_SRC_RGBgl_BLEND_DST_ALPHAgl_BLEND_SRC_ALPHAgl_CONSTANT_COLORgl_ONE_MINUS_CONSTANT_COLORgl_CONSTANT_ALPHAgl_ONE_MINUS_CONSTANT_ALPHAgl_BLEND_COLORgl_ARRAY_BUFFERgl_ELEMENT_ARRAY_BUFFERgl_ARRAY_BUFFER_BINDINGgl_ELEMENT_ARRAY_BUFFER_BINDINGgl_STREAM_DRAWgl_STATIC_DRAWgl_DYNAMIC_DRAWgl_BUFFER_SIZEgl_BUFFER_USAGEgl_CURRENT_VERTEX_ATTRIBgl_FRONTgl_BACKgl_FRONT_AND_BACK gl_CULL_FACEgl_BLEND gl_DITHERgl_STENCIL_TEST gl_DEPTH_TESTgl_SCISSOR_TESTgl_POLYGON_OFFSET_FILLgl_SAMPLE_ALPHA_TO_COVERAGEgl_SAMPLE_COVERAGE gl_NO_ERRORgl_INVALID_ENUMgl_INVALID_VALUEgl_INVALID_OPERATIONgl_OUT_OF_MEMORYgl_CWgl_CCW gl_LINE_WIDTHgl_ALIASED_POINT_SIZE_RANGEgl_ALIASED_LINE_WIDTH_RANGEgl_CULL_FACE_MODE gl_FRONT_FACEgl_DEPTH_RANGEgl_DEPTH_WRITEMASKgl_DEPTH_CLEAR_VALUE gl_DEPTH_FUNCgl_STENCIL_CLEAR_VALUEgl_STENCIL_FUNCgl_STENCIL_FAILgl_STENCIL_PASS_DEPTH_FAILgl_STENCIL_PASS_DEPTH_PASSgl_STENCIL_REFgl_STENCIL_VALUE_MASKgl_STENCIL_WRITEMASKgl_STENCIL_BACK_FUNCgl_STENCIL_BACK_FAILgl_STENCIL_BACK_PASS_DEPTH_FAILgl_STENCIL_BACK_PASS_DEPTH_PASSgl_STENCIL_BACK_REFgl_STENCIL_BACK_VALUE_MASKgl_STENCIL_BACK_WRITEMASK gl_VIEWPORTgl_SCISSOR_BOXgl_COLOR_CLEAR_VALUEgl_COLOR_WRITEMASKgl_UNPACK_ALIGNMENTgl_PACK_ALIGNMENTgl_MAX_TEXTURE_SIZEgl_MAX_VIEWPORT_DIMSgl_SUBPIXEL_BITS gl_RED_BITS gl_GREEN_BITS gl_BLUE_BITS gl_ALPHA_BITS gl_DEPTH_BITSgl_STENCIL_BITSgl_POLYGON_OFFSET_UNITSgl_POLYGON_OFFSET_FACTORgl_TEXTURE_BINDING_2Dgl_SAMPLE_BUFFERS gl_SAMPLESgl_SAMPLE_COVERAGE_VALUEgl_SAMPLE_COVERAGE_INVERTgl_COMPRESSED_TEXTURE_FORMATS gl_DONT_CARE gl_FASTEST gl_NICESTgl_GENERATE_MIPMAP_HINTgl_BYTEgl_UNSIGNED_BYTEgl_SHORTgl_UNSIGNED_SHORTgl_INTgl_UNSIGNED_INTgl_FLOATgl_DEPTH_COMPONENTgl_ALPHAgl_RGBgl_RGBA gl_LUMINANCEgl_LUMINANCE_ALPHAgl_UNSIGNED_SHORT_4_4_4_4gl_UNSIGNED_SHORT_5_5_5_1gl_UNSIGNED_SHORT_5_6_5gl_FRAGMENT_SHADERgl_VERTEX_SHADERgl_MAX_VERTEX_ATTRIBSgl_MAX_VERTEX_UNIFORM_VECTORSgl_MAX_VARYING_VECTORS#gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS!gl_MAX_VERTEX_TEXTURE_IMAGE_UNITSgl_MAX_TEXTURE_IMAGE_UNITSgl_MAX_FRAGMENT_UNIFORM_VECTORSgl_SHADER_TYPEgl_DELETE_STATUSgl_LINK_STATUSgl_VALIDATE_STATUSgl_ATTACHED_SHADERSgl_ACTIVE_UNIFORMSgl_ACTIVE_ATTRIBUTESgl_SHADING_LANGUAGE_VERSIONgl_CURRENT_PROGRAMgl_NEVERgl_LESSgl_EQUAL gl_LEQUAL gl_GREATER gl_NOTEQUAL gl_GEQUAL gl_ALWAYSgl_KEEP gl_REPLACEgl_INCRgl_DECR gl_INVERT gl_INCR_WRAP gl_DECR_WRAP gl_VENDOR gl_RENDERER gl_VERSION gl_NEAREST gl_LINEARgl_NEAREST_MIPMAP_NEARESTgl_LINEAR_MIPMAP_NEARESTgl_NEAREST_MIPMAP_LINEARgl_LINEAR_MIPMAP_LINEARgl_TEXTURE_MAG_FILTERgl_TEXTURE_MIN_FILTERgl_TEXTURE_WRAP_Sgl_TEXTURE_WRAP_T gl_TEXTURE_2D gl_TEXTUREgl_TEXTURE_CUBE_MAPgl_TEXTURE_BINDING_CUBE_MAPgl_TEXTURE_CUBE_MAP_POSITIVE_Xgl_TEXTURE_CUBE_MAP_NEGATIVE_Xgl_TEXTURE_CUBE_MAP_POSITIVE_Ygl_TEXTURE_CUBE_MAP_NEGATIVE_Ygl_TEXTURE_CUBE_MAP_POSITIVE_Zgl_TEXTURE_CUBE_MAP_NEGATIVE_Zgl_MAX_CUBE_MAP_TEXTURE_SIZE gl_TEXTURE0 gl_TEXTURE1 gl_TEXTURE2 gl_TEXTURE3 gl_TEXTURE4 gl_TEXTURE5 gl_TEXTURE6 gl_TEXTURE7 gl_TEXTURE8 gl_TEXTURE9 gl_TEXTURE10 gl_TEXTURE11 gl_TEXTURE12 gl_TEXTURE13 gl_TEXTURE14 gl_TEXTURE15 gl_TEXTURE16 gl_TEXTURE17 gl_TEXTURE18 gl_TEXTURE19 gl_TEXTURE20 gl_TEXTURE21 gl_TEXTURE22 gl_TEXTURE23 gl_TEXTURE24 gl_TEXTURE25 gl_TEXTURE26 gl_TEXTURE27 gl_TEXTURE28 gl_TEXTURE29 gl_TEXTURE30 gl_TEXTURE31gl_ACTIVE_TEXTURE gl_REPEATgl_CLAMP_TO_EDGEgl_MIRRORED_REPEAT gl_FLOAT_VEC2 gl_FLOAT_VEC3 gl_FLOAT_VEC4 gl_INT_VEC2 gl_INT_VEC3 gl_INT_VEC4gl_BOOL gl_BOOL_VEC2 gl_BOOL_VEC3 gl_BOOL_VEC4 gl_FLOAT_MAT2 gl_FLOAT_MAT3 gl_FLOAT_MAT4 gl_SAMPLER_2Dgl_SAMPLER_CUBEgl_VERTEX_ATTRIB_ARRAY_ENABLEDgl_VERTEX_ATTRIB_ARRAY_SIZEgl_VERTEX_ATTRIB_ARRAY_STRIDEgl_VERTEX_ATTRIB_ARRAY_TYPE!gl_VERTEX_ATTRIB_ARRAY_NORMALIZEDgl_VERTEX_ATTRIB_ARRAY_POINTER%gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDINGgl_COMPILE_STATUS gl_LOW_FLOATgl_MEDIUM_FLOAT gl_HIGH_FLOAT gl_LOW_INT gl_MEDIUM_INT gl_HIGH_INTgl_FRAMEBUFFERgl_RENDERBUFFERgl_RGBA4 gl_RGB5_A1 gl_RGB565gl_DEPTH_COMPONENT16gl_STENCIL_INDEX8gl_RENDERBUFFER_WIDTHgl_RENDERBUFFER_HEIGHTgl_RENDERBUFFER_INTERNAL_FORMATgl_RENDERBUFFER_RED_SIZEgl_RENDERBUFFER_GREEN_SIZEgl_RENDERBUFFER_BLUE_SIZEgl_RENDERBUFFER_ALPHA_SIZEgl_RENDERBUFFER_DEPTH_SIZEgl_RENDERBUFFER_STENCIL_SIZE%gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE%gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME'gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL/gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACEgl_COLOR_ATTACHMENT0gl_DEPTH_ATTACHMENTgl_STENCIL_ATTACHMENTgl_NONEgl_FRAMEBUFFER_COMPLETE$gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT$gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONSgl_FRAMEBUFFER_UNSUPPORTEDgl_FRAMEBUFFER_BINDINGgl_RENDERBUFFER_BINDINGgl_MAX_RENDERBUFFER_SIZE gl_INVALID_FRAMEBUFFER_OPERATIONSumMul ShaderTypezerotoExprfromExprtypeNamesizeUnknown Sampler2DFloatContextVarType LoopValue LoopIterationActionForIfStoreExpr ContextVarDummyLiteralWZYXApplyOp2Op1ReadEmpty*/+-^&&||==>=<=<>negate fromInteger fromRationalradiansdegreessincostanasinacosatanatan2explogexp2log2sqrt inversesqrtabssignfloorceilfractmodminmaxclampmixstep smoothsteplengthdistancedotcross normalize faceforwardreflectrefractmatrixCompMultstore ifThenElseloop texture2Dposition fragColor AllTypeable staticSTList staticListValidSTList:-NstFoldFragmentShaderOutputFragmentVertexShaderOutputVertex ValidVertexFragmentShader VertexShadervertexToGLSLAttr vertexToGLSLfragmentToGLSL shaderToGLSL globalName attributeName ActiveTextureGLevalGLforkGLasyncGLgetCtx activeTexture attachShaderbindAttribLocation bindBufferbindFramebufferbindRenderbuffer bindTexture blendColor blendEquationblendEquationSeparate blendFuncblendFuncSeparate bufferData bufferSubDatacheckFramebufferStatusclear clearColor clearDepth clearStencil colorMask compileShadercompressedTexImage2DcompressedTexSubImage2DcopyTexImage2DcopyTexSubImage2D createBuffercreateFramebuffer createProgramcreateRenderbuffer createShader createTexturecullFace deleteBufferdeleteFramebuffer deleteProgramdeleteRenderbuffer deleteShader deleteTexture depthFunc depthMask depthRange detachShaderdisabledisableVertexAttribArray drawArrays drawElementsenableenableVertexAttribArrayfinishflushframebufferRenderbufferframebufferTexture2D frontFacegenerateMipmapgetAttribLocationgetErrorgetProgramInfoLoggetShaderInfoLoggetShaderSourcegetUniformLocationhintisBuffer isEnabled isFramebuffer isProgramisRenderbufferisShader isTexture lineWidth linkProgram pixelStorei polygonOffset readPixelsrenderbufferStoragesampleCoveragescissor shaderSource stencilFuncstencilFuncSeparate stencilMaskstencilMaskSeparate stencilOpstencilOpSeparatetexImage2DBuffertexImage2DImage texParameterf texParameteri texSubImage2D uniform1f uniform1fv uniform1i uniform1iv uniform2f uniform2fv uniform2i uniform2iv uniform3f uniform3fv uniform3i uniform3iv uniform4f uniform4fv uniform4i uniform4ivuniformMatrix2fvuniformMatrix3fvuniformMatrix4fv useProgramvalidateProgramvertexAttrib1fvertexAttrib1fvvertexAttrib2fvertexAttrib2fvvertexAttrib3fvertexAttrib3fvvertexAttrib4fvertexAttrib4fvvertexAttribPointerviewport AttributeCPUencodeAttribute setAttribute UniformCPU setUniformCM4CM3CM2CV4CV3CV2 CSampler2DCFloatUV Position2View2 Transform2Depth AttributesUniforms vertexShaderfragmentShaderNormal3 Position3View3 Transform3Texture2 Geometry2 Geometry3 GPUGeometryattributeBuffers elementBuffer elementCountGeometryAttrList AttrListCons AttrListNil mkGeometry3 mkGeometry2 mkGeometry castGeometryarraysToElements facesToArrays triangulateDefaultAttributes2DDefaultUniforms2DDefaultAttributes3DDefaultUniforms3D LoadedProgram castProgramprogramdefaultProgram3DdefaultProgram2D loadProgram SubLayerType DepthSubLayer ColorSubLayerLayerSubLayerObject ObjectAppend ObjectGlobal ObjectMesh ObjectEmpty LoadedTexture TextureImage TextureURL TexturePixels TextureLoadedDrawunDraw DrawState loadedProgramprogramsuniforms gpuMeshes textureImagesactiveTextures viewportSize rectGeometry cubeGeometryInput inputEvents inputCustom EventDatadataFramebufferSize dataPointer dataButtondataKey InputEventResize MouseMove MouseDownMouseUpKeyDownKeyUpkeyUpkeyDownkey mouseDownmouseUpmouseclickpointerresizecustom BackendIO loadImage loadTextFilesetupOBJModel objVertices objUVCoords objNormalsobjFacesparseOBJ attributesOBJ geometryOBJ mkTexture textureURL textureFile emptyTexturedrawInitexecDraw drawBegindrawEndremoveGeometry removeTexture removeProgram drawLayertextureUniform textureSize setProgramnothinggeomglobal globalTexture globalTexSize globalDraw~~ unsafeJoinlayercolorTexsubLayer depthSubLayer perspective4perspectiveViewElementrectimagedepthspriteobjectobject1elementsview viewObjectlayerPrgposrotscalescaleV transformcube object1Trans object1TexrotXrotYrotZrotAAAudioOutput.>drawio freeGeometry freeTexture freeProgramrunrun' loadOBJAsyncloadOBJ STVectorLennew!consfreezeAndTypeEqReverse' NotMember $fSubsetxsysResource loadResourceunloadResource ResStatusErrorLoadingUnloadedLoadedResMap newResMap addResource checkResource getResourceremoveResource rotAAQuat quatToMat4 mat4from3 mat3from2 zipWithM_ $fStorableV4 $fStorableV3 $fStorableV2 $fHashableV4 $fHashableV3 $fHashableV2GenTypeBoolCInt=!&&!MatrixVector/=hash2 $fEqAction$fHashableAction$fHashableExpr$fSumM4$fSumM3$fSumM2$fSumV4$fSumV3$fSumV2 $fSumFloat $fGenTypeV4 $fGenTypeV3 $fGenTypeV2$fGenTypeFloat $fMulV4M4V4 $fMulV3M3V3 $fMulV2M2V2 $fMulM4V4V4 $fMulM3V3V3 $fMulM2V2V2$fMulFloatM4M4$fMulFloatM3M3$fMulFloatM2M2$fMulM4FloatM4$fMulM3FloatM3$fMulM2FloatM2 $fMulM4M4M4 $fMulM3M3M3 $fMulM2M2M2$fMulFloatV4V4$fMulFloatV3V3$fMulFloatV2V2$fMulV4FloatV4$fMulV3FloatV3$fMulV2FloatV2 $fMulV4V4V4 $fMulV3V3V3 $fMulV2V2V2$fMulFloatFloatFloat $fMatrixM4 $fMatrixM3 $fMatrixM2 $fVectorV4 $fVectorV3 $fVectorV2$fShaderTypeM4$fShaderTypeM3$fShaderTypeM2$fShaderTypeV4$fShaderTypeV3$fShaderTypeV2$fShaderTypeSampler2D$fShaderTypeFloat$fShaderTypeBool$fShaderTypeUnknown StaticSTList StaticList$fAllTypeable:$fAllTypeable[]$fStaticSTList:$fStaticSTList[] $fStaticList:$fStaticList[] ActionContext DeepContextShallowContextcompilebuildActionGraph contextAlldeep compileExpr ActionGraphActionGenerator ActionInfoactionGenerator actionDeps actionContext ActionSet ActionMapActionID ShaderVarsvarsgenerate sortActionsfirst3 compileAction actionNamecontextVarNamehashNameglobalTypeAndNamevaryingTypeAndNameattributeTypeAndName variableName varyingNameattr$fUniformCPUM4M4$fUniformCPUM3M3$fUniformCPUM2M2$fAttributeCPUV4V4$fUniformCPUV4V4$fAttributeCPUV3V3$fUniformCPUV3V3$fAttributeCPUV2V2$fUniformCPUV2V2"$fUniformCPUActiveTextureSampler2D$fAttributeCPUFloatFloat$fUniformCPUFloatFloat loadGeometry loadAttrListdeleteGPUGeometry loadBuffer$fResourceGeometryGPUGeometryGL $fEqGeometry$fHashableGeometry$fHashableAttrList loadSource $fResourceProgramLoadedProgramGL$fEqLoadedProgram$fHashableLoadedProgram $fEqProgram$fHashableProgram textureHash$fEqLoadedTexture$fEqTextureImage$fHashableTextureImageupDownisKeyevSearchevEdge evPointer eventHead$fHashableInputEventloadTextureImage%$fResourceTextureImageLoadedTextureGL drawObjectuniformwithRes_withRes getUniformgetGPUGeometry getTexturegetTextureImage getProgramfreeActiveTextures makeActive renderTexturegetDrawResourceremoveDrawResourcedrawGPUGeometrygl$fResource(,)UniformLocationGL drawOutput Control.Arrowarrfirstapp|||Control.Category<<<>>> ArrowLoop ArrowMonad ArrowApply ArrowChoiceleftright+++ ArrowPlus<+> ArrowZero zeroArrowKleisli runKleisliArrowsecond***&&&returnAleftApp Yampa-0.9.7 FRP.Yampa deltaEncodeBy deltaEncode embedSynchembedreact reactInit reactimate occasionallynoiseRnoise loopIntegralloopPre derivative imIntegralintegralpausedelayiPrepreold_iPreold_pre accumFilterold_accumFilter dAccumHoldBy accumHoldByaccumBy old_accumBy dAccumHold accumHoldaccum old_accum trackAndHolddHoldholdold_hold drpSwitchrpSwitchdpSwitchpSwitchpar drpSwitchB rpSwitchB dpSwitchBpSwitchBparBdkSwitchkSwitchdrSwitchrSwitchdSwitchswitch dropEvents takeEventsoncenotYetedgeByedgeJustedgeTagiEdgeedge delayEventCat delayEvent afterEachCat afterEach repeatedlyafternowneversscan initially>=--=>>---->time localTimeconstantidentityarrEPrimarrPrim sscanPrimTimeDTimeSF ReactHandleFRP.Yampa.VectorSpacenorm^-^^+^ negateVector^/*^ zeroVector VectorSpaceFRP.Yampa.Eventgate mapFilterEfilterEsplitEjoinE catEvents mergeEventsmapMergemergeBymergerMergelMergeattachtagWithtag isNoEventisEvent fromEventevent noEventSnd noEventFstnoEventNoEventEventFRP.Yampa.Miscellanyswapdup# random-1.1 System.RandomRandomrandomRrandomrandomRsrandoms randomRIOrandomIO RandomGennextgenRangesplit^>>>>^<<^^<<