diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2004-10-02 16:39:09 +0000 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2004-10-02 16:39:09 +0000 |
commit | 53f82c5aadbb15585754bfacf3237093eccdb2ce (patch) | |
tree | 93c013f62d99caf8581c774f768cb7f365350095 | |
parent | 289ffee2a017308a9a97689662293613dc62d9e9 (diff) |
added support for GL_ARB_draw_buffers
60 files changed, 2153 insertions, 1817 deletions
diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index a51f6505f3..643a8c1b01 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -126,6 +126,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->ColorMaterial = NULL; driver->CullFace = NULL; driver->DrawBuffer = _swrast_DrawBuffer; + driver->DrawBuffers = _swrast_DrawBuffers; driver->FrontFace = NULL; driver->DepthFunc = NULL; driver->DepthMask = NULL; diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 0822b6b8b1..7db354d193 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -384,7 +384,7 @@ void i810XMesaSetBackClipRects( i810ContextPtr imesa ) static void i810XMesaWindowMoved( i810ContextPtr imesa ) { - switch (imesa->glCtx->Color._DrawDestMask) { + switch (imesa->glCtx->Color._DrawDestMask[0]) { case DD_FRONT_LEFT_BIT: i810XMesaSetFrontClipRects( imesa ); break; @@ -448,7 +448,7 @@ i810UpdatePageFlipping( i810ContextPtr imesa ) GLcontext *ctx = imesa->glCtx; int front = 0; - switch (ctx->Color._DrawDestMask) { + switch (ctx->Color._DrawDestMask[0]) { case DD_FRONT_LEFT_BIT: front = 1; break; diff --git a/src/mesa/drivers/dri/i810/i810ioctl.c b/src/mesa/drivers/dri/i810/i810ioctl.c index 1e49d1782e..c62e581789 100644 --- a/src/mesa/drivers/dri/i810/i810ioctl.c +++ b/src/mesa/drivers/dri/i810/i810ioctl.c @@ -225,7 +225,7 @@ void i810PageFlip( const __DRIdrawablePrivate *dPriv ) } /* i810SetDrawBuffer( imesa->glCtx, imesa->glCtx->Color.DriverDrawBuffer );*/ - i810DrawBuffer( imesa->glCtx, imesa->glCtx->Color.DrawBuffer ); + i810DrawBuffer( imesa->glCtx, imesa->glCtx->Color.DrawBuffer[0] ); imesa->upload_cliprects = GL_TRUE; imesa->lastSwap = tmp; return; diff --git a/src/mesa/drivers/dri/i810/i810state.c b/src/mesa/drivers/dri/i810/i810state.c index 4a1c15f8af..35fad6529c 100644 --- a/src/mesa/drivers/dri/i810/i810state.c +++ b/src/mesa/drivers/dri/i810/i810state.c @@ -284,7 +284,7 @@ void i810DrawBuffer(GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: front = 1; break; diff --git a/src/mesa/drivers/dri/i830/i830_context.c b/src/mesa/drivers/dri/i830/i830_context.c index d5d8e0a9d4..b69f11a0c0 100644 --- a/src/mesa/drivers/dri/i830/i830_context.c +++ b/src/mesa/drivers/dri/i830/i830_context.c @@ -468,7 +468,7 @@ void i830XMesaSetBackClipRects( i830ContextPtr imesa ) static void i830XMesaWindowMoved( i830ContextPtr imesa ) { - switch (imesa->glCtx->Color._DrawDestMask) { + switch (imesa->glCtx->Color._DrawDestMask[0]) { case DD_FRONT_LEFT_BIT: i830XMesaSetFrontClipRects( imesa ); break; diff --git a/src/mesa/drivers/dri/i830/i830_state.c b/src/mesa/drivers/dri/i830/i830_state.c index 3fe645aa8f..12cec35c3d 100644 --- a/src/mesa/drivers/dri/i830/i830_state.c +++ b/src/mesa/drivers/dri/i830/i830_state.c @@ -803,7 +803,7 @@ static void i830DrawBuffer(GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: I830_FIREVERTICES(imesa); I830_STATECHANGE(imesa, I830_UPLOAD_BUFFERS); diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c index e637d38a11..c1559e9567 100644 --- a/src/mesa/drivers/dri/i915/intel_context.c +++ b/src/mesa/drivers/dri/i915/intel_context.c @@ -491,7 +491,7 @@ void intelSetBackClipRects( intelContextPtr intel ) void intelWindowMoved( intelContextPtr intel ) { - switch (intel->ctx.Color._DrawDestMask) { + switch (intel->ctx.Color._DrawDestMask[0]) { case DD_FRONT_LEFT_BIT: intelSetFrontClipRects( intel ); break; @@ -683,5 +683,5 @@ void intelInitState( GLcontext *ctx ) ctx->Stencil.ZPassFunc[0]); - ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer ); + ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] ); } diff --git a/src/mesa/drivers/dri/i915/intel_state.c b/src/mesa/drivers/dri/i915/intel_state.c index 46633c553e..44ef775465 100644 --- a/src/mesa/drivers/dri/i915/intel_state.c +++ b/src/mesa/drivers/dri/i915/intel_state.c @@ -43,7 +43,7 @@ static void intelDrawBuffer(GLcontext *ctx, GLenum mode ) intelScreenPrivate *screen = intel->intelScreen; int front = 0; - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: front = 1; FALLBACK( intel, INTEL_FALLBACK_DRAW_BUFFER, GL_FALSE ); diff --git a/src/mesa/drivers/dri/mach64/mach64_lock.c b/src/mesa/drivers/dri/mach64/mach64_lock.c index 0b4f61abc2..ea926944ed 100644 --- a/src/mesa/drivers/dri/mach64/mach64_lock.c +++ b/src/mesa/drivers/dri/mach64/mach64_lock.c @@ -69,7 +69,7 @@ void mach64GetLock( mach64ContextPtr mmesa, GLuint flags ) if ( mmesa->lastStamp != dPriv->lastStamp ) { mmesa->lastStamp = dPriv->lastStamp; - if (mmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT) + if (mmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT) mach64SetCliprects( mmesa->glCtx, GL_BACK_LEFT ); else mach64SetCliprects( mmesa->glCtx, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/mach64/mach64_state.c b/src/mesa/drivers/dri/mach64/mach64_state.c index 99c8bad6c1..91f588bb78 100644 --- a/src/mesa/drivers/dri/mach64/mach64_state.c +++ b/src/mesa/drivers/dri/mach64/mach64_state.c @@ -729,7 +729,7 @@ static void mach64DDDrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: FALLBACK( mmesa, MACH64_FALLBACK_DRAW_BUFFER, GL_FALSE ); mach64SetCliprects( ctx, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/mga/mgastate.c b/src/mesa/drivers/dri/mga/mgastate.c index fd00de43c2..6e63294f65 100644 --- a/src/mesa/drivers/dri/mga/mgastate.c +++ b/src/mesa/drivers/dri/mga/mgastate.c @@ -822,7 +822,7 @@ static void mgaDDDrawBuffer(GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: mmesa->setup.dstorg = mmesa->mgaScreen->frontOffset; mmesa->dirty |= MGA_UPLOAD_CONTEXT; diff --git a/src/mesa/drivers/dri/r128/r128_lock.c b/src/mesa/drivers/dri/r128/r128_lock.c index 876db76575..f4b43d56c1 100644 --- a/src/mesa/drivers/dri/r128/r128_lock.c +++ b/src/mesa/drivers/dri/r128/r128_lock.c @@ -52,7 +52,7 @@ r128UpdatePageFlipping( r128ContextPtr rmesa ) rmesa->doPageFlip = rmesa->sarea->pfAllowPageFlip; - use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT); + use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT); use_back ^= (rmesa->sarea->pfCurrentPage == 1); if ( R128_DEBUG & DEBUG_VERBOSE_API ) diff --git a/src/mesa/drivers/dri/r128/r128_state.c b/src/mesa/drivers/dri/r128/r128_state.c index cd3e4181b3..4e43629f49 100644 --- a/src/mesa/drivers/dri/r128/r128_state.c +++ b/src/mesa/drivers/dri/r128/r128_state.c @@ -713,7 +713,7 @@ static void r128DDDrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: FALLBACK( rmesa, R128_FALLBACK_DRAW_BUFFER, GL_FALSE ); break; diff --git a/src/mesa/drivers/dri/r200/r200_lock.c b/src/mesa/drivers/dri/r200/r200_lock.c index 539a4be619..ef4fed5271 100644 --- a/src/mesa/drivers/dri/r200/r200_lock.c +++ b/src/mesa/drivers/dri/r200/r200_lock.c @@ -53,7 +53,7 @@ r200UpdatePageFlipping( r200ContextPtr rmesa ) int use_back; rmesa->doPageFlip = rmesa->sarea->pfState; - use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT); + use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT); use_back ^= (rmesa->sarea->pfCurrentPage == 1); if (use_back) { @@ -101,7 +101,7 @@ void r200GetLock( r200ContextPtr rmesa, GLuint flags ) if ( rmesa->lastStamp != dPriv->lastStamp ) { r200UpdatePageFlipping( rmesa ); - if (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT) + if (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT) r200SetCliprects( rmesa, GL_BACK_LEFT ); else r200SetCliprects( rmesa, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c index c6c436743f..dd547f9957 100644 --- a/src/mesa/drivers/dri/r200/r200_state.c +++ b/src/mesa/drivers/dri/r200/r200_state.c @@ -1751,7 +1751,7 @@ static void r200DrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE ); r200SetCliprects( rmesa, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/radeon/radeon_lock.c b/src/mesa/drivers/dri/radeon/radeon_lock.c index 3bcd68d3e4..937a284e10 100644 --- a/src/mesa/drivers/dri/radeon/radeon_lock.c +++ b/src/mesa/drivers/dri/radeon/radeon_lock.c @@ -56,7 +56,7 @@ radeonUpdatePageFlipping( radeonContextPtr rmesa ) rmesa->doPageFlip = rmesa->sarea->pfState; - use_back = (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT); + use_back = (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT); use_back ^= (rmesa->sarea->pfCurrentPage == 1); if ( RADEON_DEBUG & DEBUG_VERBOSE ) @@ -108,7 +108,7 @@ void radeonGetLock( radeonContextPtr rmesa, GLuint flags ) if ( rmesa->lastStamp != dPriv->lastStamp ) { radeonUpdatePageFlipping( rmesa ); - if (rmesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT) + if (rmesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT) radeonSetCliprects( rmesa, GL_BACK_LEFT ); else radeonSetCliprects( rmesa, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c b/src/mesa/drivers/dri/radeon/radeon_state.c index 3bd2a88d42..bc94882a66 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.c +++ b/src/mesa/drivers/dri/radeon/radeon_state.c @@ -1612,7 +1612,7 @@ static void radeonDrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: FALLBACK( rmesa, RADEON_FALLBACK_DRAW_BUFFER, GL_FALSE ); radeonSetCliprects( rmesa, GL_FRONT_LEFT ); diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index f1fd5eacf0..a6ef167a7d 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -598,7 +598,7 @@ static void savageXMesaWindowMoved( savageContextPtr imesa ) if (0) fprintf(stderr, "savageXMesaWindowMoved\n\n"); - switch (imesa->glCtx->Color._DrawDestMask) { + switch (imesa->glCtx->Color._DrawDestMask[0]) { case DD_FRONT_LEFT_BIT: savageXMesaSetFrontClipRects( imesa ); break; diff --git a/src/mesa/drivers/dri/savage/savagestate.c b/src/mesa/drivers/dri/savage/savagestate.c index e5c8b96eec..e03c2e340c 100644 --- a/src/mesa/drivers/dri/savage/savagestate.c +++ b/src/mesa/drivers/dri/savage/savagestate.c @@ -638,7 +638,7 @@ static void savageDDDrawBuffer(GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: imesa->IsDouble = GL_FALSE; @@ -1768,7 +1768,7 @@ void savageDDInitState( savageContextPtr imesa ) { imesa->regs.s4.zBufOffset.ni.zDepthSelect = 1; } - if (imesa->glCtx->Color._DrawDestMask == DD_BACK_LEFT_BIT) { + if (imesa->glCtx->Color._DrawDestMask[0] == DD_BACK_LEFT_BIT) { if(imesa->IsFullScreen) { imesa->toggle = TARGET_BACK; diff --git a/src/mesa/drivers/dri/sis/sis_lock.c b/src/mesa/drivers/dri/sis/sis_lock.c index 5e6a0d468d..f598e52d92 100644 --- a/src/mesa/drivers/dri/sis/sis_lock.c +++ b/src/mesa/drivers/dri/sis/sis_lock.c @@ -65,7 +65,7 @@ sisGetLock( sisContextPtr smesa, GLuint flags ) if ( smesa->lastStamp != dPriv->lastStamp ) { sisUpdateBufferSize( smesa ); sisUpdateClipping( smesa->glCtx ); - sisDDDrawBuffer( smesa->glCtx, smesa->glCtx->Color.DrawBuffer ); + sisDDDrawBuffer( smesa->glCtx, smesa->glCtx->Color.DrawBuffer[0] ); smesa->lastStamp = dPriv->lastStamp; } diff --git a/src/mesa/drivers/dri/sis/sis_state.c b/src/mesa/drivers/dri/sis/sis_state.c index 4b1d2b0017..422059b86b 100644 --- a/src/mesa/drivers/dri/sis/sis_state.c +++ b/src/mesa/drivers/dri/sis/sis_state.c @@ -510,7 +510,7 @@ void sisDDDrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: case DD_BACK_LEFT_BIT: FALLBACK( smesa, SIS_FALLBACK_DRAW_BUFFER, GL_FALSE ); diff --git a/src/mesa/drivers/dri/sis/sis_tris.c b/src/mesa/drivers/dri/sis/sis_tris.c index 04c750e550..45a92e5e92 100644 --- a/src/mesa/drivers/dri/sis/sis_tris.c +++ b/src/mesa/drivers/dri/sis/sis_tris.c @@ -805,7 +805,7 @@ static void sisRenderStart( GLcontext *ctx ) GLuint AGPParseSet = smesa->AGPParseSet; GLboolean tex_fallback = GL_FALSE; - if (ctx->Color._DrawDestMask == DD_FRONT_LEFT_BIT && + if (ctx->Color._DrawDestMask[0] == DD_FRONT_LEFT_BIT && smesa->driDrawable->numClipRects != 0) { multipass_cliprect(ctx, 0); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c index 803c8c5c1c..aaee401d7a 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_pixels.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_pixels.c @@ -255,7 +255,7 @@ tdfx_bitmap_R5G6B5(GLcontext * ctx, GLint px, GLint py, * to the front or back buffer. This compile-time test seems to do * the job for now. */ - const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) + const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) ? (fxMesa->screen_width) : (info.strideInBytes / 2); GLint row; /* compute dest address of bottom-left pixel in bitmap */ @@ -407,7 +407,7 @@ tdfx_bitmap_R8G8B8A8(GLcontext * ctx, GLint px, GLint py, GLuint *dst; GLint row; - if (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) { + if (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) { dstStride = fxMesa->screen_width; dst = (GLuint *) info.lfbPtr + (winY - py) * dstStride + (winX + @@ -508,7 +508,7 @@ tdfx_readpixels_R5G6B5(GLcontext * ctx, GLint x, GLint y, fxMesa->ReadBuffer, GR_LFBWRITEMODE_ANY, GR_ORIGIN_UPPER_LEFT, FXFALSE, &info)) { - const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer == + const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) ? (fxMesa->screen_width) : (info.strideInBytes / 2); const GLushort *src = (const GLushort *) info.lfbPtr + scrY * srcStride + scrX; @@ -567,7 +567,7 @@ tdfx_readpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, GR_LFBWRITEMODE_ANY, GR_ORIGIN_UPPER_LEFT, FXFALSE, &info)) { - const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) + const GLint srcStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) ? (fxMesa->screen_width) : (info.strideInBytes / 4); const GLuint *src = (const GLuint *) info.lfbPtr + scrY * srcStride + scrX; @@ -646,7 +646,7 @@ tdfx_drawpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, } /* look for clipmasks, giveup if region obscured */ - if (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) { + if (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) { if (!inClipRects_Region(fxMesa, scrX, scrY, width, height)) { UNLOCK_HARDWARE(fxMesa); _swrast_DrawPixels( ctx, x, y, width, height, format, type, @@ -661,7 +661,7 @@ tdfx_drawpixels_R8G8B8A8(GLcontext * ctx, GLint x, GLint y, GR_LFBWRITEMODE_8888, GR_ORIGIN_UPPER_LEFT, FXTRUE, &info)) { - const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) + const GLint dstStride = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) ? (fxMesa->screen_width * 4) : (info.strideInBytes); GLubyte *dst = (GLubyte *) info.lfbPtr + scrY * dstStride + scrX * 4; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_render.c b/src/mesa/drivers/dri/tdfx/tdfx_render.c index 1c55289469..3ce91b9257 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_render.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_render.c @@ -278,7 +278,7 @@ static void tdfxClear( GLcontext *ctx, fxMesa->Color.ClearAlpha, fxMesa->Depth.Clear); FX_grColorMaskv_NoLock(ctx, true4); - if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT) + if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT) fxMesa->Glide.grRenderBuffer(GR_BUFFER_FRONTBUFFER); if (!ctx->Depth.Test || !ctx->Depth.Mask) fxMesa->Glide.grDepthMask(FXFALSE); @@ -298,7 +298,7 @@ static void tdfxClear( GLcontext *ctx, fxMesa->Glide.grDepthMask(FXTRUE); } FX_grColorMaskv_NoLock(ctx, true4); - if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT) + if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT) fxMesa->Glide.grRenderBuffer(GR_BUFFER_FRONTBUFFER); } } diff --git a/src/mesa/drivers/dri/tdfx/tdfx_span.c b/src/mesa/drivers/dri/tdfx/tdfx_span.c index 0d2bc811e0..1bcec63413 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_span.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_span.c @@ -49,7 +49,7 @@ #define LOCAL_VARS \ __DRIdrawablePrivate *dPriv = fxMesa->driDrawable; \ tdfxScreenPrivate *fxPriv = fxMesa->fxScreen; \ - GLuint pitch = (fxMesa->glCtx->Color.DrawBuffer == GL_FRONT) \ + GLuint pitch = (fxMesa->glCtx->Color.DrawBuffer[0] == GL_FRONT) \ ? (fxMesa->screen_width * BYTESPERPIXEL) : \ (info.strideInBytes); \ GLuint height = fxMesa->height; \ diff --git a/src/mesa/drivers/dri/tdfx/tdfx_state.c b/src/mesa/drivers/dri/tdfx/tdfx_state.c index 7f1ce3c004..818a9bc23f 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_state.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_state.c @@ -1033,7 +1033,7 @@ static void tdfxDDDrawBuffer( GLcontext *ctx, GLenum mode ) /* * _DrawDestMask is easier to cope with than <mode>. */ - switch ( ctx->Color._DrawDestMask ) { + switch ( ctx->Color._DrawDestMask[0] ) { case DD_FRONT_LEFT_BIT: fxMesa->DrawBuffer = fxMesa->ReadBuffer = GR_BUFFER_FRONTBUFFER; fxMesa->new_state |= TDFX_NEW_RENDER; diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 4ebf393ac8..13648854f3 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -719,7 +719,7 @@ void viaXMesaWindowMoved(viaContextPtr vmesa) GLuint side = 0; __DRIdrawablePrivate *dPriv = vmesa->driDrawable; - switch (vmesa->glCtx->Color._DrawDestMask) { + switch (vmesa->glCtx->Color._DrawDestMask[0]) { case __GL_FRONT_BUFFER_MASK: viaXMesaSetFrontClipRects(vmesa); break; diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c index eaa5a726e5..6021efefed 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.c +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c @@ -463,7 +463,7 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv) if(vmesa->currentPage) { vmesa->currentPage = 0; - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { ctx->Driver.DrawBuffer(ctx, GL_BACK); } else { @@ -472,7 +472,7 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv) } else { vmesa->currentPage = 1; - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { ctx->Driver.DrawBuffer(ctx, GL_BACK); } else { @@ -1112,7 +1112,7 @@ void viaFillStencilDepthBuffer(viaContextPtr vmesa, GLuint pixel) } } - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { viaFlushPrimsLocked(vmesa); } } @@ -1180,7 +1180,7 @@ void viaFillStencilBuffer(viaContextPtr vmesa, GLuint pixel) } } - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { viaFlushPrimsLocked(vmesa); } } @@ -1265,7 +1265,7 @@ void viaFillDepthBuffer(viaContextPtr vmesa, GLuint pixel) } } - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { viaFlushPrimsLocked(vmesa); } } @@ -1556,9 +1556,9 @@ int flush_agp(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd) /*=* [DBG] make draw to front buffer *=*/ if(DRAW_FRONT) - vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK; + vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK; - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { *vb++ = HC_HEADER2; *vb++ = (HC_ParaType_NotTex << 16); @@ -1807,9 +1807,9 @@ int flush_agp_saam(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd) /*=* [DBG] make draw to front buffer *=*/ if(DRAW_FRONT) - vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK; + vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK; - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { *vb++ = HC_HEADER2; *vb++ = (HC_ParaType_NotTex << 16); @@ -2035,7 +2035,7 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf) /*=* [DBG] make draw to front buffer *=*/ if(DRAW_FRONT) - vmesa->glCtx->Color._DrawDestMask = __GL_FRONT_BUFFER_MASK; + vmesa->glCtx->Color._DrawDestMask[0] = __GL_FRONT_BUFFER_MASK; /*=* John Sheng [2003.6.20] fix pci *=*/ @@ -2064,7 +2064,7 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf) *vmesa->regTranSpace = 0x46800408; vmesa->VQEnable = 0; } - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { *vb++ = HC_HEADER2; *vb++ = (HC_ParaType_NotTex << 16); diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index fcb9771875..4fdb1aa966 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -163,7 +163,7 @@ GLushort p; \ char *buf, *read_buf; \ p = 0; \ - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { \ + if (vmesa->glCtx->Color._DrawDestMask[0][0] == __GL_BACK_BUFFER_MASK) { \ buf = (char *)(vmesa->drawMap); \ read_buf = (char *)(vmesa->readMap); \ } \ @@ -224,7 +224,7 @@ GLuint p; \ char *buf, *read_buf; \ p = 0; \ - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { \ + if (vmesa->glCtx->Color._DrawDestMask[0][0] == __GL_BACK_BUFFER_MASK) { \ buf = (char *)(vmesa->drawMap); \ read_buf = (char *)(vmesa->readMap); \ } \ diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index f5b97de52c..79ce4cbe88 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -336,7 +336,7 @@ static void viaBitmap( GLcontext *ctx, GLint px, GLint py, /*=* John Sheng [2003.7.18] texenv *=*/ /*if (!vmesa->drawMap && !vmesa->readMap) {*/ if (1) { - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { viaDrawBuffer(ctx, GL_BACK); } else { @@ -497,7 +497,7 @@ void viaInitState(GLcontext *ctx) vmesa->regCmdB = HC_ACMD_HCmdB | HC_HVPMSK_X | HC_HVPMSK_Y | HC_HVPMSK_Z; vmesa->regEnable = HC_HenCW_MASK; - if (vmesa->glCtx->Color._DrawDestMask == __GL_BACK_BUFFER_MASK) { + if (vmesa->glCtx->Color._DrawDestMask[0] == __GL_BACK_BUFFER_MASK) { vmesa->drawMap = vmesa->back.map; vmesa->readMap = vmesa->back.map; } diff --git a/src/mesa/drivers/glide/fxdd.c b/src/mesa/drivers/glide/fxdd.c index 3af3b7cd3d..74d0dc008c 100644 --- a/src/mesa/drivers/glide/fxdd.c +++ b/src/mesa/drivers/glide/fxdd.c @@ -1944,8 +1944,8 @@ fx_check_IsInHardware(GLcontext * ctx) return FX_FALLBACK_STENCIL; } - if (ctx->Color._DrawDestMask != DD_FRONT_LEFT_BIT && - ctx->Color._DrawDestMask != DD_BACK_LEFT_BIT) { + if (ctx->Color._DrawDestMask[0] != DD_FRONT_LEFT_BIT && + ctx->Color._DrawDestMask[0] != DD_BACK_LEFT_BIT) { return FX_FALLBACK_DRAW_BUFFER; } diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index eada474095..4a8a92a0c8 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -1667,6 +1667,7 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) _mesa_enable_1_3_extensions(mesaCtx); _mesa_enable_1_4_extensions(mesaCtx); _mesa_enable_1_5_extensions(mesaCtx); + _mesa_enable_2_0_extensions(mesaCtx); /* finish up xmesa context initializations */ c->swapbytes = CHECK_BYTE_ORDER(v) ? GL_FALSE : GL_TRUE; diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index ebd75cd3bc..4a290c84db 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -986,7 +986,7 @@ xmesa_CopyPixels( GLcontext *ctx, if (swrast->NewState) _swrast_validate_derived( ctx ); - if (ctx->Color.DrawBuffer == GL_FRONT && + if (ctx->Color.DrawBuffer[0] == GL_FRONT && ctx->Pixel.ReadBuffer == GL_FRONT && drawBuffer && /* buffer != 0 means it's a Window or Pixmap */ readBuffer && @@ -1104,7 +1104,7 @@ void xmesa_update_state( GLcontext *ctx, GLuint new_state ) break; } - if (ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) { + if (ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) { xmesa_update_span_funcs(ctx); } } diff --git a/src/mesa/drivers/x11/xm_line.c b/src/mesa/drivers/x11/xm_line.c index a5352d6147..ccb54a391c 100644 --- a/src/mesa/drivers/x11/xm_line.c +++ b/src/mesa/drivers/x11/xm_line.c @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.3 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -492,7 +491,7 @@ static swrast_line_func get_line_func( GLcontext *ctx ) SWcontext *swrast = SWRAST_CONTEXT(ctx); int depth = GET_VISUAL_DEPTH(xmesa->xm_visual); - if ((ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0) + if ((ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0) return (swrast_line_func) NULL; if (ctx->RenderMode != GL_RENDER) return (swrast_line_func) NULL; if (ctx->Line.SmoothFlag) return (swrast_line_func) NULL; diff --git a/src/mesa/drivers/x11/xm_tri.c b/src/mesa/drivers/x11/xm_tri.c index f018a6acac..01585b05b4 100644 --- a/src/mesa/drivers/x11/xm_tri.c +++ b/src/mesa/drivers/x11/xm_tri.c @@ -1,9 +1,8 @@ - /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.3 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -1313,7 +1312,7 @@ static swrast_tri_func get_triangle_func( GLcontext *ctx ) triFuncName = NULL; #endif - if ((ctx->Color._DrawDestMask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0) + if ((ctx->Color._DrawDestMask[0] & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) ==0) return (swrast_tri_func) NULL; if (ctx->RenderMode != GL_RENDER) return (swrast_tri_func) NULL; if (ctx->Polygon.SmoothFlag) return (swrast_tri_func) NULL; diff --git a/src/mesa/glapi/gl_API.xml b/src/mesa/glapi/gl_API.xml index cc58b394f0..5dc7cf91d0 100644 --- a/src/mesa/glapi/gl_API.xml +++ b/src/mesa/glapi/gl_API.xml @@ -5560,6 +5560,31 @@ <!-- No new functions, types, enums. --> </category> +<category name="GL_ARB_draw_buffers" number="37"> + <enum name="MAX_DRAW_BUFFERS_ARB" value="0x8824"/> + <enum name="DRAW_BUFFER0_ARB" value="0x8825"/> + <enum name="DRAW_BUFFER1_ARB" value="0x8826"/> + <enum name="DRAW_BUFFER2_ARB" value="0x8827"/> + <enum name="DRAW_BUFFER3_ARB" value="0x8828"/> + <enum name="DRAW_BUFFER4_ARB" value="0x8829"/> + <enum name="DRAW_BUFFER5_ARB" value="0x882A"/> + <enum name="DRAW_BUFFER6_ARB" value="0x882B"/> + <enum name="DRAW_BUFFER7_ARB" value="0x882C"/> + <enum name="DRAW_BUFFER8_ARB" value="0x882D"/> + <enum name="DRAW_BUFFER9_ARB" value="0x882E"/> + <enum name="DRAW_BUFFER10_ARB" value="0x882F"/> + <enum name="DRAW_BUFFER11_ARB" value="0x8830"/> + <enum name="DRAW_BUFFER12_ARB" value="0x8831"/> + <enum name="DRAW_BUFFER13_ARB" value="0x8832"/> + <enum name="DRAW_BUFFER14_ARB" value="0x8833"/> + <enum name="DRAW_BUFFER15_ARB" value="0x8834"/> + + <function name="DrawBuffersARB" offset="413"> + <param name="n" type="GLsizei" counter="true"/> + <param name="bufs" type="const GLenum *" count="n"/> + <!-- no GLX yet --> + </function> +</category> <!-- Non-ARB extensions sorted by extension number. --> @@ -8601,7 +8626,7 @@ </category> <category name="GL_ATI_draw_buffers" number="277"> - <function name="DrawBuffersATI" offset="?"> + <function name="DrawBuffersATI" alias="DrawBuffersARB"> <param name="n" type="GLsizei" counter="true"/> <param name="bufs" type="const GLenum *" count="n"/> <!-- GLX protocol is not fully defined for this extension. --> @@ -8763,10 +8788,4 @@ </function> </category> -<category name="unused"> - <function name="__unused413" offset="413"> - <glx ignore="true"/> - </function> -</category> - </OpenGLAPI> diff --git a/src/mesa/glapi/glapioffsets.h b/src/mesa/glapi/glapioffsets.h index b5e8fd5af9..2b2888b6b1 100644 --- a/src/mesa/glapi/glapioffsets.h +++ b/src/mesa/glapi/glapioffsets.h @@ -442,7 +442,7 @@ #define _gloffset_MultTransposeMatrixfARB 410 #define _gloffset_MultTransposeMatrixdARB 411 #define _gloffset_SampleCoverageARB 412 -#define _gloffset___unused413 413 +#define _gloffset_DrawBuffersARB 413 #define _gloffset_PolygonOffsetEXT 414 #define _gloffset_GetTexFilterFuncSGIS 415 #define _gloffset_TexFilterFuncSGIS 416 diff --git a/src/mesa/glapi/glapitable.h b/src/mesa/glapi/glapitable.h index b4d5476159..68f4ff6ecc 100644 --- a/src/mesa/glapi/glapitable.h +++ b/src/mesa/glapi/glapitable.h @@ -448,7 +448,7 @@ struct _glapi_table void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 410 */ void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 411 */ void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 412 */ - void (GLAPIENTRYP __unused413)(void); /* 413 */ + void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 413 */ void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 414 */ void (GLAPIENTRYP GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights); /* 415 */ void (GLAPIENTRYP TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights); /* 416 */ diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h index 579494ce81..da1a59789b 100644 --- a/src/mesa/glapi/glapitemp.h +++ b/src/mesa/glapi/glapitemp.h @@ -2136,9 +2136,9 @@ KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert) DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert)); } -KEYWORD1 void KEYWORD2 NAME(__unused413)(void) +KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs) { - DISPATCH(__unused413, (), (F, "gl__unused413();\n")); + DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs)); } KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) @@ -4636,6 +4636,11 @@ KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern) DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern)); } +KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs) +{ + DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs)); +} + KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateATI)(GLenum modeRGB, GLenum modeA) { DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateATI(0x%x, 0x%x);\n", modeRGB, modeA)); @@ -5083,7 +5088,7 @@ static void * DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(MultTransposeMatrixfARB), TABLE_ENTRY(MultTransposeMatrixdARB), TABLE_ENTRY(SampleCoverageARB), - TABLE_ENTRY(__unused413), + TABLE_ENTRY(DrawBuffersARB), TABLE_ENTRY(PolygonOffsetEXT), TABLE_ENTRY(GetTexFilterFuncSGIS), TABLE_ENTRY(TexFilterFuncSGIS), @@ -5696,6 +5701,7 @@ static const void * const UNUSED_TABLE_NAME[] = { TABLE_ENTRY(DrawRangeElementsEXT), TABLE_ENTRY(SampleMaskEXT), TABLE_ENTRY(SamplePatternEXT), + TABLE_ENTRY(DrawBuffersATI), TABLE_ENTRY(BlendEquationSeparateATI), TABLE_ENTRY(BlendFuncSeparateINGR), TABLE_ENTRY(PointParameterfSGIS), diff --git a/src/mesa/glapi/glprocs.h b/src/mesa/glapi/glprocs.h index 3c12bd4b10..d953f604d9 100644 --- a/src/mesa/glapi/glprocs.h +++ b/src/mesa/glapi/glprocs.h @@ -45,925 +45,926 @@ typedef struct { #endif -static const char gl_string_table[] = { - 'g','l', 'N', 'e', 'w', 'L', 'i', 's', 't', '\0', - 'g','l', 'E', 'n', 'd', 'L', 'i', 's', 't', '\0', - 'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', '\0', - 'g','l', 'C', 'a', 'l', 'l', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'G', 'e', 'n', 'L', 'i', 's', 't', 's', '\0', - 'g','l', 'L', 'i', 's', 't', 'B', 'a', 's', 'e', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', '\0', - 'g','l', 'B', 'i', 't', 'm', 'a', 'p', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'd', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 's', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'b', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', '4', 'u', 's', 'v', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'v', '\0', - 'g','l', 'E', 'n', 'd', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'd', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'd', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'f', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'f', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'i', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'i', 'v', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 's', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 's', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'b', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'd', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'f', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 'i', 'v', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', '3', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '2', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '3', 's', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'd', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'f', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 'i', 'v', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', '\0', - 'g','l', 'R', 'a', 's', 't', 'e', 'r', 'P', 'o', 's', '4', 's', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'd', '\0', - 'g','l', 'R', 'e', 'c', 't', 'd', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'f', '\0', - 'g','l', 'R', 'e', 'c', 't', 'f', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 'i', '\0', - 'g','l', 'R', 'e', 'c', 't', 'i', 'v', '\0', - 'g','l', 'R', 'e', 'c', 't', 's', '\0', - 'g','l', 'R', 'e', 'c', 't', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '2', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '3', 's', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'd', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'f', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 'i', 'v', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', '4', 's', 'v', '\0', - 'g','l', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'F', 'a', 'c', 'e', '\0', - 'g','l', 'F', 'o', 'g', 'f', '\0', - 'g','l', 'F', 'o', 'g', 'f', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'i', '\0', - 'g','l', 'F', 'o', 'g', 'i', 'v', '\0', - 'g','l', 'F', 'r', 'o', 'n', 't', 'F', 'a', 'c', 'e', '\0', - 'g','l', 'H', 'i', 'n', 't', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'f', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'i', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', '\0', - 'g','l', 'L', 'i', 'n', 'e', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'L', 'i', 'n', 'e', 'W', 'i', 'd', 't', 'h', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', '\0', - 'g','l', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'S', 'i', 'z', 'e', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'S', 'c', 'i', 's', 's', 'o', 'r', '\0', - 'g','l', 'S', 'h', 'a', 'd', 'e', 'M', 'o', 'd', 'e', 'l', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', '\0', - 'g','l', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0', - 'g','l', 'F', 'e', 'e', 'd', 'b', 'a', 'c', 'k', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'S', 'e', 'l', 'e', 'c', 't', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'R', 'e', 'n', 'd', 'e', 'r', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'I', 'n', 'i', 't', 'N', 'a', 'm', 'e', 's', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'P', 'a', 's', 's', 'T', 'h', 'r', 'o', 'u', 'g', 'h', '\0', - 'g','l', 'P', 'o', 'p', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'P', 'u', 's', 'h', 'N', 'a', 'm', 'e', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'A', 'c', 'c', 'u', 'm', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'I', 'n', 'd', 'e', 'x', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'C', 'o', 'l', 'o', 'r', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'S', 't', 'e', 'n', 'c', 'i', 'l', '\0', - 'g','l', 'C', 'l', 'e', 'a', 'r', 'D', 'e', 'p', 't', 'h', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'M', 'a', 's', 'k', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 's', 'k', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'M', 'a', 's', 'k', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 's', 'k', '\0', - 'g','l', 'A', 'c', 'c', 'u', 'm', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'F', 'i', 'n', 'i', 's', 'h', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', '\0', - 'g','l', 'P', 'o', 'p', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'P', 'u', 's', 'h', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'M', 'a', 'p', '1', 'd', '\0', - 'g','l', 'M', 'a', 'p', '1', 'f', '\0', - 'g','l', 'M', 'a', 'p', '2', 'd', '\0', - 'g','l', 'M', 'a', 'p', '2', 'f', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'd', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '1', 'f', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'd', '\0', - 'g','l', 'M', 'a', 'p', 'G', 'r', 'i', 'd', '2', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '1', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '1', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'M', 'e', 's', 'h', '2', '\0', - 'g','l', 'E', 'v', 'a', 'l', 'P', 'o', 'i', 'n', 't', '2', '\0', - 'g','l', 'A', 'l', 'p', 'h', 'a', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'L', 'o', 'g', 'i', 'c', 'O', 'p', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'O', 'p', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'F', 'u', 'n', 'c', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'Z', 'o', 'o', 'm', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'f', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'r', 'a', 'n', 's', 'f', 'e', 'r', 'i', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'f', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'S', 't', 'o', 'r', 'e', 'i', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'P', 'i', 'x', 'e', 'l', 's', '\0', - 'g','l', 'G', 'e', 't', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'l', 'i', 'p', 'P', 'l', 'a', 'n', 'e', '\0', - 'g','l', 'G', 'e', 't', 'D', 'o', 'u', 'b', 'l', 'e', 'v', '\0', - 'g','l', 'G', 'e', 't', 'E', 'r', 'r', 'o', 'r', '\0', - 'g','l', 'G', 'e', 't', 'F', 'l', 'o', 'a', 't', 'v', '\0', - 'g','l', 'G', 'e', 't', 'I', 'n', 't', 'e', 'g', 'e', 'r', 'v', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'd', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 'p', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'M', 'a', 'p', 'u', 's', 'v', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'S', 't', 'i', 'p', 'p', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'S', 't', 'r', 'i', 'n', 'g', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'E', 'n', 'v', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'd', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'G', 'e', 'n', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'L', 'e', 'v', 'e', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'I', 's', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\0', - 'g','l', 'I', 's', 'L', 'i', 's', 't', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'R', 'a', 'n', 'g', 'e', '\0', - 'g','l', 'F', 'r', 'u', 's', 't', 'u', 'm', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'M', 'a', 't', 'r', 'i', 'x', 'M', 'o', 'd', 'e', '\0', - 'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'O', 'r', 't', 'h', 'o', '\0', - 'g','l', 'P', 'o', 'p', 'M', 'a', 't', 'r', 'i', 'x', '\0', - 'g','l', 'P', 'u', 's', 'h', 'M', 'a', 't', 'r', 'i', 'x', '\0', - 'g','l', 'R', 'o', 't', 'a', 't', 'e', 'd', '\0', - 'g','l', 'R', 'o', 't', 'a', 't', 'e', 'f', '\0', - 'g','l', 'S', 'c', 'a', 'l', 'e', 'd', '\0', - 'g','l', 'S', 'c', 'a', 'l', 'e', 'f', '\0', - 'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'd', '\0', - 'g','l', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'e', 'f', '\0', - 'g','l', 'V', 'i', 'e', 'w', 'p', 'o', 'r', 't', '\0', - 'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'e', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'u', 'b', 'v', '\0', - 'g','l', 'I', 'n', 't', 'e', 'r', 'l', 'e', 'a', 'v', 'e', 'd', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0', - 'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'P', 'o', 'p', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'P', 'u', 's', 'h', 'C', 'l', 'i', 'e', 'n', 't', 'A', 't', 't', 'r', 'i', 'b', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\0', - 'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', 'A', 'R', 'B', '\0', - 'g','l', '_', '_', 'u', 'n', 'u', 's', 'e', 'd', '4', '1', '3', '\0', - 'g','l', 'P', 'o', 'l', 'y', 'g', 'o', 'n', 'O', 'f', 'f', 's', 'e', 't', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'F', 'i', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'P', 'i', 'x', 'e', 'l', 'T', 'e', 'x', 'G', 'e', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '4', 'D', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'A', 'r', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 'n', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'I', 's', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'D', 'e', 't', 'a', 'i', 'l', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'G', 'e', 't', 'S', 'h', 'a', 'r', 'p', 'e', 'n', 'T', 'e', 'x', 'F', 'u', 'n', 'c', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'E', 'd', 'g', 'e', 'F', 'l', 'a', 'g', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'N', 'o', 'r', 'm', 'a', 'l', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 'p', 'r', 'i', 't', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'P', 'o', 'l', 'l', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'R', 'e', 'a', 'd', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 't', 'a', 'r', 't', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'S', 't', 'o', 'p', 'I', 'n', 's', 't', 'r', 'u', 'm', 'e', 'n', 't', 's', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'm', 'e', 'Z', 'o', 'o', 'm', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'T', 'a', 'g', 'S', 'a', 'm', 'p', 'l', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'R', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'P', 'l', 'a', 'n', 'e', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', 'R', 'a', 's', 't', 'e', 'r', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 's', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'C', 'o', 'l', 'o', 'r', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'M', 'o', 'd', 'e', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'L', 'i', 'g', 'h', 't', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'f', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'G', 'e', 't', 'F', 'r', 'a', 'g', 'm', 'e', 'n', 't', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'v', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'L', 'i', 'g', 'h', 't', 'E', 'n', 'v', 'i', 'S', 'G', 'I', 'X', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'W', 'e', 'i', 'g', 'h', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'l', 'u', 's', 'h', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 'r', 'r', 'a', 'y', 'R', 'a', 'n', 'g', 'e', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'O', 'u', 't', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'i', 'n', 'a', 'l', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'r', 'I', 'n', 'p', 'u', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'R', 'e', 's', 'i', 'z', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'd', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'f', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 'i', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '4', 's', 'v', 'M', 'E', 'S', 'A', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'E', 'X', 'T', '\0', - 'g','l', 'I', 'n', 'd', 'e', 'x', 'F', 'u', 'n', 'c', 'E', 'X', 'T', '\0', - 'g','l', 'L', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'U', 'n', 'l', 'o', 'c', 'k', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'u', 'l', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'H', 'i', 'n', 't', 'P', 'G', 'I', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'b', 'u', 'f', 'f', 'e', 'r', 'M', 'a', 's', 'k', '3', 'D', 'F', 'X', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', 'A', 'R', 'B', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'r', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'N', 'V', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'N', 'V', '\0', - 'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'R', 'e', 's', 'i', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'N', 'V', '\0', - 'g','l', 'T', 'r', 'a', 'c', 'k', 'M', 'a', 't', 'r', 'i', 'x', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '1', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '2', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '3', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 's', 'v', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 's', '4', 'u', 'b', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'N', 'V', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'S', 't', 'e', 'n', 'c', 'i', 'l', 'F', 'a', 'c', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0', - 'g','l', 'G', 'e', 'n', 'F', 'e', 'n', 'c', 'e', 's', 'N', 'V', '\0', - 'g','l', 'I', 's', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'T', 'e', 's', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'i', 'v', 'N', 'V', '\0', - 'g','l', 'F', 'i', 'n', 'i', 's', 'h', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'S', 'e', 't', 'F', 'e', 'n', 'c', 'e', 'N', 'V', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'E', 'n', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'A', 'r', 'r', 'a', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'E', 'n', 'v', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 't', 'r', 'i', 'n', 'g', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '4', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'N', 'V', '\0', - 'g','l', 'G', 'e', 't', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'N', 'a', 'm', 'e', 'd', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'd', 'v', 'N', 'V', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'p', 't', 'h', 'B', 'o', 'u', 'n', 'd', 's', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'I', 'B', 'M', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'M', 'o', 'd', 'e', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'I', 'B', 'M', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'C', 'l', 'i', 'e', 'n', 't', 'A', 'c', 't', 'i', 'v', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '1', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '2', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '3', 's', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'd', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'f', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 'i', 'v', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'T', 'e', 'x', 'C', 'o', 'o', 'r', 'd', '4', 's', 'v', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'L', 'o', 'a', 'd', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'f', '\0', - 'g','l', 'M', 'u', 'l', 't', 'T', 'r', 'a', 'n', 's', 'p', 'o', 's', 'e', 'M', 'a', 't', 'r', 'i', 'x', 'd', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'o', 'v', 'e', 'r', 'a', 'g', 'e', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', '\0', - 'g','l', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', '\0', - 'g','l', 'G', 'e', 't', 'C', 'o', 'm', 'p', 'r', 'e', 's', 's', 'e', 'd', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'f', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'd', 'v', '\0', - 'g','l', 'F', 'o', 'g', 'C', 'o', 'o', 'r', 'd', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', '\0', - 'g','l', 'M', 'u', 'l', 't', 'i', 'D', 'r', 'a', 'w', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'b', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'd', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'f', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 's', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'b', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 'i', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', '3', 'u', 's', 'v', '\0', - 'g','l', 'S', 'e', 'c', 'o', 'n', 'd', 'a', 'r', 'y', 'C', 'o', 'l', 'o', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'D', 'a', 't', 'a', '\0', - 'g','l', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0', - 'g','l', 'G', 'e', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 's', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', '\0', - 'g','l', 'G', 'e', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'S', 'u', 'b', 'D', 'a', 't', 'a', '\0', - 'g','l', 'I', 's', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'M', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'U', 'n', 'm', 'a', 'p', 'B', 'u', 'f', 'f', 'e', 'r', '\0', - 'g','l', 'G', 'e', 'n', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'Q', 'u', 'e', 'r', 'i', 'e', 's', '\0', - 'g','l', 'I', 's', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'B', 'e', 'g', 'i', 'n', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'E', 'n', 'd', 'Q', 'u', 'e', 'r', 'y', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'i', 'v', '\0', - 'g','l', 'G', 'e', 't', 'Q', 'u', 'e', 'r', 'y', 'O', 'b', 'j', 'e', 'c', 't', 'u', 'i', 'v', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'W', 'i', 'n', 'd', 'o', 'w', 'P', 'o', 's', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '1', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '2', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '3', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 's', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', '4', 'N', 'u', 'b', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 'n', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 's', 'A', 'R', 'B', '\0', - 'g','l', 'I', 's', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'd', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'f', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'i', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'G', 'e', 't', 'V', 'e', 'r', 't', 'e', 'x', 'A', 't', 't', 'r', 'i', 'b', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'A', 'R', 'B', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'C', 'o', 'l', 'o', 'r', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'T', 'e', 'x', 'S', 'u', 'b', 'I', 'm', 'a', 'g', 'e', '3', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'H', 'i', 's', 't', 'o', 'g', 'r', 'a', 'm', 'E', 'X', 'T', '\0', - 'g','l', 'R', 'e', 's', 'e', 't', 'M', 'i', 'n', 'm', 'a', 'x', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '1', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'n', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'e', 'p', 'a', 'r', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '2', 'D', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'i', 'v', 'S', 'G', 'I', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'G', 'I', '\0', - 'g','l', 'B', 'i', 'n', 'd', 'T', 'e', 'x', 't', 'u', 'r', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'e', 'l', 'e', 't', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'i', 'z', 'e', 'T', 'e', 'x', 't', 'u', 'r', 'e', 's', 'E', 'X', 'T', '\0', - 'g','l', 'A', 'r', 'r', 'a', 'y', 'E', 'l', 'e', 'm', 'e', 'n', 't', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'A', 'r', 'r', 'a', 'y', 's', 'E', 'X', 'T', '\0', - 'g','l', 'G', 'e', 't', 'P', 'o', 'i', 'n', 't', 'e', 'r', 'v', 'E', 'X', 'T', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'p', 'y', 'C', 'o', 'l', 'o', 'r', 'S', 'u', 'b', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'C', 'o', 'l', 'o', 'r', 'T', 'a', 'b', 'l', 'e', 'E', 'X', 'T', '\0', - 'g','l', 'D', 'r', 'a', 'w', 'R', 'a', 'n', 'g', 'e', 'E', 'l', 'e', 'm', 'e', 'n', 't', 's', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'M', 'a', 's', 'k', 'E', 'X', 'T', '\0', - 'g','l', 'S', 'a', 'm', 'p', 'l', 'e', 'P', 'a', 't', 't', 'e', 'r', 'n', 'E', 'X', 'T', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'E', 'q', 'u', 'a', 't', 'i', 'o', 'n', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'A', 'T', 'I', '\0', - 'g','l', 'B', 'l', 'e', 'n', 'd', 'F', 'u', 'n', 'c', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'I', 'N', 'G', 'R', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'S', 'G', 'I', 'S', '\0', - 'g','l', 'P', 'o', 'i', 'n', 't', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'f', 'v', 'S', 'G', 'I', 'S', '\0', -}; +static const char gl_string_table[] = + "glNewList\0" + "glEndList\0" + "glCallList\0" + "glCallLists\0" + "glDeleteLists\0" + "glGenLists\0" + "glListBase\0" + "glBegin\0" + "glBitmap\0" + "glColor3b\0" + "glColor3bv\0" + "glColor3d\0" + "glColor3dv\0" + "glColor3f\0" + "glColor3fv\0" + "glColor3i\0" + "glColor3iv\0" + "glColor3s\0" + "glColor3sv\0" + "glColor3ub\0" + "glColor3ubv\0" + "glColor3ui\0" + "glColor3uiv\0" + "glColor3us\0" + "glColor3usv\0" + "glColor4b\0" + "glColor4bv\0" + "glColor4d\0" + "glColor4dv\0" + "glColor4f\0" + "glColor4fv\0" + "glColor4i\0" + "glColor4iv\0" + "glColor4s\0" + "glColor4sv\0" + "glColor4ub\0" + "glColor4ubv\0" + "glColor4ui\0" + "glColor4uiv\0" + "glColor4us\0" + "glColor4usv\0" + "glEdgeFlag\0" + "glEdgeFlagv\0" + "glEnd\0" + "glIndexd\0" + "glIndexdv\0" + "glIndexf\0" + "glIndexfv\0" + "glIndexi\0" + "glIndexiv\0" + "glIndexs\0" + "glIndexsv\0" + "glNormal3b\0" + "glNormal3bv\0" + "glNormal3d\0" + "glNormal3dv\0" + "glNormal3f\0" + "glNormal3fv\0" + "glNormal3i\0" + "glNormal3iv\0" + "glNormal3s\0" + "glNormal3sv\0" + "glRasterPos2d\0" + "glRasterPos2dv\0" + "glRasterPos2f\0" + "glRasterPos2fv\0" + "glRasterPos2i\0" + "glRasterPos2iv\0" + "glRasterPos2s\0" + "glRasterPos2sv\0" + "glRasterPos3d\0" + "glRasterPos3dv\0" + "glRasterPos3f\0" + "glRasterPos3fv\0" + "glRasterPos3i\0" + "glRasterPos3iv\0" + "glRasterPos3s\0" + "glRasterPos3sv\0" + "glRasterPos4d\0" + "glRasterPos4dv\0" + "glRasterPos4f\0" + "glRasterPos4fv\0" + "glRasterPos4i\0" + "glRasterPos4iv\0" + "glRasterPos4s\0" + "glRasterPos4sv\0" + "glRectd\0" + "glRectdv\0" + "glRectf\0" + "glRectfv\0" + "glRecti\0" + "glRectiv\0" + "glRects\0" + "glRectsv\0" + "glTexCoord1d\0" + "glTexCoord1dv\0" + "glTexCoord1f\0" + "glTexCoord1fv\0" + "glTexCoord1i\0" + "glTexCoord1iv\0" + "glTexCoord1s\0" + "glTexCoord1sv\0" + "glTexCoord2d\0" + "glTexCoord2dv\0" + "glTexCoord2f\0" + "glTexCoord2fv\0" + "glTexCoord2i\0" + "glTexCoord2iv\0" + "glTexCoord2s\0" + "glTexCoord2sv\0" + "glTexCoord3d\0" + "glTexCoord3dv\0" + "glTexCoord3f\0" + "glTexCoord3fv\0" + "glTexCoord3i\0" + "glTexCoord3iv\0" + "glTexCoord3s\0" + "glTexCoord3sv\0" + "glTexCoord4d\0" + "glTexCoord4dv\0" + "glTexCoord4f\0" + "glTexCoord4fv\0" + "glTexCoord4i\0" + "glTexCoord4iv\0" + "glTexCoord4s\0" + "glTexCoord4sv\0" + "glVertex2d\0" + "glVertex2dv\0" + "glVertex2f\0" + "glVertex2fv\0" + "glVertex2i\0" + "glVertex2iv\0" + "glVertex2s\0" + "glVertex2sv\0" + "glVertex3d\0" + "glVertex3dv\0" + "glVertex3f\0" + "glVertex3fv\0" + "glVertex3i\0" + "glVertex3iv\0" + "glVertex3s\0" + "glVertex3sv\0" + "glVertex4d\0" + "glVertex4dv\0" + "glVertex4f\0" + "glVertex4fv\0" + "glVertex4i\0" + "glVertex4iv\0" + "glVertex4s\0" + "glVertex4sv\0" + "glClipPlane\0" + "glColorMaterial\0" + "glCullFace\0" + "glFogf\0" + "glFogfv\0" + "glFogi\0" + "glFogiv\0" + "glFrontFace\0" + "glHint\0" + "glLightf\0" + "glLightfv\0" + "glLighti\0" + "glLightiv\0" + "glLightModelf\0" + "glLightModelfv\0" + "glLightModeli\0" + "glLightModeliv\0" + "glLineStipple\0" + "glLineWidth\0" + "glMaterialf\0" + "glMaterialfv\0" + "glMateriali\0" + "glMaterialiv\0" + "glPointSize\0" + "glPolygonMode\0" + "glPolygonStipple\0" + "glScissor\0" + "glShadeModel\0" + "glTexParameterf\0" + "glTexParameterfv\0" + "glTexParameteri\0" + "glTexParameteriv\0" + "glTexImage1D\0" + "glTexImage2D\0" + "glTexEnvf\0" + "glTexEnvfv\0" + "glTexEnvi\0" + "glTexEnviv\0" + "glTexGend\0" + "glTexGendv\0" + "glTexGenf\0" + "glTexGenfv\0" + "glTexGeni\0" + "glTexGeniv\0" + "glFeedbackBuffer\0" + "glSelectBuffer\0" + "glRenderMode\0" + "glInitNames\0" + "glLoadName\0" + "glPassThrough\0" + "glPopName\0" + "glPushName\0" + "glDrawBuffer\0" + "glClear\0" + "glClearAccum\0" + "glClearIndex\0" + "glClearColor\0" + "glClearStencil\0" + "glClearDepth\0" + "glStencilMask\0" + "glColorMask\0" + "glDepthMask\0" + "glIndexMask\0" + "glAccum\0" + "glDisable\0" + "glEnable\0" + "glFinish\0" + "glFlush\0" + "glPopAttrib\0" + "glPushAttrib\0" + "glMap1d\0" + "glMap1f\0" + "glMap2d\0" + "glMap2f\0" + "glMapGrid1d\0" + "glMapGrid1f\0" + "glMapGrid2d\0" + "glMapGrid2f\0" + "glEvalCoord1d\0" + "glEvalCoord1dv\0" + "glEvalCoord1f\0" + "glEvalCoord1fv\0" + "glEvalCoord2d\0" + "glEvalCoord2dv\0" + "glEvalCoord2f\0" + "glEvalCoord2fv\0" + "glEvalMesh1\0" + "glEvalPoint1\0" + "glEvalMesh2\0" + "glEvalPoint2\0" + "glAlphaFunc\0" + "glBlendFunc\0" + "glLogicOp\0" + "glStencilFunc\0" + "glStencilOp\0" + "glDepthFunc\0" + "glPixelZoom\0" + "glPixelTransferf\0" + "glPixelTransferi\0" + "glPixelStoref\0" + "glPixelStorei\0" + "glPixelMapfv\0" + "glPixelMapuiv\0" + "glPixelMapusv\0" + "glReadBuffer\0" + "glCopyPixels\0" + "glReadPixels\0" + "glDrawPixels\0" + "glGetBooleanv\0" + "glGetClipPlane\0" + "glGetDoublev\0" + "glGetError\0" + "glGetFloatv\0" + "glGetIntegerv\0" + "glGetLightfv\0" + "glGetLightiv\0" + "glGetMapdv\0" + "glGetMapfv\0" + "glGetMapiv\0" + "glGetMaterialfv\0" + "glGetMaterialiv\0" + "glGetPixelMapfv\0" + "glGetPixelMapuiv\0" + "glGetPixelMapusv\0" + "glGetPolygonStipple\0" + "glGetString\0" + "glGetTexEnvfv\0" + "glGetTexEnviv\0" + "glGetTexGendv\0" + "glGetTexGenfv\0" + "glGetTexGeniv\0" + "glGetTexImage\0" + "glGetTexParameterfv\0" + "glGetTexParameteriv\0" + "glGetTexLevelParameterfv\0" + "glGetTexLevelParameteriv\0" + "glIsEnabled\0" + "glIsList\0" + "glDepthRange\0" + "glFrustum\0" + "glLoadIdentity\0" + "glLoadMatrixf\0" + "glLoadMatrixd\0" + "glMatrixMode\0" + "glMultMatrixf\0" + "glMultMatrixd\0" + "glOrtho\0" + "glPopMatrix\0" + "glPushMatrix\0" + "glRotated\0" + "glRotatef\0" + "glScaled\0" + "glScalef\0" + "glTranslated\0" + "glTranslatef\0" + "glViewport\0" + "glArrayElement\0" + "glBindTexture\0" + "glColorPointer\0" + "glDisableClientState\0" + "glDrawArrays\0" + "glDrawElements\0" + "glEdgeFlagPointer\0" + "glEnableClientState\0" + "glIndexPointer\0" + "glIndexub\0" + "glIndexubv\0" + "glInterleavedArrays\0" + "glNormalPointer\0" + "glPolygonOffset\0" + "glTexCoordPointer\0" + "glVertexPointer\0" + "glAreTexturesResident\0" + "glCopyTexImage1D\0" + "glCopyTexImage2D\0" + "glCopyTexSubImage1D\0" + "glCopyTexSubImage2D\0" + "glDeleteTextures\0" + "glGenTextures\0" + "glGetPointerv\0" + "glIsTexture\0" + "glPrioritizeTextures\0" + "glTexSubImage1D\0" + "glTexSubImage2D\0" + "glPopClientAttrib\0" + "glPushClientAttrib\0" + "glBlendColor\0" + "glBlendEquation\0" + "glDrawRangeElements\0" + "glColorTable\0" + "glColorTableParameterfv\0" + "glColorTableParameteriv\0" + "glCopyColorTable\0" + "glGetColorTable\0" + "glGetColorTableParameterfv\0" + "glGetColorTableParameteriv\0" + "glColorSubTable\0" + "glCopyColorSubTable\0" + "glConvolutionFilter1D\0" + "glConvolutionFilter2D\0" + "glConvolutionParameterf\0" + "glConvolutionParameterfv\0" + "glConvolutionParameteri\0" + "glConvolutionParameteriv\0" + "glCopyConvolutionFilter1D\0" + "glCopyConvolutionFilter2D\0" + "glGetConvolutionFilter\0" + "glGetConvolutionParameterfv\0" + "glGetConvolutionParameteriv\0" + "glGetSeparableFilter\0" + "glSeparableFilter2D\0" + "glGetHistogram\0" + "glGetHistogramParameterfv\0" + "glGetHistogramParameteriv\0" + "glGetMinmax\0" + "glGetMinmaxParameterfv\0" + "glGetMinmaxParameteriv\0" + "glHistogram\0" + "glMinmax\0" + "glResetHistogram\0" + "glResetMinmax\0" + "glTexImage3D\0" + "glTexSubImage3D\0" + "glCopyTexSubImage3D\0" + "glActiveTextureARB\0" + "glClientActiveTextureARB\0" + "glMultiTexCoord1dARB\0" + "glMultiTexCoord1dvARB\0" + "glMultiTexCoord1fARB\0" + "glMultiTexCoord1fvARB\0" + "glMultiTexCoord1iARB\0" + "glMultiTexCoord1ivARB\0" + "glMultiTexCoord1sARB\0" + "glMultiTexCoord1svARB\0" + "glMultiTexCoord2dARB\0" + "glMultiTexCoord2dvARB\0" + "glMultiTexCoord2fARB\0" + "glMultiTexCoord2fvARB\0" + "glMultiTexCoord2iARB\0" + "glMultiTexCoord2ivARB\0" + "glMultiTexCoord2sARB\0" + "glMultiTexCoord2svARB\0" + "glMultiTexCoord3dARB\0" + "glMultiTexCoord3dvARB\0" + "glMultiTexCoord3fARB\0" + "glMultiTexCoord3fvARB\0" + "glMultiTexCoord3iARB\0" + "glMultiTexCoord3ivARB\0" + "glMultiTexCoord3sARB\0" + "glMultiTexCoord3svARB\0" + "glMultiTexCoord4dARB\0" + "glMultiTexCoord4dvARB\0" + "glMultiTexCoord4fARB\0" + "glMultiTexCoord4fvARB\0" + "glMultiTexCoord4iARB\0" + "glMultiTexCoord4ivARB\0" + "glMultiTexCoord4sARB\0" + "glMultiTexCoord4svARB\0" + "glLoadTransposeMatrixfARB\0" + "glLoadTransposeMatrixdARB\0" + "glMultTransposeMatrixfARB\0" + "glMultTransposeMatrixdARB\0" + "glSampleCoverageARB\0" + "glDrawBuffersARB\0" + "glPolygonOffsetEXT\0" + "glGetTexFilterFuncSGIS\0" + "glTexFilterFuncSGIS\0" + "glGetHistogramEXT\0" + "glGetHistogramParameterfvEXT\0" + "glGetHistogramParameterivEXT\0" + "glGetMinmaxEXT\0" + "glGetMinmaxParameterfvEXT\0" + "glGetMinmaxParameterivEXT\0" + "glGetConvolutionFilterEXT\0" + "glGetConvolutionParameterfvEXT\0" + "glGetConvolutionParameterivEXT\0" + "glGetSeparableFilterEXT\0" + "glGetColorTableSGI\0" + "glGetColorTableParameterfvSGI\0" + "glGetColorTableParameterivSGI\0" + "glPixelTexGenSGIX\0" + "glPixelTexGenParameteriSGIS\0" + "glPixelTexGenParameterivSGIS\0" + "glPixelTexGenParameterfSGIS\0" + "glPixelTexGenParameterfvSGIS\0" + "glGetPixelTexGenParameterivSGIS\0" + "glGetPixelTexGenParameterfvSGIS\0" + "glTexImage4DSGIS\0" + "glTexSubImage4DSGIS\0" + "glAreTexturesResidentEXT\0" + "glGenTexturesEXT\0" + "glIsTextureEXT\0" + "glDetailTexFuncSGIS\0" + "glGetDetailTexFuncSGIS\0" + "glSharpenTexFuncSGIS\0" + "glGetSharpenTexFuncSGIS\0" + "glSampleMaskSGIS\0" + "glSamplePatternSGIS\0" + "glColorPointerEXT\0" + "glEdgeFlagPointerEXT\0" + "glIndexPointerEXT\0" + "glNormalPointerEXT\0" + "glTexCoordPointerEXT\0" + "glVertexPointerEXT\0" + "glSpriteParameterfSGIX\0" + "glSpriteParameterfvSGIX\0" + "glSpriteParameteriSGIX\0" + "glSpriteParameterivSGIX\0" + "glPointParameterfEXT\0" + "glPointParameterfvEXT\0" + "glGetInstrumentsSGIX\0" + "glInstrumentsBufferSGIX\0" + "glPollInstrumentsSGIX\0" + "glReadInstrumentsSGIX\0" + "glStartInstrumentsSGIX\0" + "glStopInstrumentsSGIX\0" + "glFrameZoomSGIX\0" + "glTagSampleBufferSGIX\0" + "glReferencePlaneSGIX\0" + "glFlushRasterSGIX\0" + "glGetListParameterfvSGIX\0" + "glGetListParameterivSGIX\0" + "glListParameterfSGIX\0" + "glListParameterfvSGIX\0" + "glListParameteriSGIX\0" + "glListParameterivSGIX\0" + "glFragmentColorMaterialSGIX\0" + "glFragmentLightfSGIX\0" + "glFragmentLightfvSGIX\0" + "glFragmentLightiSGIX\0" + "glFragmentLightivSGIX\0" + "glFragmentLightModelfSGIX\0" + "glFragmentLightModelfvSGIX\0" + "glFragmentLightModeliSGIX\0" + "glFragmentLightModelivSGIX\0" + "glFragmentMaterialfSGIX\0" + "glFragmentMaterialfvSGIX\0" + "glFragmentMaterialiSGIX\0" + "glFragmentMaterialivSGIX\0" + "glGetFragmentLightfvSGIX\0" + "glGetFragmentLightivSGIX\0" + "glGetFragmentMaterialfvSGIX\0" + "glGetFragmentMaterialivSGIX\0" + "glLightEnviSGIX\0" + "glVertexWeightfEXT\0" + "glVertexWeightfvEXT\0" + "glVertexWeightPointerEXT\0" + "glFlushVertexArrayRangeNV\0" + "glVertexArrayRangeNV\0" + "glCombinerParameterfvNV\0" + "glCombinerParameterfNV\0" + "glCombinerParameterivNV\0" + "glCombinerParameteriNV\0" + "glCombinerInputNV\0" + "glCombinerOutputNV\0" + "glFinalCombinerInputNV\0" + "glGetCombinerInputParameterfvNV\0" + "glGetCombinerInputParameterivNV\0" + "glGetCombinerOutputParameterfvNV\0" + "glGetCombinerOutputParameterivNV\0" + "glGetFinalCombinerInputParameterfvNV\0" + "glGetFinalCombinerInputParameterivNV\0" + "glResizeBuffersMESA\0" + "glWindowPos2dMESA\0" + "glWindowPos2dvMESA\0" + "glWindowPos2fMESA\0" + "glWindowPos2fvMESA\0" + "glWindowPos2iMESA\0" + "glWindowPos2ivMESA\0" + "glWindowPos2sMESA\0" + "glWindowPos2svMESA\0" + "glWindowPos3dMESA\0" + "glWindowPos3dvMESA\0" + "glWindowPos3fMESA\0" + "glWindowPos3fvMESA\0" + "glWindowPos3iMESA\0" + "glWindowPos3ivMESA\0" + "glWindowPos3sMESA\0" + "glWindowPos3svMESA\0" + "glWindowPos4dMESA\0" + "glWindowPos4dvMESA\0" + "glWindowPos4fMESA\0" + "glWindowPos4fvMESA\0" + "glWindowPos4iMESA\0" + "glWindowPos4ivMESA\0" + "glWindowPos4sMESA\0" + "glWindowPos4svMESA\0" + "glBlendFuncSeparateEXT\0" + "glIndexMaterialEXT\0" + "glIndexFuncEXT\0" + "glLockArraysEXT\0" + "glUnlockArraysEXT\0" + "glCullParameterdvEXT\0" + "glCullParameterfvEXT\0" + "glHintPGI\0" + "glFogCoordfEXT\0" + "glFogCoordfvEXT\0" + "glFogCoorddEXT\0" + "glFogCoorddvEXT\0" + "glFogCoordPointerEXT\0" + "glGetColorTableEXT\0" + "glGetColorTableParameterivEXT\0" + "glGetColorTableParameterfvEXT\0" + "glTbufferMask3DFX\0" + "glCompressedTexImage3DARB\0" + "glCompressedTexImage2DARB\0" + "glCompressedTexImage1DARB\0" + "glCompressedTexSubImage3DARB\0" + "glCompressedTexSubImage2DARB\0" + "glCompressedTexSubImage1DARB\0" + "glGetCompressedTexImageARB\0" + "glSecondaryColor3bEXT\0" + "glSecondaryColor3bvEXT\0" + "glSecondaryColor3dEXT\0" + "glSecondaryColor3dvEXT\0" + "glSecondaryColor3fEXT\0" + "glSecondaryColor3fvEXT\0" + "glSecondaryColor3iEXT\0" + "glSecondaryColor3ivEXT\0" + "glSecondaryColor3sEXT\0" + "glSecondaryColor3svEXT\0" + "glSecondaryColor3ubEXT\0" + "glSecondaryColor3ubvEXT\0" + "glSecondaryColor3uiEXT\0" + "glSecondaryColor3uivEXT\0" + "glSecondaryColor3usEXT\0" + "glSecondaryColor3usvEXT\0" + "glSecondaryColorPointerEXT\0" + "glAreProgramsResidentNV\0" + "glBindProgramNV\0" + "glDeleteProgramsNV\0" + "glExecuteProgramNV\0" + "glGenProgramsNV\0" + "glGetProgramParameterdvNV\0" + "glGetProgramParameterfvNV\0" + "glGetProgramivNV\0" + "glGetProgramStringNV\0" + "glGetTrackMatrixivNV\0" + "glGetVertexAttribdvNV\0" + "glGetVertexAttribfvNV\0" + "glGetVertexAttribivNV\0" + "glGetVertexAttribPointervNV\0" + "glIsProgramNV\0" + "glLoadProgramNV\0" + "glProgramParameter4dNV\0" + "glProgramParameter4dvNV\0" + "glProgramParameter4fNV\0" + "glProgramParameter4fvNV\0" + "glProgramParameters4dvNV\0" + "glProgramParameters4fvNV\0" + "glRequestResidentProgramsNV\0" + "glTrackMatrixNV\0" + "glVertexAttribPointerNV\0" + "glVertexAttrib1dNV\0" + "glVertexAttrib1dvNV\0" + "glVertexAttrib1fNV\0" + "glVertexAttrib1fvNV\0" + "glVertexAttrib1sNV\0" + "glVertexAttrib1svNV\0" + "glVertexAttrib2dNV\0" + "glVertexAttrib2dvNV\0" + "glVertexAttrib2fNV\0" + "glVertexAttrib2fvNV\0" + "glVertexAttrib2sNV\0" + "glVertexAttrib2svNV\0" + "glVertexAttrib3dNV\0" + "glVertexAttrib3dvNV\0" + "glVertexAttrib3fNV\0" + "glVertexAttrib3fvNV\0" + "glVertexAttrib3sNV\0" + "glVertexAttrib3svNV\0" + "glVertexAttrib4dNV\0" + "glVertexAttrib4dvNV\0" + "glVertexAttrib4fNV\0" + "glVertexAttrib4fvNV\0" + "glVertexAttrib4sNV\0" + "glVertexAttrib4svNV\0" + "glVertexAttrib4ubNV\0" + "glVertexAttrib4ubvNV\0" + "glVertexAttribs1dvNV\0" + "glVertexAttribs1fvNV\0" + "glVertexAttribs1svNV\0" + "glVertexAttribs2dvNV\0" + "glVertexAttribs2fvNV\0" + "glVertexAttribs2svNV\0" + "glVertexAttribs3dvNV\0" + "glVertexAttribs3fvNV\0" + "glVertexAttribs3svNV\0" + "glVertexAttribs4dvNV\0" + "glVertexAttribs4fvNV\0" + "glVertexAttribs4svNV\0" + "glVertexAttribs4ubvNV\0" + "glPointParameteriNV\0" + "glPointParameterivNV\0" + "glMultiDrawArraysEXT\0" + "glMultiDrawElementsEXT\0" + "glActiveStencilFaceEXT\0" + "glDeleteFencesNV\0" + "glGenFencesNV\0" + "glIsFenceNV\0" + "glTestFenceNV\0" + "glGetFenceivNV\0" + "glFinishFenceNV\0" + "glSetFenceNV\0" + "glVertexAttrib4bvARB\0" + "glVertexAttrib4ivARB\0" + "glVertexAttrib4ubvARB\0" + "glVertexAttrib4usvARB\0" + "glVertexAttrib4uivARB\0" + "glVertexAttrib4NbvARB\0" + "glVertexAttrib4NsvARB\0" + "glVertexAttrib4NivARB\0" + "glVertexAttrib4NusvARB\0" + "glVertexAttrib4NuivARB\0" + "glVertexAttribPointerARB\0" + "glEnableVertexAttribArrayARB\0" + "glDisableVertexAttribArrayARB\0" + "glProgramStringARB\0" + "glProgramEnvParameter4dARB\0" + "glProgramEnvParameter4dvARB\0" + "glProgramEnvParameter4fARB\0" + "glProgramEnvParameter4fvARB\0" + "glProgramLocalParameter4dARB\0" + "glProgramLocalParameter4dvARB\0" + "glProgramLocalParameter4fARB\0" + "glProgramLocalParameter4fvARB\0" + "glGetProgramEnvParameterdvARB\0" + "glGetProgramEnvParameterfvARB\0" + "glGetProgramLocalParameterdvARB\0" + "glGetProgramLocalParameterfvARB\0" + "glGetProgramivARB\0" + "glGetProgramStringARB\0" + "glProgramNamedParameter4fNV\0" + "glProgramNamedParameter4dNV\0" + "glProgramNamedParameter4fvNV\0" + "glProgramNamedParameter4dvNV\0" + "glGetProgramNamedParameterfvNV\0" + "glGetProgramNamedParameterdvNV\0" + "glBindBufferARB\0" + "glBufferDataARB\0" + "glBufferSubDataARB\0" + "glDeleteBuffersARB\0" + "glGenBuffersARB\0" + "glGetBufferParameterivARB\0" + "glGetBufferPointervARB\0" + "glGetBufferSubDataARB\0" + "glIsBufferARB\0" + "glMapBufferARB\0" + "glUnmapBufferARB\0" + "glDepthBoundsEXT\0" + "glGenQueriesARB\0" + "glDeleteQueriesARB\0" + "glIsQueryARB\0" + "glBeginQueryARB\0" + "glEndQueryARB\0" + "glGetQueryivARB\0" + "glGetQueryObjectivARB\0" + "glGetQueryObjectuivARB\0" + "glMultiModeDrawArraysIBM\0" + "glMultiModeDrawElementsIBM\0" + "glBlendEquationSeparateEXT\0" + "glActiveTexture\0" + "glClientActiveTexture\0" + "glMultiTexCoord1d\0" + "glMultiTexCoord1dv\0" + "glMultiTexCoord1f\0" + "glMultiTexCoord1fv\0" + "glMultiTexCoord1i\0" + "glMultiTexCoord1iv\0" + "glMultiTexCoord1s\0" + "glMultiTexCoord1sv\0" + "glMultiTexCoord2d\0" + "glMultiTexCoord2dv\0" + "glMultiTexCoord2f\0" + "glMultiTexCoord2fv\0" + "glMultiTexCoord2i\0" + "glMultiTexCoord2iv\0" + "glMultiTexCoord2s\0" + "glMultiTexCoord2sv\0" + "glMultiTexCoord3d\0" + "glMultiTexCoord3dv\0" + "glMultiTexCoord3f\0" + "glMultiTexCoord3fv\0" + "glMultiTexCoord3i\0" + "glMultiTexCoord3iv\0" + "glMultiTexCoord3s\0" + "glMultiTexCoord3sv\0" + "glMultiTexCoord4d\0" + "glMultiTexCoord4dv\0" + "glMultiTexCoord4f\0" + "glMultiTexCoord4fv\0" + "glMultiTexCoord4i\0" + "glMultiTexCoord4iv\0" + "glMultiTexCoord4s\0" + "glMultiTexCoord4sv\0" + "glLoadTransposeMatrixf\0" + "glLoadTransposeMatrixd\0" + "glMultTransposeMatrixf\0" + "glMultTransposeMatrixd\0" + "glSampleCoverage\0" + "glCompressedTexImage3D\0" + "glCompressedTexImage2D\0" + "glCompressedTexImage1D\0" + "glCompressedTexSubImage3D\0" + "glCompressedTexSubImage2D\0" + "glCompressedTexSubImage1D\0" + "glGetCompressedTexImage\0" + "glBlendFuncSeparate\0" + "glFogCoordf\0" + "glFogCoordfv\0" + "glFogCoordd\0" + "glFogCoorddv\0" + "glFogCoordPointer\0" + "glMultiDrawArrays\0" + "glMultiDrawElements\0" + "glPointParameterf\0" + "glPointParameterfv\0" + "glPointParameteri\0" + "glPointParameteriv\0" + "glSecondaryColor3b\0" + "glSecondaryColor3bv\0" + "glSecondaryColor3d\0" + "glSecondaryColor3dv\0" + "glSecondaryColor3f\0" + "glSecondaryColor3fv\0" + "glSecondaryColor3i\0" + "glSecondaryColor3iv\0" + "glSecondaryColor3s\0" + "glSecondaryColor3sv\0" + "glSecondaryColor3ub\0" + "glSecondaryColor3ubv\0" + "glSecondaryColor3ui\0" + "glSecondaryColor3uiv\0" + "glSecondaryColor3us\0" + "glSecondaryColor3usv\0" + "glSecondaryColorPointer\0" + "glWindowPos2d\0" + "glWindowPos2dv\0" + "glWindowPos2f\0" + "glWindowPos2fv\0" + "glWindowPos2i\0" + "glWindowPos2iv\0" + "glWindowPos2s\0" + "glWindowPos2sv\0" + "glWindowPos3d\0" + "glWindowPos3dv\0" + "glWindowPos3f\0" + "glWindowPos3fv\0" + "glWindowPos3i\0" + "glWindowPos3iv\0" + "glWindowPos3s\0" + "glWindowPos3sv\0" + "glBindBuffer\0" + "glBufferData\0" + "glBufferSubData\0" + "glDeleteBuffers\0" + "glGenBuffers\0" + "glGetBufferParameteriv\0" + "glGetBufferPointerv\0" + "glGetBufferSubData\0" + "glIsBuffer\0" + "glMapBuffer\0" + "glUnmapBuffer\0" + "glGenQueries\0" + "glDeleteQueries\0" + "glIsQuery\0" + "glBeginQuery\0" + "glEndQuery\0" + "glGetQueryiv\0" + "glGetQueryObjectiv\0" + "glGetQueryObjectuiv\0" + "glPointParameterfARB\0" + "glPointParameterfvARB\0" + "glWindowPos2dARB\0" + "glWindowPos2fARB\0" + "glWindowPos2iARB\0" + "glWindowPos2sARB\0" + "glWindowPos2dvARB\0" + "glWindowPos2fvARB\0" + "glWindowPos2ivARB\0" + "glWindowPos2svARB\0" + "glWindowPos3dARB\0" + "glWindowPos3fARB\0" + "glWindowPos3iARB\0" + "glWindowPos3sARB\0" + "glWindowPos3dvARB\0" + "glWindowPos3fvARB\0" + "glWindowPos3ivARB\0" + "glWindowPos3svARB\0" + "glVertexAttrib1sARB\0" + "glVertexAttrib1fARB\0" + "glVertexAttrib1dARB\0" + "glVertexAttrib2sARB\0" + "glVertexAttrib2fARB\0" + "glVertexAttrib2dARB\0" + "glVertexAttrib3sARB\0" + "glVertexAttrib3fARB\0" + "glVertexAttrib3dARB\0" + "glVertexAttrib4sARB\0" + "glVertexAttrib4fARB\0" + "glVertexAttrib4dARB\0" + "glVertexAttrib4NubARB\0" + "glVertexAttrib1svARB\0" + "glVertexAttrib1fvARB\0" + "glVertexAttrib1dvARB\0" + "glVertexAttrib2svARB\0" + "glVertexAttrib2fvARB\0" + "glVertexAttrib2dvARB\0" + "glVertexAttrib3svARB\0" + "glVertexAttrib3fvARB\0" + "glVertexAttrib3dvARB\0" + "glVertexAttrib4svARB\0" + "glVertexAttrib4fvARB\0" + "glVertexAttrib4dvARB\0" + "glVertexAttrib4NubvARB\0" + "glBindProgramARB\0" + "glDeleteProgramsARB\0" + "glGenProgramsARB\0" + "glIsProgramARB\0" + "glGetVertexAttribdvARB\0" + "glGetVertexAttribfvARB\0" + "glGetVertexAttribivARB\0" + "glGetVertexAttribPointervARB\0" + "glBlendColorEXT\0" + "glTexImage3DEXT\0" + "glTexSubImage3DEXT\0" + "glTexSubImage1DEXT\0" + "glTexSubImage2DEXT\0" + "glCopyTexImage1DEXT\0" + "glCopyTexImage2DEXT\0" + "glCopyTexSubImage1DEXT\0" + "glCopyTexSubImage2DEXT\0" + "glCopyTexSubImage3DEXT\0" + "glHistogramEXT\0" + "glMinmaxEXT\0" + "glResetHistogramEXT\0" + "glResetMinmaxEXT\0" + "glConvolutionFilter1DEXT\0" + "glConvolutionFilter2DEXT\0" + "glConvolutionParameterfEXT\0" + "glConvolutionParameterfvEXT\0" + "glConvolutionParameteriEXT\0" + "glConvolutionParameterivEXT\0" + "glCopyConvolutionFilter1DEXT\0" + "glCopyConvolutionFilter2DEXT\0" + "glSeparableFilter2DEXT\0" + "glColorTableSGI\0" + "glColorTableParameterfvSGI\0" + "glColorTableParameterivSGI\0" + "glCopyColorTableSGI\0" + "glBindTextureEXT\0" + "glDeleteTexturesEXT\0" + "glPrioritizeTexturesEXT\0" + "glArrayElementEXT\0" + "glDrawArraysEXT\0" + "glGetPointervEXT\0" + "glBlendEquationEXT\0" + "glColorSubTableEXT\0" + "glCopyColorSubTableEXT\0" + "glColorTableEXT\0" + "glDrawRangeElementsEXT\0" + "glSampleMaskEXT\0" + "glSamplePatternEXT\0" + "glDrawBuffersATI\0" + "glBlendEquationSeparateATI\0" + "glBlendFuncSeparateINGR\0" + "glPointParameterfSGIS\0" + "glPointParameterfvSGIS\0" + ; static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 0, glNewList, _gloffset_NewList ), @@ -1379,510 +1380,511 @@ static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 5821, glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB ), NAME_FUNC_OFFSET( 5847, glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB ), NAME_FUNC_OFFSET( 5873, glSampleCoverageARB, _gloffset_SampleCoverageARB ), - NAME_FUNC_OFFSET( 5893, gl__unused413, _gloffset___unused413 ), - NAME_FUNC_OFFSET( 5907, glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT ), - NAME_FUNC_OFFSET( 5926, glGetTexFilterFuncSGIS, _gloffset_GetTexFilterFuncSGIS ), - NAME_FUNC_OFFSET( 5949, glTexFilterFuncSGIS, _gloffset_TexFilterFuncSGIS ), - NAME_FUNC_OFFSET( 5969, glGetHistogramEXT, _gloffset_GetHistogramEXT ), - NAME_FUNC_OFFSET( 5987, glGetHistogramParameterfvEXT, _gloffset_GetHistogramParameterfvEXT ), - NAME_FUNC_OFFSET( 6016, glGetHistogramParameterivEXT, _gloffset_GetHistogramParameterivEXT ), - NAME_FUNC_OFFSET( 6045, glGetMinmaxEXT, _gloffset_GetMinmaxEXT ), - NAME_FUNC_OFFSET( 6060, glGetMinmaxParameterfvEXT, _gloffset_GetMinmaxParameterfvEXT ), - NAME_FUNC_OFFSET( 6086, glGetMinmaxParameterivEXT, _gloffset_GetMinmaxParameterivEXT ), - NAME_FUNC_OFFSET( 6112, glGetConvolutionFilterEXT, _gloffset_GetConvolutionFilterEXT ), - NAME_FUNC_OFFSET( 6138, glGetConvolutionParameterfvEXT, _gloffset_GetConvolutionParameterfvEXT ), - NAME_FUNC_OFFSET( 6169, glGetConvolutionParameterivEXT, _gloffset_GetConvolutionParameterivEXT ), - NAME_FUNC_OFFSET( 6200, glGetSeparableFilterEXT, _gloffset_GetSeparableFilterEXT ), - NAME_FUNC_OFFSET( 6224, glGetColorTableSGI, _gloffset_GetColorTableSGI ), - NAME_FUNC_OFFSET( 6243, glGetColorTableParameterfvSGI, _gloffset_GetColorTableParameterfvSGI ), - NAME_FUNC_OFFSET( 6273, glGetColorTableParameterivSGI, _gloffset_GetColorTableParameterivSGI ), - NAME_FUNC_OFFSET( 6303, glPixelTexGenSGIX, _gloffset_PixelTexGenSGIX ), - NAME_FUNC_OFFSET( 6321, glPixelTexGenParameteriSGIS, _gloffset_PixelTexGenParameteriSGIS ), - NAME_FUNC_OFFSET( 6349, glPixelTexGenParameterivSGIS, _gloffset_PixelTexGenParameterivSGIS ), - NAME_FUNC_OFFSET( 6378, glPixelTexGenParameterfSGIS, _gloffset_PixelTexGenParameterfSGIS ), - NAME_FUNC_OFFSET( 6406, glPixelTexGenParameterfvSGIS, _gloffset_PixelTexGenParameterfvSGIS ), - NAME_FUNC_OFFSET( 6435, glGetPixelTexGenParameterivSGIS, _gloffset_GetPixelTexGenParameterivSGIS ), - NAME_FUNC_OFFSET( 6467, glGetPixelTexGenParameterfvSGIS, _gloffset_GetPixelTexGenParameterfvSGIS ), - NAME_FUNC_OFFSET( 6499, glTexImage4DSGIS, _gloffset_TexImage4DSGIS ), - NAME_FUNC_OFFSET( 6516, glTexSubImage4DSGIS, _gloffset_TexSubImage4DSGIS ), - NAME_FUNC_OFFSET( 6536, glAreTexturesResidentEXT, _gloffset_AreTexturesResidentEXT ), - NAME_FUNC_OFFSET( 6561, glGenTexturesEXT, _gloffset_GenTexturesEXT ), - NAME_FUNC_OFFSET( 6578, glIsTextureEXT, _gloffset_IsTextureEXT ), - NAME_FUNC_OFFSET( 6593, glDetailTexFuncSGIS, _gloffset_DetailTexFuncSGIS ), - NAME_FUNC_OFFSET( 6613, glGetDetailTexFuncSGIS, _gloffset_GetDetailTexFuncSGIS ), - NAME_FUNC_OFFSET( 6636, glSharpenTexFuncSGIS, _gloffset_SharpenTexFuncSGIS ), - NAME_FUNC_OFFSET( 6657, glGetSharpenTexFuncSGIS, _gloffset_GetSharpenTexFuncSGIS ), - NAME_FUNC_OFFSET( 6681, glSampleMaskSGIS, _gloffset_SampleMaskSGIS ), - NAME_FUNC_OFFSET( 6698, glSamplePatternSGIS, _gloffset_SamplePatternSGIS ), - NAME_FUNC_OFFSET( 6718, glColorPointerEXT, _gloffset_ColorPointerEXT ), - NAME_FUNC_OFFSET( 6736, glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT ), - NAME_FUNC_OFFSET( 6757, glIndexPointerEXT, _gloffset_IndexPointerEXT ), - NAME_FUNC_OFFSET( 6775, glNormalPointerEXT, _gloffset_NormalPointerEXT ), - NAME_FUNC_OFFSET( 6794, glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT ), - NAME_FUNC_OFFSET( 6815, glVertexPointerEXT, _gloffset_VertexPointerEXT ), - NAME_FUNC_OFFSET( 6834, glSpriteParameterfSGIX, _gloffset_SpriteParameterfSGIX ), - NAME_FUNC_OFFSET( 6857, glSpriteParameterfvSGIX, _gloffset_SpriteParameterfvSGIX ), - NAME_FUNC_OFFSET( 6881, glSpriteParameteriSGIX, _gloffset_SpriteParameteriSGIX ), - NAME_FUNC_OFFSET( 6904, glSpriteParameterivSGIX, _gloffset_SpriteParameterivSGIX ), - NAME_FUNC_OFFSET( 6928, glPointParameterfEXT, _gloffset_PointParameterfEXT ), - NAME_FUNC_OFFSET( 6949, glPointParameterfvEXT, _gloffset_PointParameterfvEXT ), - NAME_FUNC_OFFSET( 6971, glGetInstrumentsSGIX, _gloffset_GetInstrumentsSGIX ), - NAME_FUNC_OFFSET( 6992, glInstrumentsBufferSGIX, _gloffset_InstrumentsBufferSGIX ), - NAME_FUNC_OFFSET( 7016, glPollInstrumentsSGIX, _gloffset_PollInstrumentsSGIX ), - NAME_FUNC_OFFSET( 7038, glReadInstrumentsSGIX, _gloffset_ReadInstrumentsSGIX ), - NAME_FUNC_OFFSET( 7060, glStartInstrumentsSGIX, _gloffset_StartInstrumentsSGIX ), - NAME_FUNC_OFFSET( 7083, glStopInstrumentsSGIX, _gloffset_StopInstrumentsSGIX ), - NAME_FUNC_OFFSET( 7105, glFrameZoomSGIX, _gloffset_FrameZoomSGIX ), - NAME_FUNC_OFFSET( 7121, glTagSampleBufferSGIX, _gloffset_TagSampleBufferSGIX ), - NAME_FUNC_OFFSET( 7143, glReferencePlaneSGIX, _gloffset_ReferencePlaneSGIX ), - NAME_FUNC_OFFSET( 7164, glFlushRasterSGIX, _gloffset_FlushRasterSGIX ), - NAME_FUNC_OFFSET( 7182, glGetListParameterfvSGIX, _gloffset_GetListParameterfvSGIX ), - NAME_FUNC_OFFSET( 7207, glGetListParameterivSGIX, _gloffset_GetListParameterivSGIX ), - NAME_FUNC_OFFSET( 7232, glListParameterfSGIX, _gloffset_ListParameterfSGIX ), - NAME_FUNC_OFFSET( 7253, glListParameterfvSGIX, _gloffset_ListParameterfvSGIX ), - NAME_FUNC_OFFSET( 7275, glListParameteriSGIX, _gloffset_ListParameteriSGIX ), - NAME_FUNC_OFFSET( 7296, glListParameterivSGIX, _gloffset_ListParameterivSGIX ), - NAME_FUNC_OFFSET( 7318, glFragmentColorMaterialSGIX, _gloffset_FragmentColorMaterialSGIX ), - NAME_FUNC_OFFSET( 7346, glFragmentLightfSGIX, _gloffset_FragmentLightfSGIX ), - NAME_FUNC_OFFSET( 7367, glFragmentLightfvSGIX, _gloffset_FragmentLightfvSGIX ), - NAME_FUNC_OFFSET( 7389, glFragmentLightiSGIX, _gloffset_FragmentLightiSGIX ), - NAME_FUNC_OFFSET( 7410, glFragmentLightivSGIX, _gloffset_FragmentLightivSGIX ), - NAME_FUNC_OFFSET( 7432, glFragmentLightModelfSGIX, _gloffset_FragmentLightModelfSGIX ), - NAME_FUNC_OFFSET( 7458, glFragmentLightModelfvSGIX, _gloffset_FragmentLightModelfvSGIX ), - NAME_FUNC_OFFSET( 7485, glFragmentLightModeliSGIX, _gloffset_FragmentLightModeliSGIX ), - NAME_FUNC_OFFSET( 7511, glFragmentLightModelivSGIX, _gloffset_FragmentLightModelivSGIX ), - NAME_FUNC_OFFSET( 7538, glFragmentMaterialfSGIX, _gloffset_FragmentMaterialfSGIX ), - NAME_FUNC_OFFSET( 7562, glFragmentMaterialfvSGIX, _gloffset_FragmentMaterialfvSGIX ), - NAME_FUNC_OFFSET( 7587, glFragmentMaterialiSGIX, _gloffset_FragmentMaterialiSGIX ), - NAME_FUNC_OFFSET( 7611, glFragmentMaterialivSGIX, _gloffset_FragmentMaterialivSGIX ), - NAME_FUNC_OFFSET( 7636, glGetFragmentLightfvSGIX, _gloffset_GetFragmentLightfvSGIX ), - NAME_FUNC_OFFSET( 7661, glGetFragmentLightivSGIX, _gloffset_GetFragmentLightivSGIX ), - NAME_FUNC_OFFSET( 7686, glGetFragmentMaterialfvSGIX, _gloffset_GetFragmentMaterialfvSGIX ), - NAME_FUNC_OFFSET( 7714, glGetFragmentMaterialivSGIX, _gloffset_GetFragmentMaterialivSGIX ), - NAME_FUNC_OFFSET( 7742, glLightEnviSGIX, _gloffset_LightEnviSGIX ), - NAME_FUNC_OFFSET( 7758, glVertexWeightfEXT, _gloffset_VertexWeightfEXT ), - NAME_FUNC_OFFSET( 7777, glVertexWeightfvEXT, _gloffset_VertexWeightfvEXT ), - NAME_FUNC_OFFSET( 7797, glVertexWeightPointerEXT, _gloffset_VertexWeightPointerEXT ), - NAME_FUNC_OFFSET( 7822, glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV ), - NAME_FUNC_OFFSET( 7848, glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV ), - NAME_FUNC_OFFSET( 7869, glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV ), - NAME_FUNC_OFFSET( 7893, glCombinerParameterfNV, _gloffset_CombinerParameterfNV ), - NAME_FUNC_OFFSET( 7916, glCombinerParameterivNV, _gloffset_CombinerParameterivNV ), - NAME_FUNC_OFFSET( 7940, glCombinerParameteriNV, _gloffset_CombinerParameteriNV ), - NAME_FUNC_OFFSET( 7963, glCombinerInputNV, _gloffset_CombinerInputNV ), - NAME_FUNC_OFFSET( 7981, glCombinerOutputNV, _gloffset_CombinerOutputNV ), - NAME_FUNC_OFFSET( 8000, glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV ), - NAME_FUNC_OFFSET( 8023, glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV ), - NAME_FUNC_OFFSET( 8055, glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV ), - NAME_FUNC_OFFSET( 8087, glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV ), - NAME_FUNC_OFFSET( 8120, glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV ), - NAME_FUNC_OFFSET( 8153, glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV ), - NAME_FUNC_OFFSET( 8190, glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV ), - NAME_FUNC_OFFSET( 8227, glResizeBuffersMESA, _gloffset_ResizeBuffersMESA ), - NAME_FUNC_OFFSET( 8247, glWindowPos2dMESA, _gloffset_WindowPos2dMESA ), - NAME_FUNC_OFFSET( 8265, glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA ), - NAME_FUNC_OFFSET( 8284, glWindowPos2fMESA, _gloffset_WindowPos2fMESA ), - NAME_FUNC_OFFSET( 8302, glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA ), - NAME_FUNC_OFFSET( 8321, glWindowPos2iMESA, _gloffset_WindowPos2iMESA ), - NAME_FUNC_OFFSET( 8339, glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA ), - NAME_FUNC_OFFSET( 8358, glWindowPos2sMESA, _gloffset_WindowPos2sMESA ), - NAME_FUNC_OFFSET( 8376, glWindowPos2svMESA, _gloffset_WindowPos2svMESA ), - NAME_FUNC_OFFSET( 8395, glWindowPos3dMESA, _gloffset_WindowPos3dMESA ), - NAME_FUNC_OFFSET( 8413, glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA ), - NAME_FUNC_OFFSET( 8432, glWindowPos3fMESA, _gloffset_WindowPos3fMESA ), - NAME_FUNC_OFFSET( 8450, glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA ), - NAME_FUNC_OFFSET( 8469, glWindowPos3iMESA, _gloffset_WindowPos3iMESA ), - NAME_FUNC_OFFSET( 8487, glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA ), - NAME_FUNC_OFFSET( 8506, glWindowPos3sMESA, _gloffset_WindowPos3sMESA ), - NAME_FUNC_OFFSET( 8524, glWindowPos3svMESA, _gloffset_WindowPos3svMESA ), - NAME_FUNC_OFFSET( 8543, glWindowPos4dMESA, _gloffset_WindowPos4dMESA ), - NAME_FUNC_OFFSET( 8561, glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA ), - NAME_FUNC_OFFSET( 8580, glWindowPos4fMESA, _gloffset_WindowPos4fMESA ), - NAME_FUNC_OFFSET( 8598, glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA ), - NAME_FUNC_OFFSET( 8617, glWindowPos4iMESA, _gloffset_WindowPos4iMESA ), - NAME_FUNC_OFFSET( 8635, glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA ), - NAME_FUNC_OFFSET( 8654, glWindowPos4sMESA, _gloffset_WindowPos4sMESA ), - NAME_FUNC_OFFSET( 8672, glWindowPos4svMESA, _gloffset_WindowPos4svMESA ), - NAME_FUNC_OFFSET( 8691, glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT ), - NAME_FUNC_OFFSET( 8714, glIndexMaterialEXT, _gloffset_IndexMaterialEXT ), - NAME_FUNC_OFFSET( 8733, glIndexFuncEXT, _gloffset_IndexFuncEXT ), - NAME_FUNC_OFFSET( 8748, glLockArraysEXT, _gloffset_LockArraysEXT ), - NAME_FUNC_OFFSET( 8764, glUnlockArraysEXT, _gloffset_UnlockArraysEXT ), - NAME_FUNC_OFFSET( 8782, glCullParameterdvEXT, _gloffset_CullParameterdvEXT ), - NAME_FUNC_OFFSET( 8803, glCullParameterfvEXT, _gloffset_CullParameterfvEXT ), - NAME_FUNC_OFFSET( 8824, glHintPGI, _gloffset_HintPGI ), - NAME_FUNC_OFFSET( 8834, glFogCoordfEXT, _gloffset_FogCoordfEXT ), - NAME_FUNC_OFFSET( 8849, glFogCoordfvEXT, _gloffset_FogCoordfvEXT ), - NAME_FUNC_OFFSET( 8865, glFogCoorddEXT, _gloffset_FogCoorddEXT ), - NAME_FUNC_OFFSET( 8880, glFogCoorddvEXT, _gloffset_FogCoorddvEXT ), - NAME_FUNC_OFFSET( 8896, glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT ), - NAME_FUNC_OFFSET( 8917, glGetColorTableEXT, _gloffset_GetColorTableEXT ), - NAME_FUNC_OFFSET( 8936, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameterivEXT ), - NAME_FUNC_OFFSET( 8966, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfvEXT ), - NAME_FUNC_OFFSET( 8996, glTbufferMask3DFX, _gloffset_TbufferMask3DFX ), - NAME_FUNC_OFFSET( 9014, glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB ), - NAME_FUNC_OFFSET( 9040, glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB ), - NAME_FUNC_OFFSET( 9066, glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB ), - NAME_FUNC_OFFSET( 9092, glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB ), - NAME_FUNC_OFFSET( 9121, glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB ), - NAME_FUNC_OFFSET( 9150, glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB ), - NAME_FUNC_OFFSET( 9179, glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB ), - NAME_FUNC_OFFSET( 9206, glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT ), - NAME_FUNC_OFFSET( 9228, glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT ), - NAME_FUNC_OFFSET( 9251, glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT ), - NAME_FUNC_OFFSET( 9273, glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT ), - NAME_FUNC_OFFSET( 9296, glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT ), - NAME_FUNC_OFFSET( 9318, glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT ), - NAME_FUNC_OFFSET( 9341, glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT ), - NAME_FUNC_OFFSET( 9363, glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT ), - NAME_FUNC_OFFSET( 9386, glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT ), - NAME_FUNC_OFFSET( 9408, glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT ), - NAME_FUNC_OFFSET( 9431, glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT ), - NAME_FUNC_OFFSET( 9454, glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT ), - NAME_FUNC_OFFSET( 9478, glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT ), - NAME_FUNC_OFFSET( 9501, glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT ), - NAME_FUNC_OFFSET( 9525, glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT ), - NAME_FUNC_OFFSET( 9548, glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT ), - NAME_FUNC_OFFSET( 9572, glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT ), - NAME_FUNC_OFFSET( 9599, glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV ), - NAME_FUNC_OFFSET( 9623, glBindProgramNV, _gloffset_BindProgramNV ), - NAME_FUNC_OFFSET( 9639, glDeleteProgramsNV, _gloffset_DeleteProgramsNV ), - NAME_FUNC_OFFSET( 9658, glExecuteProgramNV, _gloffset_ExecuteProgramNV ), - NAME_FUNC_OFFSET( 9677, glGenProgramsNV, _gloffset_GenProgramsNV ), - NAME_FUNC_OFFSET( 9693, glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV ), - NAME_FUNC_OFFSET( 9719, glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV ), - NAME_FUNC_OFFSET( 9745, glGetProgramivNV, _gloffset_GetProgramivNV ), - NAME_FUNC_OFFSET( 9762, glGetProgramStringNV, _gloffset_GetProgramStringNV ), - NAME_FUNC_OFFSET( 9783, glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV ), - NAME_FUNC_OFFSET( 9804, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ), - NAME_FUNC_OFFSET( 9826, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ), - NAME_FUNC_OFFSET( 9848, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ), - NAME_FUNC_OFFSET( 9870, glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV ), - NAME_FUNC_OFFSET( 9898, glIsProgramNV, _gloffset_IsProgramNV ), - NAME_FUNC_OFFSET( 9912, glLoadProgramNV, _gloffset_LoadProgramNV ), - NAME_FUNC_OFFSET( 9928, glProgramParameter4dNV, _gloffset_ProgramParameter4dNV ), - NAME_FUNC_OFFSET( 9951, glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV ), - NAME_FUNC_OFFSET( 9975, glProgramParameter4fNV, _gloffset_ProgramParameter4fNV ), - NAME_FUNC_OFFSET( 9998, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ), - NAME_FUNC_OFFSET( 10022, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ), - NAME_FUNC_OFFSET( 10047, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ), - NAME_FUNC_OFFSET( 10072, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ), - NAME_FUNC_OFFSET( 10100, glTrackMatrixNV, _gloffset_TrackMatrixNV ), - NAME_FUNC_OFFSET( 10116, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ), - NAME_FUNC_OFFSET( 10140, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ), - NAME_FUNC_OFFSET( 10159, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ), - NAME_FUNC_OFFSET( 10179, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ), - NAME_FUNC_OFFSET( 10198, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ), - NAME_FUNC_OFFSET( 10218, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ), - NAME_FUNC_OFFSET( 10237, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ), - NAME_FUNC_OFFSET( 10257, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ), - NAME_FUNC_OFFSET( 10276, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ), - NAME_FUNC_OFFSET( 10296, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ), - NAME_FUNC_OFFSET( 10315, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ), - NAME_FUNC_OFFSET( 10335, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ), - NAME_FUNC_OFFSET( 10354, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ), - NAME_FUNC_OFFSET( 10374, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ), - NAME_FUNC_OFFSET( 10393, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ), - NAME_FUNC_OFFSET( 10413, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ), - NAME_FUNC_OFFSET( 10432, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ), - NAME_FUNC_OFFSET( 10452, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ), - NAME_FUNC_OFFSET( 10471, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ), - NAME_FUNC_OFFSET( 10491, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ), - NAME_FUNC_OFFSET( 10510, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ), - NAME_FUNC_OFFSET( 10530, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ), - NAME_FUNC_OFFSET( 10549, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ), - NAME_FUNC_OFFSET( 10569, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ), - NAME_FUNC_OFFSET( 10588, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ), - NAME_FUNC_OFFSET( 10608, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ), - NAME_FUNC_OFFSET( 10628, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ), - NAME_FUNC_OFFSET( 10649, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ), - NAME_FUNC_OFFSET( 10670, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ), - NAME_FUNC_OFFSET( 10691, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ), - NAME_FUNC_OFFSET( 10712, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ), - NAME_FUNC_OFFSET( 10733, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ), - NAME_FUNC_OFFSET( 10754, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ), - NAME_FUNC_OFFSET( 10775, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ), - NAME_FUNC_OFFSET( 10796, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ), - NAME_FUNC_OFFSET( 10817, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ), - NAME_FUNC_OFFSET( 10838, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ), - NAME_FUNC_OFFSET( 10859, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ), - NAME_FUNC_OFFSET( 10880, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ), - NAME_FUNC_OFFSET( 10901, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ), - NAME_FUNC_OFFSET( 10923, glPointParameteriNV, _gloffset_PointParameteriNV ), - NAME_FUNC_OFFSET( 10943, glPointParameterivNV, _gloffset_PointParameterivNV ), - NAME_FUNC_OFFSET( 10964, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ), - NAME_FUNC_OFFSET( 10985, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ), - NAME_FUNC_OFFSET( 11008, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ), - NAME_FUNC_OFFSET( 11031, glDeleteFencesNV, _gloffset_DeleteFencesNV ), - NAME_FUNC_OFFSET( 11048, glGenFencesNV, _gloffset_GenFencesNV ), - NAME_FUNC_OFFSET( 11062, glIsFenceNV, _gloffset_IsFenceNV ), - NAME_FUNC_OFFSET( 11074, glTestFenceNV, _gloffset_TestFenceNV ), - NAME_FUNC_OFFSET( 11088, glGetFenceivNV, _gloffset_GetFenceivNV ), - NAME_FUNC_OFFSET( 11103, glFinishFenceNV, _gloffset_FinishFenceNV ), - NAME_FUNC_OFFSET( 11119, glSetFenceNV, _gloffset_SetFenceNV ), - NAME_FUNC_OFFSET( 11132, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ), - NAME_FUNC_OFFSET( 11153, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ), - NAME_FUNC_OFFSET( 11174, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ), - NAME_FUNC_OFFSET( 11196, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ), - NAME_FUNC_OFFSET( 11218, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ), - NAME_FUNC_OFFSET( 11240, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ), - NAME_FUNC_OFFSET( 11262, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ), - NAME_FUNC_OFFSET( 11284, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ), - NAME_FUNC_OFFSET( 11306, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ), - NAME_FUNC_OFFSET( 11329, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ), - NAME_FUNC_OFFSET( 11352, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ), - NAME_FUNC_OFFSET( 11377, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ), - NAME_FUNC_OFFSET( 11406, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ), - NAME_FUNC_OFFSET( 11436, glProgramStringARB, _gloffset_ProgramStringARB ), - NAME_FUNC_OFFSET( 11455, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ), - NAME_FUNC_OFFSET( 11482, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ), - NAME_FUNC_OFFSET( 11510, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ), - NAME_FUNC_OFFSET( 11537, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ), - NAME_FUNC_OFFSET( 11565, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ), - NAME_FUNC_OFFSET( 11594, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ), - NAME_FUNC_OFFSET( 11624, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ), - NAME_FUNC_OFFSET( 11653, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ), - NAME_FUNC_OFFSET( 11683, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ), - NAME_FUNC_OFFSET( 11713, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ), - NAME_FUNC_OFFSET( 11743, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ), - NAME_FUNC_OFFSET( 11775, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ), - NAME_FUNC_OFFSET( 11807, glGetProgramivARB, _gloffset_GetProgramivARB ), - NAME_FUNC_OFFSET( 11825, glGetProgramStringARB, _gloffset_GetProgramStringARB ), - NAME_FUNC_OFFSET( 11847, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ), - NAME_FUNC_OFFSET( 11875, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ), - NAME_FUNC_OFFSET( 11903, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ), - NAME_FUNC_OFFSET( 11932, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ), - NAME_FUNC_OFFSET( 11961, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ), - NAME_FUNC_OFFSET( 11992, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ), - NAME_FUNC_OFFSET( 12023, glBindBufferARB, _gloffset_BindBufferARB ), - NAME_FUNC_OFFSET( 12039, glBufferDataARB, _gloffset_BufferDataARB ), - NAME_FUNC_OFFSET( 12055, glBufferSubDataARB, _gloffset_BufferSubDataARB ), - NAME_FUNC_OFFSET( 12074, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ), - NAME_FUNC_OFFSET( 12093, glGenBuffersARB, _gloffset_GenBuffersARB ), - NAME_FUNC_OFFSET( 12109, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ), - NAME_FUNC_OFFSET( 12135, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ), - NAME_FUNC_OFFSET( 12158, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ), - NAME_FUNC_OFFSET( 12180, glIsBufferARB, _gloffset_IsBufferARB ), - NAME_FUNC_OFFSET( 12194, glMapBufferARB, _gloffset_MapBufferARB ), - NAME_FUNC_OFFSET( 12209, glUnmapBufferARB, _gloffset_UnmapBufferARB ), - NAME_FUNC_OFFSET( 12226, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ), - NAME_FUNC_OFFSET( 12243, glGenQueriesARB, _gloffset_GenQueriesARB ), - NAME_FUNC_OFFSET( 12259, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ), - NAME_FUNC_OFFSET( 12278, glIsQueryARB, _gloffset_IsQueryARB ), - NAME_FUNC_OFFSET( 12291, glBeginQueryARB, _gloffset_BeginQueryARB ), - NAME_FUNC_OFFSET( 12307, glEndQueryARB, _gloffset_EndQueryARB ), - NAME_FUNC_OFFSET( 12321, glGetQueryivARB, _gloffset_GetQueryivARB ), - NAME_FUNC_OFFSET( 12337, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ), - NAME_FUNC_OFFSET( 12359, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ), - NAME_FUNC_OFFSET( 12382, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ), - NAME_FUNC_OFFSET( 12407, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ), - NAME_FUNC_OFFSET( 12434, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ), - NAME_FUNC_OFFSET( 12461, glActiveTexture, _gloffset_ActiveTextureARB ), - NAME_FUNC_OFFSET( 12477, glClientActiveTexture, _gloffset_ClientActiveTextureARB ), - NAME_FUNC_OFFSET( 12499, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ), - NAME_FUNC_OFFSET( 12517, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ), - NAME_FUNC_OFFSET( 12536, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ), - NAME_FUNC_OFFSET( 12554, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ), - NAME_FUNC_OFFSET( 12573, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ), - NAME_FUNC_OFFSET( 12591, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ), - NAME_FUNC_OFFSET( 12610, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ), - NAME_FUNC_OFFSET( 12628, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ), - NAME_FUNC_OFFSET( 12647, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ), - NAME_FUNC_OFFSET( 12665, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ), - NAME_FUNC_OFFSET( 12684, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ), - NAME_FUNC_OFFSET( 12702, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ), - NAME_FUNC_OFFSET( 12721, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ), - NAME_FUNC_OFFSET( 12739, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ), - NAME_FUNC_OFFSET( 12758, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ), - NAME_FUNC_OFFSET( 12776, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ), - NAME_FUNC_OFFSET( 12795, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ), - NAME_FUNC_OFFSET( 12813, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ), - NAME_FUNC_OFFSET( 12832, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ), - NAME_FUNC_OFFSET( 12850, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ), - NAME_FUNC_OFFSET( 12869, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ), - NAME_FUNC_OFFSET( 12887, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ), - NAME_FUNC_OFFSET( 12906, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ), - NAME_FUNC_OFFSET( 12924, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ), - NAME_FUNC_OFFSET( 12943, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ), - NAME_FUNC_OFFSET( 12961, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ), - NAME_FUNC_OFFSET( 12980, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ), - NAME_FUNC_OFFSET( 12998, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ), - NAME_FUNC_OFFSET( 13017, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ), - NAME_FUNC_OFFSET( 13035, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ), - NAME_FUNC_OFFSET( 13054, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ), - NAME_FUNC_OFFSET( 13072, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ), - NAME_FUNC_OFFSET( 13091, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ), - NAME_FUNC_OFFSET( 13114, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ), - NAME_FUNC_OFFSET( 13137, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ), - NAME_FUNC_OFFSET( 13160, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ), - NAME_FUNC_OFFSET( 13183, glSampleCoverage, _gloffset_SampleCoverageARB ), - NAME_FUNC_OFFSET( 13200, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ), - NAME_FUNC_OFFSET( 13223, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ), - NAME_FUNC_OFFSET( 13246, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ), - NAME_FUNC_OFFSET( 13269, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ), - NAME_FUNC_OFFSET( 13295, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ), - NAME_FUNC_OFFSET( 13321, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ), - NAME_FUNC_OFFSET( 13347, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ), - NAME_FUNC_OFFSET( 13371, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ), - NAME_FUNC_OFFSET( 13391, glFogCoordf, _gloffset_FogCoordfEXT ), - NAME_FUNC_OFFSET( 13403, glFogCoordfv, _gloffset_FogCoordfvEXT ), - NAME_FUNC_OFFSET( 13416, glFogCoordd, _gloffset_FogCoorddEXT ), - NAME_FUNC_OFFSET( 13428, glFogCoorddv, _gloffset_FogCoorddvEXT ), - NAME_FUNC_OFFSET( 13441, glFogCoordPointer, _gloffset_FogCoordPointerEXT ), - NAME_FUNC_OFFSET( 13459, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ), - NAME_FUNC_OFFSET( 13477, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ), - NAME_FUNC_OFFSET( 13497, glPointParameterf, _gloffset_PointParameterfEXT ), - NAME_FUNC_OFFSET( 13515, glPointParameterfv, _gloffset_PointParameterfvEXT ), - NAME_FUNC_OFFSET( 13534, glPointParameteri, _gloffset_PointParameteriNV ), - NAME_FUNC_OFFSET( 13552, glPointParameteriv, _gloffset_PointParameterivNV ), - NAME_FUNC_OFFSET( 13571, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ), - NAME_FUNC_OFFSET( 13590, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ), - NAME_FUNC_OFFSET( 13610, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ), - NAME_FUNC_OFFSET( 13629, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ), - NAME_FUNC_OFFSET( 13649, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ), - NAME_FUNC_OFFSET( 13668, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ), - NAME_FUNC_OFFSET( 13688, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ), - NAME_FUNC_OFFSET( 13707, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ), - NAME_FUNC_OFFSET( 13727, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ), - NAME_FUNC_OFFSET( 13746, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ), - NAME_FUNC_OFFSET( 13766, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ), - NAME_FUNC_OFFSET( 13786, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ), - NAME_FUNC_OFFSET( 13807, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ), - NAME_FUNC_OFFSET( 13827, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ), - NAME_FUNC_OFFSET( 13848, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ), - NAME_FUNC_OFFSET( 13868, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ), - NAME_FUNC_OFFSET( 13889, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ), - NAME_FUNC_OFFSET( 13913, glWindowPos2d, _gloffset_WindowPos2dMESA ), - NAME_FUNC_OFFSET( 13927, glWindowPos2dv, _gloffset_WindowPos2dvMESA ), - NAME_FUNC_OFFSET( 13942, glWindowPos2f, _gloffset_WindowPos2fMESA ), - NAME_FUNC_OFFSET( 13956, glWindowPos2fv, _gloffset_WindowPos2fvMESA ), - NAME_FUNC_OFFSET( 13971, glWindowPos2i, _gloffset_WindowPos2iMESA ), - NAME_FUNC_OFFSET( 13985, glWindowPos2iv, _gloffset_WindowPos2ivMESA ), - NAME_FUNC_OFFSET( 14000, glWindowPos2s, _gloffset_WindowPos2sMESA ), - NAME_FUNC_OFFSET( 14014, glWindowPos2sv, _gloffset_WindowPos2svMESA ), - NAME_FUNC_OFFSET( 14029, glWindowPos3d, _gloffset_WindowPos3dMESA ), - NAME_FUNC_OFFSET( 14043, glWindowPos3dv, _gloffset_WindowPos3dvMESA ), - NAME_FUNC_OFFSET( 14058, glWindowPos3f, _gloffset_WindowPos3fMESA ), - NAME_FUNC_OFFSET( 14072, glWindowPos3fv, _gloffset_WindowPos3fvMESA ), - NAME_FUNC_OFFSET( 14087, glWindowPos3i, _gloffset_WindowPos3iMESA ), - NAME_FUNC_OFFSET( 14101, glWindowPos3iv, _gloffset_WindowPos3ivMESA ), - NAME_FUNC_OFFSET( 14116, glWindowPos3s, _gloffset_WindowPos3sMESA ), - NAME_FUNC_OFFSET( 14130, glWindowPos3sv, _gloffset_WindowPos3svMESA ), - NAME_FUNC_OFFSET( 14145, glBindBuffer, _gloffset_BindBufferARB ), - NAME_FUNC_OFFSET( 14158, glBufferData, _gloffset_BufferDataARB ), - NAME_FUNC_OFFSET( 14171, glBufferSubData, _gloffset_BufferSubDataARB ), - NAME_FUNC_OFFSET( 14187, glDeleteBuffers, _gloffset_DeleteBuffersARB ), - NAME_FUNC_OFFSET( 14203, glGenBuffers, _gloffset_GenBuffersARB ), - NAME_FUNC_OFFSET( 14216, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ), - NAME_FUNC_OFFSET( 14239, glGetBufferPointerv, _gloffset_GetBufferPointervARB ), - NAME_FUNC_OFFSET( 14259, glGetBufferSubData, _gloffset_GetBufferSubDataARB ), - NAME_FUNC_OFFSET( 14278, glIsBuffer, _gloffset_IsBufferARB ), - NAME_FUNC_OFFSET( 14289, glMapBuffer, _gloffset_MapBufferARB ), - NAME_FUNC_OFFSET( 14301, glUnmapBuffer, _gloffset_UnmapBufferARB ), - NAME_FUNC_OFFSET( 14315, glGenQueries, _gloffset_GenQueriesARB ), - NAME_FUNC_OFFSET( 14328, glDeleteQueries, _gloffset_DeleteQueriesARB ), - NAME_FUNC_OFFSET( 14344, glIsQuery, _gloffset_IsQueryARB ), - NAME_FUNC_OFFSET( 14354, glBeginQuery, _gloffset_BeginQueryARB ), - NAME_FUNC_OFFSET( 14367, glEndQuery, _gloffset_EndQueryARB ), - NAME_FUNC_OFFSET( 14378, glGetQueryiv, _gloffset_GetQueryivARB ), - NAME_FUNC_OFFSET( 14391, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ), - NAME_FUNC_OFFSET( 14410, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ), - NAME_FUNC_OFFSET( 14430, glPointParameterfARB, _gloffset_PointParameterfEXT ), - NAME_FUNC_OFFSET( 14451, glPointParameterfvARB, _gloffset_PointParameterfvEXT ), - NAME_FUNC_OFFSET( 14473, glWindowPos2dARB, _gloffset_WindowPos2dMESA ), - NAME_FUNC_OFFSET( 14490, glWindowPos2fARB, _gloffset_WindowPos2fMESA ), - NAME_FUNC_OFFSET( 14507, glWindowPos2iARB, _gloffset_WindowPos2iMESA ), - NAME_FUNC_OFFSET( 14524, glWindowPos2sARB, _gloffset_WindowPos2sMESA ), - NAME_FUNC_OFFSET( 14541, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ), - NAME_FUNC_OFFSET( 14559, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ), - NAME_FUNC_OFFSET( 14577, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ), - NAME_FUNC_OFFSET( 14595, glWindowPos2svARB, _gloffset_WindowPos2svMESA ), - NAME_FUNC_OFFSET( 14613, glWindowPos3dARB, _gloffset_WindowPos3dMESA ), - NAME_FUNC_OFFSET( 14630, glWindowPos3fARB, _gloffset_WindowPos3fMESA ), - NAME_FUNC_OFFSET( 14647, glWindowPos3iARB, _gloffset_WindowPos3iMESA ), - NAME_FUNC_OFFSET( 14664, glWindowPos3sARB, _gloffset_WindowPos3sMESA ), - NAME_FUNC_OFFSET( 14681, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ), - NAME_FUNC_OFFSET( 14699, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ), - NAME_FUNC_OFFSET( 14717, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ), - NAME_FUNC_OFFSET( 14735, glWindowPos3svARB, _gloffset_WindowPos3svMESA ), - NAME_FUNC_OFFSET( 14753, glVertexAttrib1sARB, _gloffset_VertexAttrib1sNV ), - NAME_FUNC_OFFSET( 14773, glVertexAttrib1fARB, _gloffset_VertexAttrib1fNV ), - NAME_FUNC_OFFSET( 14793, glVertexAttrib1dARB, _gloffset_VertexAttrib1dNV ), - NAME_FUNC_OFFSET( 14813, glVertexAttrib2sARB, _gloffset_VertexAttrib2sNV ), - NAME_FUNC_OFFSET( 14833, glVertexAttrib2fARB, _gloffset_VertexAttrib2fNV ), - NAME_FUNC_OFFSET( 14853, glVertexAttrib2dARB, _gloffset_VertexAttrib2dNV ), - NAME_FUNC_OFFSET( 14873, glVertexAttrib3sARB, _gloffset_VertexAttrib3sNV ), - NAME_FUNC_OFFSET( 14893, glVertexAttrib3fARB, _gloffset_VertexAttrib3fNV ), - NAME_FUNC_OFFSET( 14913, glVertexAttrib3dARB, _gloffset_VertexAttrib3dNV ), - NAME_FUNC_OFFSET( 14933, glVertexAttrib4sARB, _gloffset_VertexAttrib4sNV ), - NAME_FUNC_OFFSET( 14953, glVertexAttrib4fARB, _gloffset_VertexAttrib4fNV ), - NAME_FUNC_OFFSET( 14973, glVertexAttrib4dARB, _gloffset_VertexAttrib4dNV ), - NAME_FUNC_OFFSET( 14993, glVertexAttrib4NubARB, _gloffset_VertexAttrib4ubNV ), - NAME_FUNC_OFFSET( 15015, glVertexAttrib1svARB, _gloffset_VertexAttrib1svNV ), - NAME_FUNC_OFFSET( 15036, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvNV ), - NAME_FUNC_OFFSET( 15057, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvNV ), - NAME_FUNC_OFFSET( 15078, glVertexAttrib2svARB, _gloffset_VertexAttrib2svNV ), - NAME_FUNC_OFFSET( 15099, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvNV ), - NAME_FUNC_OFFSET( 15120, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvNV ), - NAME_FUNC_OFFSET( 15141, glVertexAttrib3svARB, _gloffset_VertexAttrib3svNV ), - NAME_FUNC_OFFSET( 15162, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvNV ), - NAME_FUNC_OFFSET( 15183, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvNV ), - NAME_FUNC_OFFSET( 15204, glVertexAttrib4svARB, _gloffset_VertexAttrib4svNV ), - NAME_FUNC_OFFSET( 15225, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvNV ), - NAME_FUNC_OFFSET( 15246, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvNV ), - NAME_FUNC_OFFSET( 15267, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4ubvNV ), - NAME_FUNC_OFFSET( 15290, glBindProgramARB, _gloffset_BindProgramNV ), - NAME_FUNC_OFFSET( 15307, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ), - NAME_FUNC_OFFSET( 15327, glGenProgramsARB, _gloffset_GenProgramsNV ), - NAME_FUNC_OFFSET( 15344, glIsProgramARB, _gloffset_IsProgramNV ), - NAME_FUNC_OFFSET( 15359, glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvNV ), - NAME_FUNC_OFFSET( 15382, glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvNV ), - NAME_FUNC_OFFSET( 15405, glGetVertexAttribivARB, _gloffset_GetVertexAttribivNV ), - NAME_FUNC_OFFSET( 15428, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ), - NAME_FUNC_OFFSET( 15457, glBlendColorEXT, _gloffset_BlendColor ), - NAME_FUNC_OFFSET( 15473, glTexImage3DEXT, _gloffset_TexImage3D ), - NAME_FUNC_OFFSET( 15489, glTexSubImage3DEXT, _gloffset_TexSubImage3D ), - NAME_FUNC_OFFSET( 15508, glTexSubImage1DEXT, _gloffset_TexSubImage1D ), - NAME_FUNC_OFFSET( 15527, glTexSubImage2DEXT, _gloffset_TexSubImage2D ), - NAME_FUNC_OFFSET( 15546, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ), - NAME_FUNC_OFFSET( 15566, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ), - NAME_FUNC_OFFSET( 15586, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ), - NAME_FUNC_OFFSET( 15609, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ), - NAME_FUNC_OFFSET( 15632, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ), - NAME_FUNC_OFFSET( 15655, glHistogramEXT, _gloffset_Histogram ), - NAME_FUNC_OFFSET( 15670, glMinmaxEXT, _gloffset_Minmax ), - NAME_FUNC_OFFSET( 15682, glResetHistogramEXT, _gloffset_ResetHistogram ), - NAME_FUNC_OFFSET( 15702, glResetMinmaxEXT, _gloffset_ResetMinmax ), - NAME_FUNC_OFFSET( 15719, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ), - NAME_FUNC_OFFSET( 15744, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ), - NAME_FUNC_OFFSET( 15769, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ), - NAME_FUNC_OFFSET( 15796, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ), - NAME_FUNC_OFFSET( 15824, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ), - NAME_FUNC_OFFSET( 15851, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ), - NAME_FUNC_OFFSET( 15879, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ), - NAME_FUNC_OFFSET( 15908, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ), - NAME_FUNC_OFFSET( 15937, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ), - NAME_FUNC_OFFSET( 15960, glColorTableSGI, _gloffset_ColorTable ), - NAME_FUNC_OFFSET( 15976, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ), - NAME_FUNC_OFFSET( 16003, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ), - NAME_FUNC_OFFSET( 16030, glCopyColorTableSGI, _gloffset_CopyColorTable ), - NAME_FUNC_OFFSET( 16050, glBindTextureEXT, _gloffset_BindTexture ), - NAME_FUNC_OFFSET( 16067, glDeleteTexturesEXT, _gloffset_DeleteTextures ), - NAME_FUNC_OFFSET( 16087, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ), - NAME_FUNC_OFFSET( 16111, glArrayElementEXT, _gloffset_ArrayElement ), - NAME_FUNC_OFFSET( 16129, glDrawArraysEXT, _gloffset_DrawArrays ), - NAME_FUNC_OFFSET( 16145, glGetPointervEXT, _gloffset_GetPointerv ), - NAME_FUNC_OFFSET( 16162, glBlendEquationEXT, _gloffset_BlendEquation ), - NAME_FUNC_OFFSET( 16181, glColorSubTableEXT, _gloffset_ColorSubTable ), - NAME_FUNC_OFFSET( 16200, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ), - NAME_FUNC_OFFSET( 16223, glColorTableEXT, _gloffset_ColorTable ), - NAME_FUNC_OFFSET( 16239, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ), - NAME_FUNC_OFFSET( 16262, glSampleMaskEXT, _gloffset_SampleMaskSGIS ), - NAME_FUNC_OFFSET( 16278, glSamplePatternEXT, _gloffset_SamplePatternSGIS ), - NAME_FUNC_OFFSET( 16297, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ), - NAME_FUNC_OFFSET( 16324, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ), - NAME_FUNC_OFFSET( 16348, glPointParameterfSGIS, _gloffset_PointParameterfEXT ), - NAME_FUNC_OFFSET( 16370, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ), + NAME_FUNC_OFFSET( 5893, glDrawBuffersARB, _gloffset_DrawBuffersARB ), + NAME_FUNC_OFFSET( 5910, glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT ), + NAME_FUNC_OFFSET( 5929, glGetTexFilterFuncSGIS, _gloffset_GetTexFilterFuncSGIS ), + NAME_FUNC_OFFSET( 5952, glTexFilterFuncSGIS, _gloffset_TexFilterFuncSGIS ), + NAME_FUNC_OFFSET( 5972, glGetHistogramEXT, _gloffset_GetHistogramEXT ), + NAME_FUNC_OFFSET( 5990, glGetHistogramParameterfvEXT, _gloffset_GetHistogramParameterfvEXT ), + NAME_FUNC_OFFSET( 6019, glGetHistogramParameterivEXT, _gloffset_GetHistogramParameterivEXT ), + NAME_FUNC_OFFSET( 6048, glGetMinmaxEXT, _gloffset_GetMinmaxEXT ), + NAME_FUNC_OFFSET( 6063, glGetMinmaxParameterfvEXT, _gloffset_GetMinmaxParameterfvEXT ), + NAME_FUNC_OFFSET( 6089, glGetMinmaxParameterivEXT, _gloffset_GetMinmaxParameterivEXT ), + NAME_FUNC_OFFSET( 6115, glGetConvolutionFilterEXT, _gloffset_GetConvolutionFilterEXT ), + NAME_FUNC_OFFSET( 6141, glGetConvolutionParameterfvEXT, _gloffset_GetConvolutionParameterfvEXT ), + NAME_FUNC_OFFSET( 6172, glGetConvolutionParameterivEXT, _gloffset_GetConvolutionParameterivEXT ), + NAME_FUNC_OFFSET( 6203, glGetSeparableFilterEXT, _gloffset_GetSeparableFilterEXT ), + NAME_FUNC_OFFSET( 6227, glGetColorTableSGI, _gloffset_GetColorTableSGI ), + NAME_FUNC_OFFSET( 6246, glGetColorTableParameterfvSGI, _gloffset_GetColorTableParameterfvSGI ), + NAME_FUNC_OFFSET( 6276, glGetColorTableParameterivSGI, _gloffset_GetColorTableParameterivSGI ), + NAME_FUNC_OFFSET( 6306, glPixelTexGenSGIX, _gloffset_PixelTexGenSGIX ), + NAME_FUNC_OFFSET( 6324, glPixelTexGenParameteriSGIS, _gloffset_PixelTexGenParameteriSGIS ), + NAME_FUNC_OFFSET( 6352, glPixelTexGenParameterivSGIS, _gloffset_PixelTexGenParameterivSGIS ), + NAME_FUNC_OFFSET( 6381, glPixelTexGenParameterfSGIS, _gloffset_PixelTexGenParameterfSGIS ), + NAME_FUNC_OFFSET( 6409, glPixelTexGenParameterfvSGIS, _gloffset_PixelTexGenParameterfvSGIS ), + NAME_FUNC_OFFSET( 6438, glGetPixelTexGenParameterivSGIS, _gloffset_GetPixelTexGenParameterivSGIS ), + NAME_FUNC_OFFSET( 6470, glGetPixelTexGenParameterfvSGIS, _gloffset_GetPixelTexGenParameterfvSGIS ), + NAME_FUNC_OFFSET( 6502, glTexImage4DSGIS, _gloffset_TexImage4DSGIS ), + NAME_FUNC_OFFSET( 6519, glTexSubImage4DSGIS, _gloffset_TexSubImage4DSGIS ), + NAME_FUNC_OFFSET( 6539, glAreTexturesResidentEXT, _gloffset_AreTexturesResidentEXT ), + NAME_FUNC_OFFSET( 6564, glGenTexturesEXT, _gloffset_GenTexturesEXT ), + NAME_FUNC_OFFSET( 6581, glIsTextureEXT, _gloffset_IsTextureEXT ), + NAME_FUNC_OFFSET( 6596, glDetailTexFuncSGIS, _gloffset_DetailTexFuncSGIS ), + NAME_FUNC_OFFSET( 6616, glGetDetailTexFuncSGIS, _gloffset_GetDetailTexFuncSGIS ), + NAME_FUNC_OFFSET( 6639, glSharpenTexFuncSGIS, _gloffset_SharpenTexFuncSGIS ), + NAME_FUNC_OFFSET( 6660, glGetSharpenTexFuncSGIS, _gloffset_GetSharpenTexFuncSGIS ), + NAME_FUNC_OFFSET( 6684, glSampleMaskSGIS, _gloffset_SampleMaskSGIS ), + NAME_FUNC_OFFSET( 6701, glSamplePatternSGIS, _gloffset_SamplePatternSGIS ), + NAME_FUNC_OFFSET( 6721, glColorPointerEXT, _gloffset_ColorPointerEXT ), + NAME_FUNC_OFFSET( 6739, glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT ), + NAME_FUNC_OFFSET( 6760, glIndexPointerEXT, _gloffset_IndexPointerEXT ), + NAME_FUNC_OFFSET( 6778, glNormalPointerEXT, _gloffset_NormalPointerEXT ), + NAME_FUNC_OFFSET( 6797, glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT ), + NAME_FUNC_OFFSET( 6818, glVertexPointerEXT, _gloffset_VertexPointerEXT ), + NAME_FUNC_OFFSET( 6837, glSpriteParameterfSGIX, _gloffset_SpriteParameterfSGIX ), + NAME_FUNC_OFFSET( 6860, glSpriteParameterfvSGIX, _gloffset_SpriteParameterfvSGIX ), + NAME_FUNC_OFFSET( 6884, glSpriteParameteriSGIX, _gloffset_SpriteParameteriSGIX ), + NAME_FUNC_OFFSET( 6907, glSpriteParameterivSGIX, _gloffset_SpriteParameterivSGIX ), + NAME_FUNC_OFFSET( 6931, glPointParameterfEXT, _gloffset_PointParameterfEXT ), + NAME_FUNC_OFFSET( 6952, glPointParameterfvEXT, _gloffset_PointParameterfvEXT ), + NAME_FUNC_OFFSET( 6974, glGetInstrumentsSGIX, _gloffset_GetInstrumentsSGIX ), + NAME_FUNC_OFFSET( 6995, glInstrumentsBufferSGIX, _gloffset_InstrumentsBufferSGIX ), + NAME_FUNC_OFFSET( 7019, glPollInstrumentsSGIX, _gloffset_PollInstrumentsSGIX ), + NAME_FUNC_OFFSET( 7041, glReadInstrumentsSGIX, _gloffset_ReadInstrumentsSGIX ), + NAME_FUNC_OFFSET( 7063, glStartInstrumentsSGIX, _gloffset_StartInstrumentsSGIX ), + NAME_FUNC_OFFSET( 7086, glStopInstrumentsSGIX, _gloffset_StopInstrumentsSGIX ), + NAME_FUNC_OFFSET( 7108, glFrameZoomSGIX, _gloffset_FrameZoomSGIX ), + NAME_FUNC_OFFSET( 7124, glTagSampleBufferSGIX, _gloffset_TagSampleBufferSGIX ), + NAME_FUNC_OFFSET( 7146, glReferencePlaneSGIX, _gloffset_ReferencePlaneSGIX ), + NAME_FUNC_OFFSET( 7167, glFlushRasterSGIX, _gloffset_FlushRasterSGIX ), + NAME_FUNC_OFFSET( 7185, glGetListParameterfvSGIX, _gloffset_GetListParameterfvSGIX ), + NAME_FUNC_OFFSET( 7210, glGetListParameterivSGIX, _gloffset_GetListParameterivSGIX ), + NAME_FUNC_OFFSET( 7235, glListParameterfSGIX, _gloffset_ListParameterfSGIX ), + NAME_FUNC_OFFSET( 7256, glListParameterfvSGIX, _gloffset_ListParameterfvSGIX ), + NAME_FUNC_OFFSET( 7278, glListParameteriSGIX, _gloffset_ListParameteriSGIX ), + NAME_FUNC_OFFSET( 7299, glListParameterivSGIX, _gloffset_ListParameterivSGIX ), + NAME_FUNC_OFFSET( 7321, glFragmentColorMaterialSGIX, _gloffset_FragmentColorMaterialSGIX ), + NAME_FUNC_OFFSET( 7349, glFragmentLightfSGIX, _gloffset_FragmentLightfSGIX ), + NAME_FUNC_OFFSET( 7370, glFragmentLightfvSGIX, _gloffset_FragmentLightfvSGIX ), + NAME_FUNC_OFFSET( 7392, glFragmentLightiSGIX, _gloffset_FragmentLightiSGIX ), + NAME_FUNC_OFFSET( 7413, glFragmentLightivSGIX, _gloffset_FragmentLightivSGIX ), + NAME_FUNC_OFFSET( 7435, glFragmentLightModelfSGIX, _gloffset_FragmentLightModelfSGIX ), + NAME_FUNC_OFFSET( 7461, glFragmentLightModelfvSGIX, _gloffset_FragmentLightModelfvSGIX ), + NAME_FUNC_OFFSET( 7488, glFragmentLightModeliSGIX, _gloffset_FragmentLightModeliSGIX ), + NAME_FUNC_OFFSET( 7514, glFragmentLightModelivSGIX, _gloffset_FragmentLightModelivSGIX ), + NAME_FUNC_OFFSET( 7541, glFragmentMaterialfSGIX, _gloffset_FragmentMaterialfSGIX ), + NAME_FUNC_OFFSET( 7565, glFragmentMaterialfvSGIX, _gloffset_FragmentMaterialfvSGIX ), + NAME_FUNC_OFFSET( 7590, glFragmentMaterialiSGIX, _gloffset_FragmentMaterialiSGIX ), + NAME_FUNC_OFFSET( 7614, glFragmentMaterialivSGIX, _gloffset_FragmentMaterialivSGIX ), + NAME_FUNC_OFFSET( 7639, glGetFragmentLightfvSGIX, _gloffset_GetFragmentLightfvSGIX ), + NAME_FUNC_OFFSET( 7664, glGetFragmentLightivSGIX, _gloffset_GetFragmentLightivSGIX ), + NAME_FUNC_OFFSET( 7689, glGetFragmentMaterialfvSGIX, _gloffset_GetFragmentMaterialfvSGIX ), + NAME_FUNC_OFFSET( 7717, glGetFragmentMaterialivSGIX, _gloffset_GetFragmentMaterialivSGIX ), + NAME_FUNC_OFFSET( 7745, glLightEnviSGIX, _gloffset_LightEnviSGIX ), + NAME_FUNC_OFFSET( 7761, glVertexWeightfEXT, _gloffset_VertexWeightfEXT ), + NAME_FUNC_OFFSET( 7780, glVertexWeightfvEXT, _gloffset_VertexWeightfvEXT ), + NAME_FUNC_OFFSET( 7800, glVertexWeightPointerEXT, _gloffset_VertexWeightPointerEXT ), + NAME_FUNC_OFFSET( 7825, glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV ), + NAME_FUNC_OFFSET( 7851, glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV ), + NAME_FUNC_OFFSET( 7872, glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV ), + NAME_FUNC_OFFSET( 7896, glCombinerParameterfNV, _gloffset_CombinerParameterfNV ), + NAME_FUNC_OFFSET( 7919, glCombinerParameterivNV, _gloffset_CombinerParameterivNV ), + NAME_FUNC_OFFSET( 7943, glCombinerParameteriNV, _gloffset_CombinerParameteriNV ), + NAME_FUNC_OFFSET( 7966, glCombinerInputNV, _gloffset_CombinerInputNV ), + NAME_FUNC_OFFSET( 7984, glCombinerOutputNV, _gloffset_CombinerOutputNV ), + NAME_FUNC_OFFSET( 8003, glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV ), + NAME_FUNC_OFFSET( 8026, glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV ), + NAME_FUNC_OFFSET( 8058, glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV ), + NAME_FUNC_OFFSET( 8090, glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV ), + NAME_FUNC_OFFSET( 8123, glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV ), + NAME_FUNC_OFFSET( 8156, glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV ), + NAME_FUNC_OFFSET( 8193, glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV ), + NAME_FUNC_OFFSET( 8230, glResizeBuffersMESA, _gloffset_ResizeBuffersMESA ), + NAME_FUNC_OFFSET( 8250, glWindowPos2dMESA, _gloffset_WindowPos2dMESA ), + NAME_FUNC_OFFSET( 8268, glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA ), + NAME_FUNC_OFFSET( 8287, glWindowPos2fMESA, _gloffset_WindowPos2fMESA ), + NAME_FUNC_OFFSET( 8305, glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA ), + NAME_FUNC_OFFSET( 8324, glWindowPos2iMESA, _gloffset_WindowPos2iMESA ), + NAME_FUNC_OFFSET( 8342, glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA ), + NAME_FUNC_OFFSET( 8361, glWindowPos2sMESA, _gloffset_WindowPos2sMESA ), + NAME_FUNC_OFFSET( 8379, glWindowPos2svMESA, _gloffset_WindowPos2svMESA ), + NAME_FUNC_OFFSET( 8398, glWindowPos3dMESA, _gloffset_WindowPos3dMESA ), + NAME_FUNC_OFFSET( 8416, glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA ), + NAME_FUNC_OFFSET( 8435, glWindowPos3fMESA, _gloffset_WindowPos3fMESA ), + NAME_FUNC_OFFSET( 8453, glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA ), + NAME_FUNC_OFFSET( 8472, glWindowPos3iMESA, _gloffset_WindowPos3iMESA ), + NAME_FUNC_OFFSET( 8490, glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA ), + NAME_FUNC_OFFSET( 8509, glWindowPos3sMESA, _gloffset_WindowPos3sMESA ), + NAME_FUNC_OFFSET( 8527, glWindowPos3svMESA, _gloffset_WindowPos3svMESA ), + NAME_FUNC_OFFSET( 8546, glWindowPos4dMESA, _gloffset_WindowPos4dMESA ), + NAME_FUNC_OFFSET( 8564, glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA ), + NAME_FUNC_OFFSET( 8583, glWindowPos4fMESA, _gloffset_WindowPos4fMESA ), + NAME_FUNC_OFFSET( 8601, glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA ), + NAME_FUNC_OFFSET( 8620, glWindowPos4iMESA, _gloffset_WindowPos4iMESA ), + NAME_FUNC_OFFSET( 8638, glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA ), + NAME_FUNC_OFFSET( 8657, glWindowPos4sMESA, _gloffset_WindowPos4sMESA ), + NAME_FUNC_OFFSET( 8675, glWindowPos4svMESA, _gloffset_WindowPos4svMESA ), + NAME_FUNC_OFFSET( 8694, glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT ), + NAME_FUNC_OFFSET( 8717, glIndexMaterialEXT, _gloffset_IndexMaterialEXT ), + NAME_FUNC_OFFSET( 8736, glIndexFuncEXT, _gloffset_IndexFuncEXT ), + NAME_FUNC_OFFSET( 8751, glLockArraysEXT, _gloffset_LockArraysEXT ), + NAME_FUNC_OFFSET( 8767, glUnlockArraysEXT, _gloffset_UnlockArraysEXT ), + NAME_FUNC_OFFSET( 8785, glCullParameterdvEXT, _gloffset_CullParameterdvEXT ), + NAME_FUNC_OFFSET( 8806, glCullParameterfvEXT, _gloffset_CullParameterfvEXT ), + NAME_FUNC_OFFSET( 8827, glHintPGI, _gloffset_HintPGI ), + NAME_FUNC_OFFSET( 8837, glFogCoordfEXT, _gloffset_FogCoordfEXT ), + NAME_FUNC_OFFSET( 8852, glFogCoordfvEXT, _gloffset_FogCoordfvEXT ), + NAME_FUNC_OFFSET( 8868, glFogCoorddEXT, _gloffset_FogCoorddEXT ), + NAME_FUNC_OFFSET( 8883, glFogCoorddvEXT, _gloffset_FogCoorddvEXT ), + NAME_FUNC_OFFSET( 8899, glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT ), + NAME_FUNC_OFFSET( 8920, glGetColorTableEXT, _gloffset_GetColorTableEXT ), + NAME_FUNC_OFFSET( 8939, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameterivEXT ), + NAME_FUNC_OFFSET( 8969, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfvEXT ), + NAME_FUNC_OFFSET( 8999, glTbufferMask3DFX, _gloffset_TbufferMask3DFX ), + NAME_FUNC_OFFSET( 9017, glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB ), + NAME_FUNC_OFFSET( 9043, glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB ), + NAME_FUNC_OFFSET( 9069, glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB ), + NAME_FUNC_OFFSET( 9095, glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB ), + NAME_FUNC_OFFSET( 9124, glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB ), + NAME_FUNC_OFFSET( 9153, glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB ), + NAME_FUNC_OFFSET( 9182, glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB ), + NAME_FUNC_OFFSET( 9209, glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT ), + NAME_FUNC_OFFSET( 9231, glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT ), + NAME_FUNC_OFFSET( 9254, glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT ), + NAME_FUNC_OFFSET( 9276, glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT ), + NAME_FUNC_OFFSET( 9299, glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT ), + NAME_FUNC_OFFSET( 9321, glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT ), + NAME_FUNC_OFFSET( 9344, glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT ), + NAME_FUNC_OFFSET( 9366, glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT ), + NAME_FUNC_OFFSET( 9389, glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT ), + NAME_FUNC_OFFSET( 9411, glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT ), + NAME_FUNC_OFFSET( 9434, glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT ), + NAME_FUNC_OFFSET( 9457, glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT ), + NAME_FUNC_OFFSET( 9481, glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT ), + NAME_FUNC_OFFSET( 9504, glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT ), + NAME_FUNC_OFFSET( 9528, glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT ), + NAME_FUNC_OFFSET( 9551, glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT ), + NAME_FUNC_OFFSET( 9575, glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT ), + NAME_FUNC_OFFSET( 9602, glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV ), + NAME_FUNC_OFFSET( 9626, glBindProgramNV, _gloffset_BindProgramNV ), + NAME_FUNC_OFFSET( 9642, glDeleteProgramsNV, _gloffset_DeleteProgramsNV ), + NAME_FUNC_OFFSET( 9661, glExecuteProgramNV, _gloffset_ExecuteProgramNV ), + NAME_FUNC_OFFSET( 9680, glGenProgramsNV, _gloffset_GenProgramsNV ), + NAME_FUNC_OFFSET( 9696, glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV ), + NAME_FUNC_OFFSET( 9722, glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV ), + NAME_FUNC_OFFSET( 9748, glGetProgramivNV, _gloffset_GetProgramivNV ), + NAME_FUNC_OFFSET( 9765, glGetProgramStringNV, _gloffset_GetProgramStringNV ), + NAME_FUNC_OFFSET( 9786, glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV ), + NAME_FUNC_OFFSET( 9807, glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV ), + NAME_FUNC_OFFSET( 9829, glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV ), + NAME_FUNC_OFFSET( 9851, glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV ), + NAME_FUNC_OFFSET( 9873, glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV ), + NAME_FUNC_OFFSET( 9901, glIsProgramNV, _gloffset_IsProgramNV ), + NAME_FUNC_OFFSET( 9915, glLoadProgramNV, _gloffset_LoadProgramNV ), + NAME_FUNC_OFFSET( 9931, glProgramParameter4dNV, _gloffset_ProgramParameter4dNV ), + NAME_FUNC_OFFSET( 9954, glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV ), + NAME_FUNC_OFFSET( 9978, glProgramParameter4fNV, _gloffset_ProgramParameter4fNV ), + NAME_FUNC_OFFSET( 10001, glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV ), + NAME_FUNC_OFFSET( 10025, glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV ), + NAME_FUNC_OFFSET( 10050, glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV ), + NAME_FUNC_OFFSET( 10075, glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV ), + NAME_FUNC_OFFSET( 10103, glTrackMatrixNV, _gloffset_TrackMatrixNV ), + NAME_FUNC_OFFSET( 10119, glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV ), + NAME_FUNC_OFFSET( 10143, glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV ), + NAME_FUNC_OFFSET( 10162, glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV ), + NAME_FUNC_OFFSET( 10182, glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV ), + NAME_FUNC_OFFSET( 10201, glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV ), + NAME_FUNC_OFFSET( 10221, glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV ), + NAME_FUNC_OFFSET( 10240, glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV ), + NAME_FUNC_OFFSET( 10260, glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV ), + NAME_FUNC_OFFSET( 10279, glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV ), + NAME_FUNC_OFFSET( 10299, glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV ), + NAME_FUNC_OFFSET( 10318, glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV ), + NAME_FUNC_OFFSET( 10338, glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV ), + NAME_FUNC_OFFSET( 10357, glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV ), + NAME_FUNC_OFFSET( 10377, glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV ), + NAME_FUNC_OFFSET( 10396, glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV ), + NAME_FUNC_OFFSET( 10416, glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV ), + NAME_FUNC_OFFSET( 10435, glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV ), + NAME_FUNC_OFFSET( 10455, glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV ), + NAME_FUNC_OFFSET( 10474, glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV ), + NAME_FUNC_OFFSET( 10494, glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV ), + NAME_FUNC_OFFSET( 10513, glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV ), + NAME_FUNC_OFFSET( 10533, glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV ), + NAME_FUNC_OFFSET( 10552, glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV ), + NAME_FUNC_OFFSET( 10572, glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV ), + NAME_FUNC_OFFSET( 10591, glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV ), + NAME_FUNC_OFFSET( 10611, glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV ), + NAME_FUNC_OFFSET( 10631, glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV ), + NAME_FUNC_OFFSET( 10652, glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV ), + NAME_FUNC_OFFSET( 10673, glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV ), + NAME_FUNC_OFFSET( 10694, glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV ), + NAME_FUNC_OFFSET( 10715, glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV ), + NAME_FUNC_OFFSET( 10736, glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV ), + NAME_FUNC_OFFSET( 10757, glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV ), + NAME_FUNC_OFFSET( 10778, glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV ), + NAME_FUNC_OFFSET( 10799, glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV ), + NAME_FUNC_OFFSET( 10820, glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV ), + NAME_FUNC_OFFSET( 10841, glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV ), + NAME_FUNC_OFFSET( 10862, glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV ), + NAME_FUNC_OFFSET( 10883, glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV ), + NAME_FUNC_OFFSET( 10904, glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV ), + NAME_FUNC_OFFSET( 10926, glPointParameteriNV, _gloffset_PointParameteriNV ), + NAME_FUNC_OFFSET( 10946, glPointParameterivNV, _gloffset_PointParameterivNV ), + NAME_FUNC_OFFSET( 10967, glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT ), + NAME_FUNC_OFFSET( 10988, glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT ), + NAME_FUNC_OFFSET( 11011, glActiveStencilFaceEXT, _gloffset_ActiveStencilFaceEXT ), + NAME_FUNC_OFFSET( 11034, glDeleteFencesNV, _gloffset_DeleteFencesNV ), + NAME_FUNC_OFFSET( 11051, glGenFencesNV, _gloffset_GenFencesNV ), + NAME_FUNC_OFFSET( 11065, glIsFenceNV, _gloffset_IsFenceNV ), + NAME_FUNC_OFFSET( 11077, glTestFenceNV, _gloffset_TestFenceNV ), + NAME_FUNC_OFFSET( 11091, glGetFenceivNV, _gloffset_GetFenceivNV ), + NAME_FUNC_OFFSET( 11106, glFinishFenceNV, _gloffset_FinishFenceNV ), + NAME_FUNC_OFFSET( 11122, glSetFenceNV, _gloffset_SetFenceNV ), + NAME_FUNC_OFFSET( 11135, glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB ), + NAME_FUNC_OFFSET( 11156, glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB ), + NAME_FUNC_OFFSET( 11177, glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB ), + NAME_FUNC_OFFSET( 11199, glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB ), + NAME_FUNC_OFFSET( 11221, glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB ), + NAME_FUNC_OFFSET( 11243, glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB ), + NAME_FUNC_OFFSET( 11265, glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB ), + NAME_FUNC_OFFSET( 11287, glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB ), + NAME_FUNC_OFFSET( 11309, glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB ), + NAME_FUNC_OFFSET( 11332, glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB ), + NAME_FUNC_OFFSET( 11355, glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB ), + NAME_FUNC_OFFSET( 11380, glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB ), + NAME_FUNC_OFFSET( 11409, glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB ), + NAME_FUNC_OFFSET( 11439, glProgramStringARB, _gloffset_ProgramStringARB ), + NAME_FUNC_OFFSET( 11458, glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB ), + NAME_FUNC_OFFSET( 11485, glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB ), + NAME_FUNC_OFFSET( 11513, glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB ), + NAME_FUNC_OFFSET( 11540, glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB ), + NAME_FUNC_OFFSET( 11568, glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB ), + NAME_FUNC_OFFSET( 11597, glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB ), + NAME_FUNC_OFFSET( 11627, glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB ), + NAME_FUNC_OFFSET( 11656, glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB ), + NAME_FUNC_OFFSET( 11686, glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB ), + NAME_FUNC_OFFSET( 11716, glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB ), + NAME_FUNC_OFFSET( 11746, glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB ), + NAME_FUNC_OFFSET( 11778, glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB ), + NAME_FUNC_OFFSET( 11810, glGetProgramivARB, _gloffset_GetProgramivARB ), + NAME_FUNC_OFFSET( 11828, glGetProgramStringARB, _gloffset_GetProgramStringARB ), + NAME_FUNC_OFFSET( 11850, glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV ), + NAME_FUNC_OFFSET( 11878, glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV ), + NAME_FUNC_OFFSET( 11906, glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV ), + NAME_FUNC_OFFSET( 11935, glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV ), + NAME_FUNC_OFFSET( 11964, glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV ), + NAME_FUNC_OFFSET( 11995, glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV ), + NAME_FUNC_OFFSET( 12026, glBindBufferARB, _gloffset_BindBufferARB ), + NAME_FUNC_OFFSET( 12042, glBufferDataARB, _gloffset_BufferDataARB ), + NAME_FUNC_OFFSET( 12058, glBufferSubDataARB, _gloffset_BufferSubDataARB ), + NAME_FUNC_OFFSET( 12077, glDeleteBuffersARB, _gloffset_DeleteBuffersARB ), + NAME_FUNC_OFFSET( 12096, glGenBuffersARB, _gloffset_GenBuffersARB ), + NAME_FUNC_OFFSET( 12112, glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB ), + NAME_FUNC_OFFSET( 12138, glGetBufferPointervARB, _gloffset_GetBufferPointervARB ), + NAME_FUNC_OFFSET( 12161, glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB ), + NAME_FUNC_OFFSET( 12183, glIsBufferARB, _gloffset_IsBufferARB ), + NAME_FUNC_OFFSET( 12197, glMapBufferARB, _gloffset_MapBufferARB ), + NAME_FUNC_OFFSET( 12212, glUnmapBufferARB, _gloffset_UnmapBufferARB ), + NAME_FUNC_OFFSET( 12229, glDepthBoundsEXT, _gloffset_DepthBoundsEXT ), + NAME_FUNC_OFFSET( 12246, glGenQueriesARB, _gloffset_GenQueriesARB ), + NAME_FUNC_OFFSET( 12262, glDeleteQueriesARB, _gloffset_DeleteQueriesARB ), + NAME_FUNC_OFFSET( 12281, glIsQueryARB, _gloffset_IsQueryARB ), + NAME_FUNC_OFFSET( 12294, glBeginQueryARB, _gloffset_BeginQueryARB ), + NAME_FUNC_OFFSET( 12310, glEndQueryARB, _gloffset_EndQueryARB ), + NAME_FUNC_OFFSET( 12324, glGetQueryivARB, _gloffset_GetQueryivARB ), + NAME_FUNC_OFFSET( 12340, glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB ), + NAME_FUNC_OFFSET( 12362, glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB ), + NAME_FUNC_OFFSET( 12385, glMultiModeDrawArraysIBM, _gloffset_MultiModeDrawArraysIBM ), + NAME_FUNC_OFFSET( 12410, glMultiModeDrawElementsIBM, _gloffset_MultiModeDrawElementsIBM ), + NAME_FUNC_OFFSET( 12437, glBlendEquationSeparateEXT, _gloffset_BlendEquationSeparateEXT ), + NAME_FUNC_OFFSET( 12464, glActiveTexture, _gloffset_ActiveTextureARB ), + NAME_FUNC_OFFSET( 12480, glClientActiveTexture, _gloffset_ClientActiveTextureARB ), + NAME_FUNC_OFFSET( 12502, glMultiTexCoord1d, _gloffset_MultiTexCoord1dARB ), + NAME_FUNC_OFFSET( 12520, glMultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB ), + NAME_FUNC_OFFSET( 12539, glMultiTexCoord1f, _gloffset_MultiTexCoord1fARB ), + NAME_FUNC_OFFSET( 12557, glMultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB ), + NAME_FUNC_OFFSET( 12576, glMultiTexCoord1i, _gloffset_MultiTexCoord1iARB ), + NAME_FUNC_OFFSET( 12594, glMultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB ), + NAME_FUNC_OFFSET( 12613, glMultiTexCoord1s, _gloffset_MultiTexCoord1sARB ), + NAME_FUNC_OFFSET( 12631, glMultiTexCoord1sv, _gloffset_MultiTexCoord1svARB ), + NAME_FUNC_OFFSET( 12650, glMultiTexCoord2d, _gloffset_MultiTexCoord2dARB ), + NAME_FUNC_OFFSET( 12668, glMultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB ), + NAME_FUNC_OFFSET( 12687, glMultiTexCoord2f, _gloffset_MultiTexCoord2fARB ), + NAME_FUNC_OFFSET( 12705, glMultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB ), + NAME_FUNC_OFFSET( 12724, glMultiTexCoord2i, _gloffset_MultiTexCoord2iARB ), + NAME_FUNC_OFFSET( 12742, glMultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB ), + NAME_FUNC_OFFSET( 12761, glMultiTexCoord2s, _gloffset_MultiTexCoord2sARB ), + NAME_FUNC_OFFSET( 12779, glMultiTexCoord2sv, _gloffset_MultiTexCoord2svARB ), + NAME_FUNC_OFFSET( 12798, glMultiTexCoord3d, _gloffset_MultiTexCoord3dARB ), + NAME_FUNC_OFFSET( 12816, glMultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB ), + NAME_FUNC_OFFSET( 12835, glMultiTexCoord3f, _gloffset_MultiTexCoord3fARB ), + NAME_FUNC_OFFSET( 12853, glMultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB ), + NAME_FUNC_OFFSET( 12872, glMultiTexCoord3i, _gloffset_MultiTexCoord3iARB ), + NAME_FUNC_OFFSET( 12890, glMultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB ), + NAME_FUNC_OFFSET( 12909, glMultiTexCoord3s, _gloffset_MultiTexCoord3sARB ), + NAME_FUNC_OFFSET( 12927, glMultiTexCoord3sv, _gloffset_MultiTexCoord3svARB ), + NAME_FUNC_OFFSET( 12946, glMultiTexCoord4d, _gloffset_MultiTexCoord4dARB ), + NAME_FUNC_OFFSET( 12964, glMultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB ), + NAME_FUNC_OFFSET( 12983, glMultiTexCoord4f, _gloffset_MultiTexCoord4fARB ), + NAME_FUNC_OFFSET( 13001, glMultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB ), + NAME_FUNC_OFFSET( 13020, glMultiTexCoord4i, _gloffset_MultiTexCoord4iARB ), + NAME_FUNC_OFFSET( 13038, glMultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB ), + NAME_FUNC_OFFSET( 13057, glMultiTexCoord4s, _gloffset_MultiTexCoord4sARB ), + NAME_FUNC_OFFSET( 13075, glMultiTexCoord4sv, _gloffset_MultiTexCoord4svARB ), + NAME_FUNC_OFFSET( 13094, glLoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB ), + NAME_FUNC_OFFSET( 13117, glLoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB ), + NAME_FUNC_OFFSET( 13140, glMultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB ), + NAME_FUNC_OFFSET( 13163, glMultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB ), + NAME_FUNC_OFFSET( 13186, glSampleCoverage, _gloffset_SampleCoverageARB ), + NAME_FUNC_OFFSET( 13203, glCompressedTexImage3D, _gloffset_CompressedTexImage3DARB ), + NAME_FUNC_OFFSET( 13226, glCompressedTexImage2D, _gloffset_CompressedTexImage2DARB ), + NAME_FUNC_OFFSET( 13249, glCompressedTexImage1D, _gloffset_CompressedTexImage1DARB ), + NAME_FUNC_OFFSET( 13272, glCompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB ), + NAME_FUNC_OFFSET( 13298, glCompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB ), + NAME_FUNC_OFFSET( 13324, glCompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB ), + NAME_FUNC_OFFSET( 13350, glGetCompressedTexImage, _gloffset_GetCompressedTexImageARB ), + NAME_FUNC_OFFSET( 13374, glBlendFuncSeparate, _gloffset_BlendFuncSeparateEXT ), + NAME_FUNC_OFFSET( 13394, glFogCoordf, _gloffset_FogCoordfEXT ), + NAME_FUNC_OFFSET( 13406, glFogCoordfv, _gloffset_FogCoordfvEXT ), + NAME_FUNC_OFFSET( 13419, glFogCoordd, _gloffset_FogCoorddEXT ), + NAME_FUNC_OFFSET( 13431, glFogCoorddv, _gloffset_FogCoorddvEXT ), + NAME_FUNC_OFFSET( 13444, glFogCoordPointer, _gloffset_FogCoordPointerEXT ), + NAME_FUNC_OFFSET( 13462, glMultiDrawArrays, _gloffset_MultiDrawArraysEXT ), + NAME_FUNC_OFFSET( 13480, glMultiDrawElements, _gloffset_MultiDrawElementsEXT ), + NAME_FUNC_OFFSET( 13500, glPointParameterf, _gloffset_PointParameterfEXT ), + NAME_FUNC_OFFSET( 13518, glPointParameterfv, _gloffset_PointParameterfvEXT ), + NAME_FUNC_OFFSET( 13537, glPointParameteri, _gloffset_PointParameteriNV ), + NAME_FUNC_OFFSET( 13555, glPointParameteriv, _gloffset_PointParameterivNV ), + NAME_FUNC_OFFSET( 13574, glSecondaryColor3b, _gloffset_SecondaryColor3bEXT ), + NAME_FUNC_OFFSET( 13593, glSecondaryColor3bv, _gloffset_SecondaryColor3bvEXT ), + NAME_FUNC_OFFSET( 13613, glSecondaryColor3d, _gloffset_SecondaryColor3dEXT ), + NAME_FUNC_OFFSET( 13632, glSecondaryColor3dv, _gloffset_SecondaryColor3dvEXT ), + NAME_FUNC_OFFSET( 13652, glSecondaryColor3f, _gloffset_SecondaryColor3fEXT ), + NAME_FUNC_OFFSET( 13671, glSecondaryColor3fv, _gloffset_SecondaryColor3fvEXT ), + NAME_FUNC_OFFSET( 13691, glSecondaryColor3i, _gloffset_SecondaryColor3iEXT ), + NAME_FUNC_OFFSET( 13710, glSecondaryColor3iv, _gloffset_SecondaryColor3ivEXT ), + NAME_FUNC_OFFSET( 13730, glSecondaryColor3s, _gloffset_SecondaryColor3sEXT ), + NAME_FUNC_OFFSET( 13749, glSecondaryColor3sv, _gloffset_SecondaryColor3svEXT ), + NAME_FUNC_OFFSET( 13769, glSecondaryColor3ub, _gloffset_SecondaryColor3ubEXT ), + NAME_FUNC_OFFSET( 13789, glSecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT ), + NAME_FUNC_OFFSET( 13810, glSecondaryColor3ui, _gloffset_SecondaryColor3uiEXT ), + NAME_FUNC_OFFSET( 13830, glSecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT ), + NAME_FUNC_OFFSET( 13851, glSecondaryColor3us, _gloffset_SecondaryColor3usEXT ), + NAME_FUNC_OFFSET( 13871, glSecondaryColor3usv, _gloffset_SecondaryColor3usvEXT ), + NAME_FUNC_OFFSET( 13892, glSecondaryColorPointer, _gloffset_SecondaryColorPointerEXT ), + NAME_FUNC_OFFSET( 13916, glWindowPos2d, _gloffset_WindowPos2dMESA ), + NAME_FUNC_OFFSET( 13930, glWindowPos2dv, _gloffset_WindowPos2dvMESA ), + NAME_FUNC_OFFSET( 13945, glWindowPos2f, _gloffset_WindowPos2fMESA ), + NAME_FUNC_OFFSET( 13959, glWindowPos2fv, _gloffset_WindowPos2fvMESA ), + NAME_FUNC_OFFSET( 13974, glWindowPos2i, _gloffset_WindowPos2iMESA ), + NAME_FUNC_OFFSET( 13988, glWindowPos2iv, _gloffset_WindowPos2ivMESA ), + NAME_FUNC_OFFSET( 14003, glWindowPos2s, _gloffset_WindowPos2sMESA ), + NAME_FUNC_OFFSET( 14017, glWindowPos2sv, _gloffset_WindowPos2svMESA ), + NAME_FUNC_OFFSET( 14032, glWindowPos3d, _gloffset_WindowPos3dMESA ), + NAME_FUNC_OFFSET( 14046, glWindowPos3dv, _gloffset_WindowPos3dvMESA ), + NAME_FUNC_OFFSET( 14061, glWindowPos3f, _gloffset_WindowPos3fMESA ), + NAME_FUNC_OFFSET( 14075, glWindowPos3fv, _gloffset_WindowPos3fvMESA ), + NAME_FUNC_OFFSET( 14090, glWindowPos3i, _gloffset_WindowPos3iMESA ), + NAME_FUNC_OFFSET( 14104, glWindowPos3iv, _gloffset_WindowPos3ivMESA ), + NAME_FUNC_OFFSET( 14119, glWindowPos3s, _gloffset_WindowPos3sMESA ), + NAME_FUNC_OFFSET( 14133, glWindowPos3sv, _gloffset_WindowPos3svMESA ), + NAME_FUNC_OFFSET( 14148, glBindBuffer, _gloffset_BindBufferARB ), + NAME_FUNC_OFFSET( 14161, glBufferData, _gloffset_BufferDataARB ), + NAME_FUNC_OFFSET( 14174, glBufferSubData, _gloffset_BufferSubDataARB ), + NAME_FUNC_OFFSET( 14190, glDeleteBuffers, _gloffset_DeleteBuffersARB ), + NAME_FUNC_OFFSET( 14206, glGenBuffers, _gloffset_GenBuffersARB ), + NAME_FUNC_OFFSET( 14219, glGetBufferParameteriv, _gloffset_GetBufferParameterivARB ), + NAME_FUNC_OFFSET( 14242, glGetBufferPointerv, _gloffset_GetBufferPointervARB ), + NAME_FUNC_OFFSET( 14262, glGetBufferSubData, _gloffset_GetBufferSubDataARB ), + NAME_FUNC_OFFSET( 14281, glIsBuffer, _gloffset_IsBufferARB ), + NAME_FUNC_OFFSET( 14292, glMapBuffer, _gloffset_MapBufferARB ), + NAME_FUNC_OFFSET( 14304, glUnmapBuffer, _gloffset_UnmapBufferARB ), + NAME_FUNC_OFFSET( 14318, glGenQueries, _gloffset_GenQueriesARB ), + NAME_FUNC_OFFSET( 14331, glDeleteQueries, _gloffset_DeleteQueriesARB ), + NAME_FUNC_OFFSET( 14347, glIsQuery, _gloffset_IsQueryARB ), + NAME_FUNC_OFFSET( 14357, glBeginQuery, _gloffset_BeginQueryARB ), + NAME_FUNC_OFFSET( 14370, glEndQuery, _gloffset_EndQueryARB ), + NAME_FUNC_OFFSET( 14381, glGetQueryiv, _gloffset_GetQueryivARB ), + NAME_FUNC_OFFSET( 14394, glGetQueryObjectiv, _gloffset_GetQueryObjectivARB ), + NAME_FUNC_OFFSET( 14413, glGetQueryObjectuiv, _gloffset_GetQueryObjectuivARB ), + NAME_FUNC_OFFSET( 14433, glPointParameterfARB, _gloffset_PointParameterfEXT ), + NAME_FUNC_OFFSET( 14454, glPointParameterfvARB, _gloffset_PointParameterfvEXT ), + NAME_FUNC_OFFSET( 14476, glWindowPos2dARB, _gloffset_WindowPos2dMESA ), + NAME_FUNC_OFFSET( 14493, glWindowPos2fARB, _gloffset_WindowPos2fMESA ), + NAME_FUNC_OFFSET( 14510, glWindowPos2iARB, _gloffset_WindowPos2iMESA ), + NAME_FUNC_OFFSET( 14527, glWindowPos2sARB, _gloffset_WindowPos2sMESA ), + NAME_FUNC_OFFSET( 14544, glWindowPos2dvARB, _gloffset_WindowPos2dvMESA ), + NAME_FUNC_OFFSET( 14562, glWindowPos2fvARB, _gloffset_WindowPos2fvMESA ), + NAME_FUNC_OFFSET( 14580, glWindowPos2ivARB, _gloffset_WindowPos2ivMESA ), + NAME_FUNC_OFFSET( 14598, glWindowPos2svARB, _gloffset_WindowPos2svMESA ), + NAME_FUNC_OFFSET( 14616, glWindowPos3dARB, _gloffset_WindowPos3dMESA ), + NAME_FUNC_OFFSET( 14633, glWindowPos3fARB, _gloffset_WindowPos3fMESA ), + NAME_FUNC_OFFSET( 14650, glWindowPos3iARB, _gloffset_WindowPos3iMESA ), + NAME_FUNC_OFFSET( 14667, glWindowPos3sARB, _gloffset_WindowPos3sMESA ), + NAME_FUNC_OFFSET( 14684, glWindowPos3dvARB, _gloffset_WindowPos3dvMESA ), + NAME_FUNC_OFFSET( 14702, glWindowPos3fvARB, _gloffset_WindowPos3fvMESA ), + NAME_FUNC_OFFSET( 14720, glWindowPos3ivARB, _gloffset_WindowPos3ivMESA ), + NAME_FUNC_OFFSET( 14738, glWindowPos3svARB, _gloffset_WindowPos3svMESA ), + NAME_FUNC_OFFSET( 14756, glVertexAttrib1sARB, _gloffset_VertexAttrib1sNV ), + NAME_FUNC_OFFSET( 14776, glVertexAttrib1fARB, _gloffset_VertexAttrib1fNV ), + NAME_FUNC_OFFSET( 14796, glVertexAttrib1dARB, _gloffset_VertexAttrib1dNV ), + NAME_FUNC_OFFSET( 14816, glVertexAttrib2sARB, _gloffset_VertexAttrib2sNV ), + NAME_FUNC_OFFSET( 14836, glVertexAttrib2fARB, _gloffset_VertexAttrib2fNV ), + NAME_FUNC_OFFSET( 14856, glVertexAttrib2dARB, _gloffset_VertexAttrib2dNV ), + NAME_FUNC_OFFSET( 14876, glVertexAttrib3sARB, _gloffset_VertexAttrib3sNV ), + NAME_FUNC_OFFSET( 14896, glVertexAttrib3fARB, _gloffset_VertexAttrib3fNV ), + NAME_FUNC_OFFSET( 14916, glVertexAttrib3dARB, _gloffset_VertexAttrib3dNV ), + NAME_FUNC_OFFSET( 14936, glVertexAttrib4sARB, _gloffset_VertexAttrib4sNV ), + NAME_FUNC_OFFSET( 14956, glVertexAttrib4fARB, _gloffset_VertexAttrib4fNV ), + NAME_FUNC_OFFSET( 14976, glVertexAttrib4dARB, _gloffset_VertexAttrib4dNV ), + NAME_FUNC_OFFSET( 14996, glVertexAttrib4NubARB, _gloffset_VertexAttrib4ubNV ), + NAME_FUNC_OFFSET( 15018, glVertexAttrib1svARB, _gloffset_VertexAttrib1svNV ), + NAME_FUNC_OFFSET( 15039, glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvNV ), + NAME_FUNC_OFFSET( 15060, glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvNV ), + NAME_FUNC_OFFSET( 15081, glVertexAttrib2svARB, _gloffset_VertexAttrib2svNV ), + NAME_FUNC_OFFSET( 15102, glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvNV ), + NAME_FUNC_OFFSET( 15123, glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvNV ), + NAME_FUNC_OFFSET( 15144, glVertexAttrib3svARB, _gloffset_VertexAttrib3svNV ), + NAME_FUNC_OFFSET( 15165, glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvNV ), + NAME_FUNC_OFFSET( 15186, glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvNV ), + NAME_FUNC_OFFSET( 15207, glVertexAttrib4svARB, _gloffset_VertexAttrib4svNV ), + NAME_FUNC_OFFSET( 15228, glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvNV ), + NAME_FUNC_OFFSET( 15249, glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvNV ), + NAME_FUNC_OFFSET( 15270, glVertexAttrib4NubvARB, _gloffset_VertexAttrib4ubvNV ), + NAME_FUNC_OFFSET( 15293, glBindProgramARB, _gloffset_BindProgramNV ), + NAME_FUNC_OFFSET( 15310, glDeleteProgramsARB, _gloffset_DeleteProgramsNV ), + NAME_FUNC_OFFSET( 15330, glGenProgramsARB, _gloffset_GenProgramsNV ), + NAME_FUNC_OFFSET( 15347, glIsProgramARB, _gloffset_IsProgramNV ), + NAME_FUNC_OFFSET( 15362, glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvNV ), + NAME_FUNC_OFFSET( 15385, glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvNV ), + NAME_FUNC_OFFSET( 15408, glGetVertexAttribivARB, _gloffset_GetVertexAttribivNV ), + NAME_FUNC_OFFSET( 15431, glGetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV ), + NAME_FUNC_OFFSET( 15460, glBlendColorEXT, _gloffset_BlendColor ), + NAME_FUNC_OFFSET( 15476, glTexImage3DEXT, _gloffset_TexImage3D ), + NAME_FUNC_OFFSET( 15492, glTexSubImage3DEXT, _gloffset_TexSubImage3D ), + NAME_FUNC_OFFSET( 15511, glTexSubImage1DEXT, _gloffset_TexSubImage1D ), + NAME_FUNC_OFFSET( 15530, glTexSubImage2DEXT, _gloffset_TexSubImage2D ), + NAME_FUNC_OFFSET( 15549, glCopyTexImage1DEXT, _gloffset_CopyTexImage1D ), + NAME_FUNC_OFFSET( 15569, glCopyTexImage2DEXT, _gloffset_CopyTexImage2D ), + NAME_FUNC_OFFSET( 15589, glCopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D ), + NAME_FUNC_OFFSET( 15612, glCopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D ), + NAME_FUNC_OFFSET( 15635, glCopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D ), + NAME_FUNC_OFFSET( 15658, glHistogramEXT, _gloffset_Histogram ), + NAME_FUNC_OFFSET( 15673, glMinmaxEXT, _gloffset_Minmax ), + NAME_FUNC_OFFSET( 15685, glResetHistogramEXT, _gloffset_ResetHistogram ), + NAME_FUNC_OFFSET( 15705, glResetMinmaxEXT, _gloffset_ResetMinmax ), + NAME_FUNC_OFFSET( 15722, glConvolutionFilter1DEXT, _gloffset_ConvolutionFilter1D ), + NAME_FUNC_OFFSET( 15747, glConvolutionFilter2DEXT, _gloffset_ConvolutionFilter2D ), + NAME_FUNC_OFFSET( 15772, glConvolutionParameterfEXT, _gloffset_ConvolutionParameterf ), + NAME_FUNC_OFFSET( 15799, glConvolutionParameterfvEXT, _gloffset_ConvolutionParameterfv ), + NAME_FUNC_OFFSET( 15827, glConvolutionParameteriEXT, _gloffset_ConvolutionParameteri ), + NAME_FUNC_OFFSET( 15854, glConvolutionParameterivEXT, _gloffset_ConvolutionParameteriv ), + NAME_FUNC_OFFSET( 15882, glCopyConvolutionFilter1DEXT, _gloffset_CopyConvolutionFilter1D ), + NAME_FUNC_OFFSET( 15911, glCopyConvolutionFilter2DEXT, _gloffset_CopyConvolutionFilter2D ), + NAME_FUNC_OFFSET( 15940, glSeparableFilter2DEXT, _gloffset_SeparableFilter2D ), + NAME_FUNC_OFFSET( 15963, glColorTableSGI, _gloffset_ColorTable ), + NAME_FUNC_OFFSET( 15979, glColorTableParameterfvSGI, _gloffset_ColorTableParameterfv ), + NAME_FUNC_OFFSET( 16006, glColorTableParameterivSGI, _gloffset_ColorTableParameteriv ), + NAME_FUNC_OFFSET( 16033, glCopyColorTableSGI, _gloffset_CopyColorTable ), + NAME_FUNC_OFFSET( 16053, glBindTextureEXT, _gloffset_BindTexture ), + NAME_FUNC_OFFSET( 16070, glDeleteTexturesEXT, _gloffset_DeleteTextures ), + NAME_FUNC_OFFSET( 16090, glPrioritizeTexturesEXT, _gloffset_PrioritizeTextures ), + NAME_FUNC_OFFSET( 16114, glArrayElementEXT, _gloffset_ArrayElement ), + NAME_FUNC_OFFSET( 16132, glDrawArraysEXT, _gloffset_DrawArrays ), + NAME_FUNC_OFFSET( 16148, glGetPointervEXT, _gloffset_GetPointerv ), + NAME_FUNC_OFFSET( 16165, glBlendEquationEXT, _gloffset_BlendEquation ), + NAME_FUNC_OFFSET( 16184, glColorSubTableEXT, _gloffset_ColorSubTable ), + NAME_FUNC_OFFSET( 16203, glCopyColorSubTableEXT, _gloffset_CopyColorSubTable ), + NAME_FUNC_OFFSET( 16226, glColorTableEXT, _gloffset_ColorTable ), + NAME_FUNC_OFFSET( 16242, glDrawRangeElementsEXT, _gloffset_DrawRangeElements ), + NAME_FUNC_OFFSET( 16265, glSampleMaskEXT, _gloffset_SampleMaskSGIS ), + NAME_FUNC_OFFSET( 16281, glSamplePatternEXT, _gloffset_SamplePatternSGIS ), + NAME_FUNC_OFFSET( 16300, glDrawBuffersATI, _gloffset_DrawBuffersARB ), + NAME_FUNC_OFFSET( 16317, glBlendEquationSeparateATI, _gloffset_BlendEquationSeparateEXT ), + NAME_FUNC_OFFSET( 16344, glBlendFuncSeparateINGR, _gloffset_BlendFuncSeparateEXT ), + NAME_FUNC_OFFSET( 16368, glPointParameterfSGIS, _gloffset_PointParameterfEXT ), + NAME_FUNC_OFFSET( 16390, glPointParameterfvSGIS, _gloffset_PointParameterfvEXT ), NAME_FUNC_OFFSET( -1, NULL, -1 ) }; diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 1f490540d8..37fcef5113 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.2 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -830,7 +830,8 @@ _mesa_PopAttrib(void) (GLboolean) (color->ColorMask[1] != 0), (GLboolean) (color->ColorMask[2] != 0), (GLboolean) (color->ColorMask[3] != 0)); - _mesa_DrawBuffer(color->DrawBuffer); + _mesa_DrawBuffersARB(ctx->Const.MaxDrawBuffers, + color->DrawBuffer); _mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled); _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef); _mesa_set_enable(ctx, GL_BLEND, color->BlendEnabled); @@ -928,9 +929,8 @@ _mesa_PopAttrib(void) /* lighting enable */ _mesa_set_enable(ctx, GL_LIGHTING, light->Enabled); /* per-light state */ - - if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) - _math_matrix_analyse( ctx->ModelviewMatrixStack.Top ); + if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) + _math_matrix_analyse( ctx->ModelviewMatrixStack.Top ); for (i = 0; i < MAX_LIGHTS; i++) { GLenum lgt = (GLenum) (GL_LIGHT0 + i); @@ -1079,7 +1079,6 @@ _mesa_PopAttrib(void) const struct gl_transform_attrib *xform; xform = (const struct gl_transform_attrib *) attr->data; _mesa_MatrixMode(xform->MatrixMode); - if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY) _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c index fde542c4b9..0257528581 100644 --- a/src/mesa/main/blend.c +++ b/src/mesa/main/blend.c @@ -549,7 +549,6 @@ void _mesa_init_color( GLcontext * ctx ) ctx->Color.ColorMask[3] = 0xff; ctx->Color.ClearIndex = 0; ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 ); - ctx->Color.DrawBuffer = GL_FRONT; ctx->Color.AlphaEnabled = GL_FALSE; ctx->Color.AlphaFunc = GL_ALWAYS; ctx->Color.AlphaRef = 0; @@ -568,12 +567,12 @@ void _mesa_init_color( GLcontext * ctx ) ctx->Color.DitherFlag = GL_TRUE; if (ctx->Visual.doubleBufferMode) { - ctx->Color.DrawBuffer = GL_BACK; - ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT; + ctx->Color.DrawBuffer[0] = GL_BACK; + ctx->Color._DrawDestMask[0] = DD_BACK_LEFT_BIT; } else { - ctx->Color.DrawBuffer = GL_FRONT; - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT; + ctx->Color.DrawBuffer[0] = GL_FRONT; + ctx->Color._DrawDestMask[0] = DD_FRONT_LEFT_BIT; } } diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index 4c5c077669..35e03d7eb5 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -149,7 +149,7 @@ _mesa_Clear( GLbitfield mask ) */ ddMask = 0; if (mask & GL_COLOR_BUFFER_BIT) - ddMask |= ctx->Color._DrawDestMask; + ddMask |= ctx->Color._DrawDestMask[0]; if ((mask & GL_DEPTH_BUFFER_BIT) && ctx->Visual.depthBits > 0) ddMask |= GL_DEPTH_BUFFER_BIT; if ((mask & GL_STENCIL_BUFFER_BIT) && ctx->Visual.stencilBits > 0) @@ -164,6 +164,121 @@ _mesa_Clear( GLbitfield mask ) } + +/** + * Return bitmask of DD_* flags indicating which color buffers are + * available to the rendering context; + */ +static GLuint +supported_buffer_bitmask(const GLcontext *ctx) +{ + GLuint mask = DD_FRONT_LEFT_BIT; /* always have this */ + GLuint i; + + if (ctx->Visual.stereoMode) { + mask |= DD_FRONT_RIGHT_BIT; + if (ctx->Visual.doubleBufferMode) { + mask |= DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT; + } + } + else if (ctx->Visual.doubleBufferMode) { + mask |= DD_BACK_LEFT_BIT; + } + + for (i = 0; i < ctx->Visual.numAuxBuffers; i++) { + mask |= (DD_AUX0_BIT << i); + } + + return mask; +} + + +/** + * Helper routine used by glDrawBuffer and glDrawBuffersARB. + * Given a GLenum naming (a) color buffer(s), return the corresponding + * bitmask of DD_* flags. + */ +static GLuint +draw_buffer_enum_to_bitmask(GLenum buffer) +{ + switch (buffer) { + case GL_FRONT: + return DD_FRONT_LEFT_BIT | DD_FRONT_RIGHT_BIT; + case GL_BACK: + return DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT; + case GL_NONE: + return 0; + case GL_RIGHT: + return DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT; + case GL_FRONT_RIGHT: + return DD_FRONT_RIGHT_BIT; + case GL_BACK_RIGHT: + return DD_BACK_RIGHT_BIT; + case GL_BACK_LEFT: + return DD_BACK_LEFT_BIT; + case GL_FRONT_AND_BACK: + return DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT + | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT; + case GL_LEFT: + return DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT; + case GL_FRONT_LEFT: + return DD_FRONT_LEFT_BIT; + case GL_AUX0: + return DD_AUX0_BIT; + case GL_AUX1: + return DD_AUX1_BIT; + case GL_AUX2: + return DD_AUX2_BIT; + case GL_AUX3: + return DD_AUX3_BIT; + default: + /* error */ + return ~0; + } +} + + +/** + * Helper routine used by glReadBuffer. + * Given a GLenum naming (a) color buffer(s), return the corresponding + * bitmask of DD_* flags. + */ +static GLuint +read_buffer_enum_to_bitmask(GLenum buffer) +{ + switch (buffer) { + case GL_FRONT: + return DD_FRONT_LEFT_BIT; + case GL_BACK: + return DD_BACK_LEFT_BIT; + case GL_RIGHT: + return DD_FRONT_RIGHT_BIT; + case GL_FRONT_RIGHT: + return DD_FRONT_RIGHT_BIT; + case GL_BACK_RIGHT: + return DD_BACK_RIGHT_BIT; + case GL_BACK_LEFT: + return DD_BACK_LEFT_BIT; + case GL_LEFT: + return DD_FRONT_LEFT_BIT; + case GL_FRONT_LEFT: + return DD_FRONT_LEFT_BIT; + case GL_AUX0: + return DD_AUX0_BIT; + case GL_AUX1: + return DD_AUX1_BIT; + case GL_AUX2: + return DD_AUX2_BIT; + case GL_AUX3: + return DD_AUX3_BIT; + default: + /* error */ + return ~0; + } +} + + + /** * Specify which color buffers to draw into. * @@ -179,6 +294,7 @@ _mesa_Clear( GLbitfield mask ) void GLAPIENTRY _mesa_DrawBuffer( GLenum mode ) { + GLenum destMask, supportedMask; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); /* too complex... */ @@ -188,124 +304,22 @@ _mesa_DrawBuffer( GLenum mode ) /* * Do error checking and compute the _DrawDestMask bitfield. */ - switch (mode) { - case GL_FRONT: - /* never an error */ - if (ctx->Visual.stereoMode) - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_FRONT_RIGHT_BIT; - else - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT; - break; - case GL_BACK: - if (!ctx->Visual.doubleBufferMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK)"); - return; - } - if (ctx->Visual.stereoMode) - ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT | DD_BACK_RIGHT_BIT; - else - ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT; - break; - case GL_NONE: - /* never an error */ - ctx->Color._DrawDestMask = 0; - break; -#if _HAVE_FULL_GL - case GL_RIGHT: - if (!ctx->Visual.stereoMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_RIGHT)"); - return;} - if (ctx->Visual.doubleBufferMode) - ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT; - else - ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT; - break; - case GL_FRONT_RIGHT: - if (!ctx->Visual.stereoMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_FRONT_RIGHT)"); - return; - } - ctx->Color._DrawDestMask = DD_FRONT_RIGHT_BIT; - break; - case GL_BACK_RIGHT: - if (!ctx->Visual.stereoMode || !ctx->Visual.doubleBufferMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK_RIGHT)"); - return; - } - ctx->Color._DrawDestMask = DD_BACK_RIGHT_BIT; - break; - case GL_BACK_LEFT: - if (!ctx->Visual.doubleBufferMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_BACK_LEFT)"); - return; - } - ctx->Color._DrawDestMask = DD_BACK_LEFT_BIT; - break; - case GL_FRONT_AND_BACK: - if (!ctx->Visual.doubleBufferMode) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_FRONT_AND_BACK)"); - return; - } - if (ctx->Visual.stereoMode) - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT - | DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT; - else - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT; - break; - case GL_LEFT: - /* never an error */ - if (ctx->Visual.doubleBufferMode) - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT; - else - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT; - break; - case GL_FRONT_LEFT: - /* never an error */ - ctx->Color._DrawDestMask = DD_FRONT_LEFT_BIT; - break; - case GL_AUX0: - if (ctx->Visual.numAuxBuffers >= 1) { - ctx->Color._DrawDestMask = DD_AUX0_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX0)" ); - return; - } - break; - case GL_AUX1: - if (ctx->Visual.numAuxBuffers >= 2) { - ctx->Color._DrawDestMask = DD_AUX1_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX1)" ); - return; - } - break; - case GL_AUX2: - if (ctx->Visual.numAuxBuffers >= 3) { - ctx->Color._DrawDestMask = DD_AUX2_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX2)" ); - return; - } - break; - case GL_AUX3: - if (ctx->Visual.numAuxBuffers >= 4) { - ctx->Color._DrawDestMask = DD_AUX3_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer(GL_AUX3)" ); - return; - } - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" ); - return; + destMask = draw_buffer_enum_to_bitmask(mode); + if (destMask == ~0) { + _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffer(mode)"); + return; + } + + supportedMask = supported_buffer_bitmask(ctx); + destMask &= supportedMask; + + if (destMask == 0) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawBuffer(mode)"); + return; } - ctx->Color.DrawBuffer = mode; + ctx->Color.DrawBuffer[0] = mode; + ctx->Color._DrawDestMask[0] = destMask; ctx->NewState |= _NEW_COLOR; /* @@ -317,6 +331,60 @@ _mesa_DrawBuffer( GLenum mode ) /** + * Called by glDrawBuffersARB; specifies the destination color buffers + * for N fragment program color outputs. + */ +void GLAPIENTRY +_mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers) +{ + GLint i; + GLuint usedBufferMask, supportedMask; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); + + if (n < 1 || n > ctx->Const.MaxDrawBuffers) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDrawBuffersARB(n)" ); + return; + } + + supportedMask = supported_buffer_bitmask(ctx); + usedBufferMask = 0; + for (i = 0; i < n; i++) { + GLuint destMask = draw_buffer_enum_to_bitmask(buffers[i]); + if (destMask == ~0) { + _mesa_error(ctx, GL_INVALID_ENUM, "glDrawBuffersARB(buffer)"); + return; + } + destMask &= supportedMask; + if (destMask == 0) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glDrawBuffersARB(unsupported buffer)"); + return; + } + if (destMask & usedBufferMask) { + /* can't use a dest buffer more than once! */ + _mesa_error(ctx, GL_INVALID_OPERATION, + "glDrawBuffersARB(duplicated buffer)"); + return; + } + /* update bitmask */ + usedBufferMask |= destMask; + /* save state */ + ctx->Color.DrawBuffer[i] = buffers[i]; + ctx->Color._DrawDestMask[i] = destMask; + } + + ctx->NewState |= _NEW_COLOR; + + /* + * Call device driver function. + */ + if (ctx->Driver.DrawBuffers) + (*ctx->Driver.DrawBuffers)(ctx, n, buffers); +} + + +/** * Set the color buffer source for reading pixels. * * \param mode color buffer. @@ -330,89 +398,24 @@ _mesa_DrawBuffer( GLenum mode ) void GLAPIENTRY _mesa_ReadBuffer( GLenum mode ) { + GLuint srcMask, supportedMask; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glReadBuffer %s\n", _mesa_lookup_enum_by_nr(mode)); - /* - * Do error checking and compute ctx->Pixel._ReadSrcMask. - */ - switch (mode) { - case GL_LEFT: - case GL_FRONT: - case GL_FRONT_LEFT: - /* Front-Left buffer, always exists */ - ctx->Pixel._ReadSrcMask = DD_FRONT_LEFT_BIT; - break; - case GL_BACK: - case GL_BACK_LEFT: - /* Back-Left buffer, requires double buffering */ - if (!ctx->Visual.doubleBufferMode) { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" ); - return; - } - ctx->Pixel._ReadSrcMask = DD_BACK_LEFT_BIT; - break; -#if _HAVE_FULL_GL - case GL_FRONT_RIGHT: - case GL_RIGHT: - if (!ctx->Visual.stereoMode) { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" ); - return; - } - ctx->Pixel._ReadSrcMask = DD_FRONT_RIGHT_BIT; - break; - case GL_BACK_RIGHT: - if (!ctx->Visual.stereoMode || !ctx->Visual.doubleBufferMode) { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" ); - return; - } - ctx->Pixel._ReadSrcMask = DD_BACK_RIGHT_BIT; - break; - case GL_AUX0: - if (ctx->Visual.numAuxBuffers >= 1) { - ctx->Pixel._ReadSrcMask = DD_AUX0_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX0)" ); - return; - } - break; - case GL_AUX1: - if (ctx->Visual.numAuxBuffers >= 2) { - ctx->Pixel._ReadSrcMask = DD_AUX1_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX1)" ); - return; - } - break; - case GL_AUX2: - if (ctx->Visual.numAuxBuffers >= 3) { - ctx->Pixel._ReadSrcMask = DD_AUX2_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX2)" ); - return; - } - break; - case GL_AUX3: - if (ctx->Visual.numAuxBuffers >= 4) { - ctx->Pixel._ReadSrcMask = DD_AUX3_BIT; - } - else { - _mesa_error( ctx, GL_INVALID_OPERATION, "glReadBuffer(GL_AUX3)" ); - return; - } - break; -#endif - default: - _mesa_error( ctx, GL_INVALID_ENUM, "glReadBuffer" ); - return; + srcMask = read_buffer_enum_to_bitmask(mode); + if (srcMask == ~0) { + _mesa_error(ctx, GL_INVALID_ENUM, "glReadBuffer(mode)"); + return; } - + supportedMask = supported_buffer_bitmask(ctx); + if ((srcMask & supportedMask) == 0) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glReadBuffer(mode)"); + return; + } + ctx->Pixel._ReadSrcMask = srcMask; ctx->Pixel.ReadBuffer = mode; ctx->NewState |= _NEW_PIXEL; @@ -423,6 +426,7 @@ _mesa_ReadBuffer( GLenum mode ) (*ctx->Driver.ReadBuffer)(ctx, mode); } + #if _HAVE_FULL_GL /** @@ -485,6 +489,7 @@ _mesa_ResizeBuffersMESA( void ) } } + /* * XXX move somewhere else someday? */ @@ -550,6 +555,8 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) ctx->Driver.Scissor( ctx, x, y, width, height ); } + + /**********************************************************************/ /** \name State management */ /*@{*/ diff --git a/src/mesa/main/buffers.h b/src/mesa/main/buffers.h index 83e1b48251..f9369864b6 100644 --- a/src/mesa/main/buffers.h +++ b/src/mesa/main/buffers.h @@ -50,6 +50,9 @@ extern void GLAPIENTRY _mesa_DrawBuffer( GLenum mode ); extern void GLAPIENTRY +_mesa_DrawBuffersARB(GLsizei n, const GLenum *buffers); + +extern void GLAPIENTRY _mesa_ReadBuffer( GLenum mode ); extern void GLAPIENTRY diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index 496997b957..bc9202eaed 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -202,6 +202,13 @@ /*@}*/ +/** For GL_ARB_draw_buffers */ +/*@{*/ +#define MAX_DRAW_BUFFERS 1 +/*@}*/ + + + /** * \name Mesa-specific parameters */ @@ -283,4 +290,12 @@ /*@}*/ +/** + * Maximum number of temporary vertices required for clipping. + * + * Used in array_cache and tnl modules. + */ +#define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1) + + #endif /* CONFIG_H */ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 96c436971b..44e3fcb9ad 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1050,7 +1050,7 @@ _mesa_init_constants( GLcontext *ctx ) assert(MAX_TEXTURE_LEVELS >= MAX_3D_TEXTURE_LEVELS); assert(MAX_TEXTURE_LEVELS >= MAX_CUBE_TEXTURE_LEVELS); - /* Constants, may be overriden by device drivers */ + /* Constants, may be overriden (usually only reduced) by device drivers */ ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS; ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS; ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS; @@ -1077,8 +1077,10 @@ _mesa_init_constants( GLcontext *ctx ) ctx->Const.MaxConvolutionHeight = MAX_CONVOLUTION_HEIGHT; ctx->Const.MaxClipPlanes = MAX_CLIP_PLANES; ctx->Const.MaxLights = MAX_LIGHTS; - ctx->Const.MaxSpotExponent = 128.0; ctx->Const.MaxShininess = 128.0; + ctx->Const.MaxSpotExponent = 128.0; + ctx->Const.MaxViewportWidth = MAX_WIDTH; + ctx->Const.MaxViewportHeight = MAX_HEIGHT; #if FEATURE_ARB_vertex_program ctx->Const.MaxVertexProgramInstructions = MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS; ctx->Const.MaxVertexProgramAttribs = MAX_NV_VERTEX_PROGRAM_INPUTS; @@ -1110,6 +1112,9 @@ _mesa_init_constants( GLcontext *ctx ) ctx->Const.CheckArrayBounds = GL_FALSE; #endif + ctx->Const.MaxDrawBuffers = MAX_DRAW_BUFFERS; + + /* sanity checks */ ASSERT(ctx->Const.MaxTextureUnits == MAX2(ctx->Const.MaxTextureImageUnits, ctx->Const.MaxTextureCoordUnits)); } diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index e314fd8fa1..68e6273a67 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -615,6 +615,8 @@ struct dd_function_table { void (*DepthRange)(GLcontext *ctx, GLclampd nearval, GLclampd farval); /** Specify the current buffer for writing */ void (*DrawBuffer)( GLcontext *ctx, GLenum buffer ); + /** Specify the buffers for writing for fragment programs*/ + void (*DrawBuffers)( GLcontext *ctx, GLsizei n, const GLenum *buffers ); /** Enable or disable server-side gl capabilities */ void (*Enable)(GLcontext *ctx, GLenum cap, GLboolean state); /** Specify fog parameters */ diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index ebf3af326a..ef2dada710 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -314,6 +314,8 @@ typedef enum { /* GL_ARB_occlusion_query */ OPCODE_BEGIN_QUERY_ARB, OPCODE_END_QUERY_ARB, + /* GL_ARB_draw_buffers */ + OPCODE_DRAW_BUFFERS_ARB, /* Vertex attributes -- fallback for when optimized display * list build isn't active. @@ -782,6 +784,7 @@ _mesa_init_lists( void ) InstSize[OPCODE_BEGIN_QUERY_ARB] = 3; InstSize[OPCODE_END_QUERY_ARB] = 2; #endif + InstSize[OPCODE_DRAW_BUFFERS_ARB] = 2 + MAX_DRAW_BUFFERS; InstSize[OPCODE_ATTR_1F] = 3; InstSize[OPCODE_ATTR_2F] = 4; InstSize[OPCODE_ATTR_3F] = 5; @@ -4683,6 +4686,27 @@ save_EndQueryARB(GLenum target) #endif /* FEATURE_ARB_occlusion_query */ +static void GLAPIENTRY +save_DrawBuffersARB(GLsizei count, const GLenum *buffers) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = ALLOC_INSTRUCTION( ctx, OPCODE_DRAW_BUFFERS_ARB, 1 + MAX_DRAW_BUFFERS ); + if (n) { + GLint i; + n[1].i = count; + if (count > MAX_DRAW_BUFFERS) + count = MAX_DRAW_BUFFERS; + for (i = 0; i < count; i++) { + n[2 + i].e = buffers[i]; + } + } + if (ctx->ExecuteFlag) { + (*ctx->Exec->DrawBuffersARB)(count, buffers); + } +} + static void save_Attr1f( GLenum attr, GLfloat x ) { @@ -6043,6 +6067,15 @@ execute_list( GLcontext *ctx, GLuint list ) ctx->Exec->EndQueryARB(n[1].e); break; #endif + case OPCODE_DRAW_BUFFERS_ARB: + { + GLenum buffers[MAX_DRAW_BUFFERS]; + GLint i, count = MIN2(n[1].i, MAX_DRAW_BUFFERS); + for (i = 0; i < count; i++) + buffers[i] = n[2 + i].e; + ctx->Exec->DrawBuffersARB(n[1].i, buffers); + } + break; case OPCODE_ATTR_1F: (*ctx->Exec->VertexAttrib1fNV)(n[1].e, n[2].f); break; @@ -7635,6 +7668,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize ) table->GetQueryObjectivARB = _mesa_GetQueryObjectivARB; table->GetQueryObjectuivARB = _mesa_GetQueryObjectuivARB; #endif + table->DrawBuffersARB = save_DrawBuffersARB; /* 299. GL_EXT_blend_equation_separate */ table->BlendEquationSeparateEXT = save_BlendEquationSeparateEXT; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index efdee0c67d..a8003116fa 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.2 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -45,6 +45,7 @@ static const struct { int flag_offset; } default_extensions[] = { { OFF, "GL_ARB_depth_texture", F(ARB_depth_texture) }, + { OFF, "GL_ARB_draw_buffers", F(ARB_draw_buffers) }, { OFF, "GL_ARB_fragment_program", F(ARB_fragment_program) }, { OFF, "GL_MESAX_half_float_pixel", F(ARB_half_float_pixel) }, { OFF, "GL_ARB_imaging", F(ARB_imaging) }, @@ -166,6 +167,7 @@ void _mesa_enable_sw_extensions(GLcontext *ctx) { ctx->Extensions.ARB_depth_texture = GL_TRUE; + ctx->Extensions.ARB_draw_buffers = GL_TRUE; #if FEATURE_ARB_fragment_program ctx->Extensions.ARB_fragment_program = GL_TRUE; #endif @@ -331,6 +333,22 @@ _mesa_enable_1_5_extensions(GLcontext *ctx) /** + * Enable all OpenGL 2.0 features and extensions. + * A convenience function to be called by drivers. + */ +void +_mesa_enable_2_0_extensions(GLcontext *ctx) +{ + ctx->Extensions.ARB_draw_buffers = GL_TRUE; + ctx->Extensions.ARB_point_sprite = GL_TRUE; + ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE; + ctx->Extensions.EXT_stencil_two_side = GL_TRUE; + /* Also, shading language */ +} + + + +/** * Either enable or disable the named extension. */ static void diff --git a/src/mesa/main/extensions.h b/src/mesa/main/extensions.h index 54aa25511b..9d843a8b6b 100644 --- a/src/mesa/main/extensions.h +++ b/src/mesa/main/extensions.h @@ -10,9 +10,9 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.3 * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -50,6 +50,8 @@ extern void _mesa_enable_1_4_extensions(GLcontext *ctx); extern void _mesa_enable_1_5_extensions(GLcontext *ctx); +extern void _mesa_enable_2_0_extensions(GLcontext *ctx); + extern void _mesa_enable_extension(GLcontext *ctx, const char *name); extern void _mesa_disable_extension(GLcontext *ctx, const char *name); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 98ab70eb4d..6eac604ea5 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -5,7 +5,7 @@ /* * Mesa 3-D graphics library - * Version: 6.2 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -380,7 +380,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) *params = ctx->Visual.doubleBufferMode; break; case GL_DRAW_BUFFER: - *params = ENUM_TO_BOOL(ctx->Color.DrawBuffer); + *params = ENUM_TO_BOOL(ctx->Color.DrawBuffer[0]); break; case GL_EDGE_FLAG: FLUSH_CURRENT(ctx, 0); @@ -1691,6 +1691,38 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params ) break; #endif + case GL_MAX_DRAW_BUFFERS_ARB: + CHECK_EXTENSION_B(ARB_draw_buffers, pname); + *params = INT_TO_BOOL(ctx->Const.MaxDrawBuffers); + break; + case GL_DRAW_BUFFER0_ARB: + case GL_DRAW_BUFFER1_ARB: + case GL_DRAW_BUFFER2_ARB: + case GL_DRAW_BUFFER3_ARB: + case GL_DRAW_BUFFER4_ARB: + case GL_DRAW_BUFFER5_ARB: + case GL_DRAW_BUFFER6_ARB: + case GL_DRAW_BUFFER7_ARB: + case GL_DRAW_BUFFER8_ARB: + case GL_DRAW_BUFFER9_ARB: + case GL_DRAW_BUFFER10_ARB: + case GL_DRAW_BUFFER11_ARB: + case GL_DRAW_BUFFER12_ARB: + case GL_DRAW_BUFFER13_ARB: + case GL_DRAW_BUFFER14_ARB: + case GL_DRAW_BUFFER15_ARB: + CHECK_EXTENSION_B(ARB_draw_buffers, pname); + { + GLuint i = pname - GL_DRAW_BUFFER0_ARB; + if (i >= ctx->Const.MaxDrawBuffers) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetBooleanv(GL_DRAW_BUFFERx_ARB)"); + return; + } + *params = INT_TO_BOOL(ctx->Color.DrawBuffer[i]); + } + break; + default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname); } @@ -1947,7 +1979,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params ) *params = (GLdouble) ctx->Visual.doubleBufferMode; break; case GL_DRAW_BUFFER: - *params = ENUM_TO_DOUBLE(ctx->Color.DrawBuffer); + *params = ENUM_TO_DOUBLE(ctx->Color.DrawBuffer[0]); break; case GL_EDGE_FLAG: FLUSH_CURRENT(ctx, 0); @@ -3253,6 +3285,38 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params ) break; #endif + case GL_MAX_DRAW_BUFFERS_ARB: + CHECK_EXTENSION_D(ARB_draw_buffers, pname); + *params = (GLdouble) ctx->Const.MaxDrawBuffers; + break; + case GL_DRAW_BUFFER0_ARB: + case GL_DRAW_BUFFER1_ARB: + case GL_DRAW_BUFFER2_ARB: + case GL_DRAW_BUFFER3_ARB: + case GL_DRAW_BUFFER4_ARB: + case GL_DRAW_BUFFER5_ARB: + case GL_DRAW_BUFFER6_ARB: + case GL_DRAW_BUFFER7_ARB: + case GL_DRAW_BUFFER8_ARB: + case GL_DRAW_BUFFER9_ARB: + case GL_DRAW_BUFFER10_ARB: + case GL_DRAW_BUFFER11_ARB: + case GL_DRAW_BUFFER12_ARB: + case GL_DRAW_BUFFER13_ARB: + case GL_DRAW_BUFFER14_ARB: + case GL_DRAW_BUFFER15_ARB: + CHECK_EXTENSION_D(ARB_draw_buffers, pname); + { + GLuint i = pname - GL_DRAW_BUFFER0_ARB; + if (i >= ctx->Const.MaxDrawBuffers) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetDoublev(GL_DRAW_BUFFERx_ARB)"); + return; + } + *params = (GLdouble) ctx->Color.DrawBuffer[i]; + } + break; + default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev(pname=0x%x)", pname); } @@ -3509,7 +3573,7 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) *params = (GLfloat) ctx->Visual.doubleBufferMode; break; case GL_DRAW_BUFFER: - *params = ENUM_TO_FLOAT(ctx->Color.DrawBuffer); + *params = ENUM_TO_FLOAT(ctx->Color.DrawBuffer[0]); break; case GL_EDGE_FLAG: FLUSH_CURRENT(ctx, 0); @@ -4791,6 +4855,38 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ) break; #endif + case GL_MAX_DRAW_BUFFERS_ARB: + CHECK_EXTENSION_F(ARB_draw_buffers, pname); + *params = (GLfloat) ctx->Const.MaxDrawBuffers; + break; + case GL_DRAW_BUFFER0_ARB: + case GL_DRAW_BUFFER1_ARB: + case GL_DRAW_BUFFER2_ARB: + case GL_DRAW_BUFFER3_ARB: + case GL_DRAW_BUFFER4_ARB: + case GL_DRAW_BUFFER5_ARB: + case GL_DRAW_BUFFER6_ARB: + case GL_DRAW_BUFFER7_ARB: + case GL_DRAW_BUFFER8_ARB: + case GL_DRAW_BUFFER9_ARB: + case GL_DRAW_BUFFER10_ARB: + case GL_DRAW_BUFFER11_ARB: + case GL_DRAW_BUFFER12_ARB: + case GL_DRAW_BUFFER13_ARB: + case GL_DRAW_BUFFER14_ARB: + case GL_DRAW_BUFFER15_ARB: + CHECK_EXTENSION_F(ARB_draw_buffers, pname); + { + GLuint i = pname - GL_DRAW_BUFFER0_ARB; + if (i >= ctx->Const.MaxDrawBuffers) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetFloatv(GL_DRAW_BUFFERx_ARB)"); + return; + } + *params = (GLfloat) ctx->Color.DrawBuffer[i]; + } + break; + default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(0x%x)", pname); } @@ -5048,7 +5144,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) *params = (GLint) ctx->Visual.doubleBufferMode; break; case GL_DRAW_BUFFER: - *params = (GLint) ctx->Color.DrawBuffer; + *params = (GLint) ctx->Color.DrawBuffer[0]; break; case GL_EDGE_FLAG: FLUSH_CURRENT(ctx, 0); @@ -6367,6 +6463,38 @@ _mesa_GetIntegerv( GLenum pname, GLint *params ) break; #endif + case GL_MAX_DRAW_BUFFERS_ARB: + CHECK_EXTENSION_I(ARB_draw_buffers, pname); + *params = ctx->Const.MaxDrawBuffers; + break; + case GL_DRAW_BUFFER0_ARB: + case GL_DRAW_BUFFER1_ARB: + case GL_DRAW_BUFFER2_ARB: + case GL_DRAW_BUFFER3_ARB: + case GL_DRAW_BUFFER4_ARB: + case GL_DRAW_BUFFER5_ARB: + case GL_DRAW_BUFFER6_ARB: + case GL_DRAW_BUFFER7_ARB: + case GL_DRAW_BUFFER8_ARB: + case GL_DRAW_BUFFER9_ARB: + case GL_DRAW_BUFFER10_ARB: + case GL_DRAW_BUFFER11_ARB: + case GL_DRAW_BUFFER12_ARB: + case GL_DRAW_BUFFER13_ARB: + case GL_DRAW_BUFFER14_ARB: + case GL_DRAW_BUFFER15_ARB: + CHECK_EXTENSION_I(ARB_draw_buffers, pname); + { + GLuint i = pname - GL_DRAW_BUFFER0_ARB; + if (i >= ctx->Const.MaxDrawBuffers) { + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetIntegerv(GL_DRAW_BUFFERx_ARB)"); + return; + } + *params = (GLint) ctx->Color.DrawBuffer[i]; + } + break; + default: _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname); } @@ -6489,6 +6617,7 @@ _mesa_GetString( GLenum name ) static const char *version_1_3 = "1.3 Mesa " MESA_VERSION_STRING; static const char *version_1_4 = "1.4 Mesa " MESA_VERSION_STRING; static const char *version_1_5 = "1.5 Mesa " MESA_VERSION_STRING; + static const char *version_2_0 = "1.5 Mesa " MESA_VERSION_STRING;/*XXX FIX*/ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); @@ -6533,7 +6662,15 @@ _mesa_GetString( GLenum name ) if (ctx->Extensions.ARB_occlusion_query && ctx->Extensions.ARB_vertex_buffer_object && ctx->Extensions.EXT_shadow_funcs) { - return (const GLubyte *) version_1_5; + if (ctx->Extensions.ARB_draw_buffers && + ctx->Extensions.ARB_point_sprite && + ctx->Extensions.ARB_texture_non_power_of_two && + ctx->Extensions.EXT_stencil_two_side) { + return (const GLubyte *) version_2_0; + } + else { + return (const GLubyte *) version_1_5; + } } else { return (const GLubyte *) version_1_4; diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h index 025b3a5857..3057770d09 100644 --- a/src/mesa/main/glheader.h +++ b/src/mesa/main/glheader.h @@ -246,10 +246,14 @@ typedef GLushort GLhalfARB; #endif /* XXX temporary hack - remove when glext.h is updated */ -#ifndef GL_POINT_SPRITE_COORD_ORIGIN -#define GL_POINT_SPRITE_COORD_ORIGIN 0x10000 -#define GL_LOWER_LEFT 0x10001 -#define GL_UPPER_LEFT 0x10002 +#ifndef GL_CURRENT_PROGRAM +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 #endif diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index be6882f203..07119a2fb6 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -7,7 +7,7 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -150,71 +150,89 @@ struct gl_texture_format; /** - * These define the aliases between numbered vertex attributes and - * conventional OpenGL vertex attributes. We use these values in - * quite a few places. - * - * New in Mesa 4.1. + * Indexes for vertex program attributes. + * GL_NV_vertex_program aliases generic attributes over the conventional + * attributes. In GL_ARB_vertex_program shader the aliasing is optional. + * In GL_ARB_vertex_shader / OpenGL 2.0 the aliasing is disallowed (the + * generic attributes are distinct/separate). */ enum { - VERT_ATTRIB_POS = 0, - VERT_ATTRIB_WEIGHT = 1, - VERT_ATTRIB_NORMAL = 2, - VERT_ATTRIB_COLOR0 = 3, - VERT_ATTRIB_COLOR1 = 4, - VERT_ATTRIB_FOG = 5, - VERT_ATTRIB_SIX = 6, - VERT_ATTRIB_SEVEN = 7, - VERT_ATTRIB_TEX0 = 8, - VERT_ATTRIB_TEX1 = 9, - VERT_ATTRIB_TEX2 = 10, - VERT_ATTRIB_TEX3 = 11, - VERT_ATTRIB_TEX4 = 12, - VERT_ATTRIB_TEX5 = 13, - VERT_ATTRIB_TEX6 = 14, - VERT_ATTRIB_TEX7 = 15, - VERT_ATTRIB_MAX = 16 -} ; - -/* These are used in bitfields in many places */ -#define VERT_BIT_POS (1 << VERT_ATTRIB_POS) -#define VERT_BIT_WEIGHT (1 << VERT_ATTRIB_WEIGHT) -#define VERT_BIT_NORMAL (1 << VERT_ATTRIB_NORMAL) -#define VERT_BIT_COLOR0 (1 << VERT_ATTRIB_COLOR0) -#define VERT_BIT_COLOR1 (1 << VERT_ATTRIB_COLOR1) -#define VERT_BIT_FOG (1 << VERT_ATTRIB_FOG) -#define VERT_BIT_SIX (1 << VERT_ATTRIB_SIX) -#define VERT_BIT_SEVEN (1 << VERT_ATTRIB_SEVEN) -#define VERT_BIT_TEX0 (1 << VERT_ATTRIB_TEX0) -#define VERT_BIT_TEX1 (1 << VERT_ATTRIB_TEX1) -#define VERT_BIT_TEX2 (1 << VERT_ATTRIB_TEX2) -#define VERT_BIT_TEX3 (1 << VERT_ATTRIB_TEX3) -#define VERT_BIT_TEX4 (1 << VERT_ATTRIB_TEX4) -#define VERT_BIT_TEX5 (1 << VERT_ATTRIB_TEX5) -#define VERT_BIT_TEX6 (1 << VERT_ATTRIB_TEX6) -#define VERT_BIT_TEX7 (1 << VERT_ATTRIB_TEX7) + VERT_ATTRIB_POS = 0, + VERT_ATTRIB_WEIGHT = 1, + VERT_ATTRIB_NORMAL = 2, + VERT_ATTRIB_COLOR0 = 3, + VERT_ATTRIB_COLOR1 = 4, + VERT_ATTRIB_FOG = 5, + VERT_ATTRIB_SIX = 6, + VERT_ATTRIB_SEVEN = 7, + VERT_ATTRIB_TEX0 = 8, + VERT_ATTRIB_TEX1 = 9, + VERT_ATTRIB_TEX2 = 10, + VERT_ATTRIB_TEX3 = 11, + VERT_ATTRIB_TEX4 = 12, + VERT_ATTRIB_TEX5 = 13, + VERT_ATTRIB_TEX6 = 14, + VERT_ATTRIB_TEX7 = 15, + VERT_ATTRIB_GENERIC0 = 16, + VERT_ATTRIB_GENERIC1 = 17, + VERT_ATTRIB_GENERIC2 = 18, + VERT_ATTRIB_GENERIC3 = 19, + VERT_ATTRIB_MAX = 16 +}; + +/** + * Bitflags for vertex attributes. + * These are used in bitfields in many places. + */ +/*@{*/ +#define VERT_BIT_POS (1 << VERT_ATTRIB_POS) +#define VERT_BIT_WEIGHT (1 << VERT_ATTRIB_WEIGHT) +#define VERT_BIT_NORMAL (1 << VERT_ATTRIB_NORMAL) +#define VERT_BIT_COLOR0 (1 << VERT_ATTRIB_COLOR0) +#define VERT_BIT_COLOR1 (1 << VERT_ATTRIB_COLOR1) +#define VERT_BIT_FOG (1 << VERT_ATTRIB_FOG) +#define VERT_BIT_SIX (1 << VERT_ATTRIB_SIX) +#define VERT_BIT_SEVEN (1 << VERT_ATTRIB_SEVEN) +#define VERT_BIT_TEX0 (1 << VERT_ATTRIB_TEX0) +#define VERT_BIT_TEX1 (1 << VERT_ATTRIB_TEX1) +#define VERT_BIT_TEX2 (1 << VERT_ATTRIB_TEX2) +#define VERT_BIT_TEX3 (1 << VERT_ATTRIB_TEX3) +#define VERT_BIT_TEX4 (1 << VERT_ATTRIB_TEX4) +#define VERT_BIT_TEX5 (1 << VERT_ATTRIB_TEX5) +#define VERT_BIT_TEX6 (1 << VERT_ATTRIB_TEX6) +#define VERT_BIT_TEX7 (1 << VERT_ATTRIB_TEX7) +#define VERT_BIT_GENERIC0 (1 << VERT_ATTRIB_GENERIC0) +#define VERT_BIT_GENERIC1 (1 << VERT_ATTRIB_GENERIC1) +#define VERT_BIT_GENERIC2 (1 << VERT_ATTRIB_GENERIC2) +#define VERT_BIT_GENERIC3 (1 << VERT_ATTRIB_GENERIC3) #define VERT_BIT_TEX(u) (1 << (VERT_ATTRIB_TEX0 + (u))) +#define VERT_BIT_GENERIC(g) (1 << (VERT_ATTRIB_GENERIC0 + (g))) +/*@}*/ -/* Fragment programs use a different but related set of attributes: +/** + * Indexes for fragment program input attributes. */ +enum { + FRAG_ATTRIB_WPOS = 0, + FRAG_ATTRIB_COL0 = 1, + FRAG_ATTRIB_COL1 = 2, + FRAG_ATTRIB_FOGC = 3, + FRAG_ATTRIB_TEX0 = 4, + FRAG_ATTRIB_TEX1 = 5, + FRAG_ATTRIB_TEX2 = 6, + FRAG_ATTRIB_TEX3 = 7, + FRAG_ATTRIB_TEX4 = 8, + FRAG_ATTRIB_TEX5 = 9, + FRAG_ATTRIB_TEX6 = 10, + FRAG_ATTRIB_TEX7 = 11 +}; -/* Fragment input registers / attributes */ -#define FRAG_ATTRIB_WPOS 0 -#define FRAG_ATTRIB_COL0 1 -#define FRAG_ATTRIB_COL1 2 -#define FRAG_ATTRIB_FOGC 3 -#define FRAG_ATTRIB_TEX0 4 -#define FRAG_ATTRIB_TEX1 5 -#define FRAG_ATTRIB_TEX2 6 -#define FRAG_ATTRIB_TEX3 7 -#define FRAG_ATTRIB_TEX4 8 -#define FRAG_ATTRIB_TEX5 9 -#define FRAG_ATTRIB_TEX6 10 -#define FRAG_ATTRIB_TEX7 11 - -/* Bitmasks for the above */ +/* + * Bitflags for fragment attributes. + */ +/*@{*/ #define FRAG_BIT_WPOS (1 << FRAG_ATTRIB_WPOS) #define FRAG_BIT_COL0 (1 << FRAG_ATTRIB_COL0) #define FRAG_BIT_COL1 (1 << FRAG_ATTRIB_COL1) @@ -236,6 +254,7 @@ enum { FRAG_BIT_TEX5| \ FRAG_BIT_TEX6| \ FRAG_BIT_TEX7) +/*@}*/ /** @@ -261,14 +280,6 @@ enum { /** - * Maximum number of temporary vertices required for clipping. - * - * Used in array_cache and tnl modules. - */ -#define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1) - - -/** * Data structure for color tables */ struct gl_color_table { @@ -433,7 +444,7 @@ struct gl_accum_attrib { /** - * Color buffers attributes. + * Color buffer attributes. */ struct gl_colorbuffer_attrib { GLuint ClearIndex; /**< Index to use for glClear */ @@ -442,8 +453,8 @@ struct gl_colorbuffer_attrib { GLuint IndexMask; /**< Color index write mask */ GLubyte ColorMask[4]; /**< Each flag is 0xff or 0x0 */ - GLenum DrawBuffer; /**< Which buffer to draw into */ - GLbitfield _DrawDestMask; /**< bitmask of DD_*_BIT bits */ + GLenum DrawBuffer[MAX_DRAW_BUFFERS]; /**< Which buffer to draw into */ + GLbitfield _DrawDestMask[MAX_DRAW_BUFFERS];/**< bitmask of DD_*_BIT bits */ /** * \name alpha testing @@ -698,6 +709,9 @@ struct gl_histogram_attrib { }; +/** + * Color Min/max state. + */ struct gl_minmax_attrib { GLenum Format; GLboolean Sink; @@ -705,6 +719,9 @@ struct gl_minmax_attrib { }; +/** + * Image convolution state. + */ struct gl_convolution_attrib { GLenum Format; GLenum InternalFormat; @@ -714,10 +731,16 @@ struct gl_convolution_attrib { }; +/** + * Light state flags. + */ +/*@{*/ #define LIGHT_SPOT 0x1 #define LIGHT_LOCAL_VIEWER 0x2 #define LIGHT_POSITIONAL 0x4 #define LIGHT_NEED_VERTICES (LIGHT_POSITIONAL|LIGHT_LOCAL_VIEWER) +/*@}*/ + /** * Lighting attributes. @@ -767,6 +790,9 @@ struct gl_line_attrib { }; +/** + * Display list state. + */ struct gl_list_attrib { GLuint ListBase; }; @@ -787,6 +813,9 @@ struct gl_list_extensions { }; +/** + * Multisample state + */ struct gl_multisample_attrib { GLboolean Enabled; GLboolean SampleAlphaToCoverage; @@ -944,27 +973,45 @@ struct gl_stencil_attrib { #define NUM_TEXTURE_TARGETS 5 /* 1D, 2D, 3D, CUBE and RECT */ +/** + * An index for each type of texture object + */ +/*@{*/ #define TEXTURE_1D_INDEX 0 #define TEXTURE_2D_INDEX 1 #define TEXTURE_3D_INDEX 2 #define TEXTURE_CUBE_INDEX 3 #define TEXTURE_RECT_INDEX 4 +/*@}*/ -/* Texture.Unit[]._ReallyEnabled flags: */ +/** + * Bit flags for each type of texture object + * Used for Texture.Unit[]._ReallyEnabled flags. + */ +/*@{*/ #define TEXTURE_1D_BIT (1 << TEXTURE_1D_INDEX) #define TEXTURE_2D_BIT (1 << TEXTURE_2D_INDEX) #define TEXTURE_3D_BIT (1 << TEXTURE_3D_INDEX) #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX) #define TEXTURE_RECT_BIT (1 << TEXTURE_RECT_INDEX) +/*@}*/ -/* TexGenEnabled flags */ +/** + * TexGenEnabled flags. + */ +/*@{*/ #define S_BIT 1 #define T_BIT 2 #define R_BIT 4 #define Q_BIT 8 +/*@}*/ + -/* Bitmap versions of the GL_ constants. */ +/** + * Bit flag versions of the corresponding GL_ constants. + */ +/*@{*/ #define TEXGEN_SPHERE_MAP 0x1 #define TEXGEN_OBJ_LINEAR 0x2 #define TEXGEN_EYE_LINEAR 0x4 @@ -978,6 +1025,8 @@ struct gl_stencil_attrib { TEXGEN_REFLECTION_MAP_NV | \ TEXGEN_NORMAL_MAP_NV | \ TEXGEN_EYE_LINEAR) +/*@}*/ + /* A selection of state flags to make driver and module's lives easier. */ #define ENABLE_TEXGEN0 0x1 @@ -1133,6 +1182,11 @@ struct gl_texture_image { /*@}*/ }; + +/** + * Indexes for cube map faces. + */ +/*@{*/ #define FACE_POS_X 0 #define FACE_NEG_X 1 #define FACE_POS_Y 2 @@ -1140,6 +1194,8 @@ struct gl_texture_image { #define FACE_POS_Z 4 #define FACE_NEG_Z 5 #define MAX_FACES 6 +/*@}*/ + /** * Texture object record @@ -1195,6 +1251,7 @@ struct gl_texture_object { /*@}*/ }; + /** * Texture combine environment state. * @@ -1215,6 +1272,7 @@ struct gl_tex_env_combine_state { GLuint _NumArgsA; /**< Number of inputs used for the combine mode. */ }; + /** * Texture unit record */ @@ -1414,7 +1472,7 @@ struct gl_client_array { /** - * Array attributes. + * Vertex array state */ struct gl_array_attrib { struct gl_client_array Vertex; /**< client data descriptors */ @@ -1444,6 +1502,9 @@ struct gl_array_attrib { }; +/** + * Feedback buffer state + */ struct gl_feedback { GLenum Type; GLuint _Mask; /* FB_* bits */ @@ -1454,7 +1515,7 @@ struct gl_feedback { /** - * Selection attributes. + * Selection buffer state */ struct gl_selection { GLuint *Buffer; /**< selection buffer */ @@ -1494,7 +1555,7 @@ struct gl_2d_map /** - * All evaluator control points + * All evaluator control point state */ struct gl_evaluators { @@ -1561,7 +1622,7 @@ enum register_file }; -/* Vertex and fragment instructions */ +/** Vertex and fragment instructions */ struct vp_instruction; struct fp_instruction; @@ -1633,7 +1694,7 @@ struct program_state { /** - * State vars for GL_NV_vertex_program + * State vars for GL_ARB/GL_NV_vertex_program */ struct vertex_program_state { @@ -1650,6 +1711,7 @@ struct vertex_program_state /* Only used during program execution (may be moved someday): */ GLfloat Temporaries[MAX_NV_VERTEX_PROGRAM_TEMPS][4]; GLfloat Inputs[MAX_NV_VERTEX_PROGRAM_INPUTS][4]; + GLuint InputsSize[MAX_NV_VERTEX_PROGRAM_INPUTS]; GLfloat Outputs[MAX_NV_VERTEX_PROGRAM_OUTPUTS][4]; GLint AddressReg[4]; @@ -1826,6 +1888,7 @@ struct gl_constants GLuint MaxLights; GLfloat MaxShininess; /* GL_NV_light_max_exponent */ GLfloat MaxSpotExponent; /* GL_NV_light_max_exponent */ + GLuint MaxViewportWidth, MaxViewportHeight; /* GL_ARB_vertex_program */ GLuint MaxVertexProgramInstructions; GLuint MaxVertexProgramAttribs; @@ -1848,6 +1911,8 @@ struct gl_constants GLuint MaxProgramMatrixStackDepth; /* vertex array / buffer object bounds checking */ GLboolean CheckArrayBounds; + /* GL_ARB_draw_buffers */ + GLuint MaxDrawBuffers; }; @@ -1864,6 +1929,7 @@ struct gl_extensions /*@{*/ GLboolean dummy; /* don't remove this! */ GLboolean ARB_depth_texture; + GLboolean ARB_draw_buffers; GLboolean ARB_fragment_program; GLboolean ARB_half_float_pixel; GLboolean ARB_imaging; diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 21e07e70d1..449e4631e7 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -724,6 +724,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize) exec->UnmapBufferARB = _mesa_UnmapBufferARB; #endif + /* ARB 29. GL_ARB_occlusion_query */ #if FEATURE_ARB_occlusion_query exec->GenQueriesARB = _mesa_GenQueriesARB; exec->DeleteQueriesARB = _mesa_DeleteQueriesARB; @@ -734,6 +735,9 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize) exec->GetQueryObjectivARB = _mesa_GetQueryObjectivARB; exec->GetQueryObjectuivARB = _mesa_GetQueryObjectuivARB; #endif + + /* ARB 37. GL_ARB_draw_buffers */ + exec->DrawBuffersARB = _mesa_DrawBuffersARB; } /*@}*/ diff --git a/src/mesa/swrast/s_alphabuf.c b/src/mesa/swrast/s_alphabuf.c index b563baf39a..736ff2d739 100644 --- a/src/mesa/swrast/s_alphabuf.c +++ b/src/mesa/swrast/s_alphabuf.c @@ -112,7 +112,7 @@ _swrast_clear_alpha_buffers( GLcontext *ctx ) /* loop over four possible alpha buffers */ for (bufferBit = 1; bufferBit <= 8; bufferBit = bufferBit << 1) { - if (bufferBit & ctx->Color._DrawDestMask) { + if (bufferBit & ctx->Color._DrawDestMask[0]) { GLchan *buffer; if (bufferBit == DD_FRONT_LEFT_BIT) { buffer = ctx->DrawBuffer->FrontLeftAlpha; diff --git a/src/mesa/swrast/s_buffers.c b/src/mesa/swrast/s_buffers.c index 26b4f902e1..d05c8dfbf9 100644 --- a/src/mesa/swrast/s_buffers.c +++ b/src/mesa/swrast/s_buffers.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -147,7 +147,7 @@ clear_color_buffers(GLcontext *ctx) /* loop over four possible dest color buffers */ for (bufferBit = 1; bufferBit <= DD_AUX3_BIT; bufferBit <<= 1) { - if (bufferBit & ctx->Color._DrawDestMask) { + if (bufferBit & ctx->Color._DrawDestMask[0]) { (*swrast->Driver.SetBuffer)(ctx, ctx->DrawBuffer, bufferBit); if (colorMask != 0xffffffff) { @@ -199,7 +199,7 @@ _swrast_Clear( GLcontext *ctx, GLbitfield mask, /* do software clearing here */ if (mask) { - if (mask & ctx->Color._DrawDestMask) { + if (mask & ctx->Color._DrawDestMask[0]) { clear_color_buffers(ctx); /* clear software-based alpha buffer(s) */ if (ctx->DrawBuffer->UseSoftwareAlphaBuffers @@ -261,6 +261,16 @@ _swrast_DrawBuffer( GLcontext *ctx, GLenum mode ) /* + * Fallback for ctx->Driver.DrawBuffers() + */ +void +_swrast_DrawBuffers( GLcontext *ctx, GLsizei n, const GLenum *buffers ) +{ + _swrast_use_draw_buffer(ctx); +} + + +/* * Setup things so that we read/write spans from the user-designated * read buffer (set via glReadPixels). We usually just have to call * this for glReadPixels, glCopyPixels, etc. @@ -297,21 +307,21 @@ _swrast_use_draw_buffer( GLcontext *ctx ) * we loop over multiple color buffers when needed. */ - if (ctx->Color._DrawDestMask & DD_FRONT_LEFT_BIT) + if (ctx->Color._DrawDestMask[0] & DD_FRONT_LEFT_BIT) swrast->CurrentBufferBit = DD_FRONT_LEFT_BIT; - else if (ctx->Color._DrawDestMask & DD_BACK_LEFT_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_BACK_LEFT_BIT) swrast->CurrentBufferBit = DD_BACK_LEFT_BIT; - else if (ctx->Color._DrawDestMask & DD_FRONT_RIGHT_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_FRONT_RIGHT_BIT) swrast->CurrentBufferBit = DD_FRONT_RIGHT_BIT; - else if (ctx->Color._DrawDestMask & DD_BACK_RIGHT_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_BACK_RIGHT_BIT) swrast->CurrentBufferBit = DD_BACK_RIGHT_BIT; - else if (ctx->Color._DrawDestMask & DD_AUX0_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_AUX0_BIT) swrast->CurrentBufferBit = DD_AUX0_BIT; - else if (ctx->Color._DrawDestMask & DD_AUX1_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_AUX1_BIT) swrast->CurrentBufferBit = DD_AUX1_BIT; - else if (ctx->Color._DrawDestMask & DD_AUX2_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_AUX2_BIT) swrast->CurrentBufferBit = DD_AUX2_BIT; - else if (ctx->Color._DrawDestMask & DD_AUX3_BIT) + else if (ctx->Color._DrawDestMask[0] & DD_AUX3_BIT) swrast->CurrentBufferBit = DD_AUX3_BIT; else /* glDrawBuffer(GL_NONE) */ diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index a678e0b55b..87d4bf8cdf 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -93,7 +93,7 @@ _swrast_update_rasterflags( GLcontext *ctx ) * MULTI_DRAW_BIT flag. Also set it if we're drawing to no * buffers or the RGBA or CI mask disables all writes. */ - if (_mesa_bitcount(ctx->Color._DrawDestMask) != 1) { + if (_mesa_bitcount(ctx->Color._DrawDestMask[0]) != 1) { /* more than one color buffer designated for writing (or zero buffers) */ rasterMask |= MULTI_DRAW_BIT; } diff --git a/src/mesa/swrast/s_copypix.c b/src/mesa/swrast/s_copypix.c index f715e5a626..bfcd9cb8f7 100644 --- a/src/mesa/swrast/s_copypix.c +++ b/src/mesa/swrast/s_copypix.c @@ -158,7 +158,7 @@ copy_conv_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy, } /* If read and draw buffer are different we must do buffer switching */ - changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer + changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0] || ctx->DrawBuffer != ctx->ReadBuffer; @@ -326,7 +326,7 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy, } /* If read and draw buffer are different we must do buffer switching */ - changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer + changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0] || ctx->DrawBuffer != ctx->ReadBuffer; if (overlapping) { @@ -466,7 +466,7 @@ copy_ci_pixels( GLcontext *ctx, GLint srcx, GLint srcy, _swrast_span_default_fog(ctx, &span); /* If read and draw buffer are different we must do buffer switching */ - changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer + changeBuffer = ctx->Pixel.ReadBuffer != ctx->Color.DrawBuffer[0] || ctx->DrawBuffer != ctx->ReadBuffer; if (overlapping) { diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index 46f59ef3c0..c4a86f141c 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -749,7 +749,7 @@ multi_write_index_span( GLcontext *ctx, struct sw_span *span ) /* loop over four possible dest color buffers */ for (bufferBit = 1; bufferBit <= 8; bufferBit <<= 1) { - if (bufferBit & ctx->Color._DrawDestMask) { + if (bufferBit & ctx->Color._DrawDestMask[0]) { GLuint indexTmp[MAX_WIDTH]; ASSERT(span->end < MAX_WIDTH); @@ -806,7 +806,7 @@ multi_write_rgba_span( GLcontext *ctx, struct sw_span *span ) /* loop over four possible dest color buffers */ for (bufferBit = 1; bufferBit <= 8; bufferBit <<= 1) { - if (bufferBit & ctx->Color._DrawDestMask) { + if (bufferBit & ctx->Color._DrawDestMask[0]) { GLchan rgbaTmp[MAX_WIDTH][4]; ASSERT(span->end < MAX_WIDTH); diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h index 7fb0d2a389..7d8cf8c7a8 100644 --- a/src/mesa/swrast/swrast.h +++ b/src/mesa/swrast/swrast.h @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.1 + * Version: 6.3 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -141,6 +141,10 @@ extern void _swrast_DrawBuffer( GLcontext *ctx, GLenum mode ); +extern void +_swrast_DrawBuffers( GLcontext *ctx, GLsizei n, const GLenum *buffers ); + + /* Reset the stipple counter */ extern void |